本次课程主题位设计模式之database。
数据库是我们后端开发的重中之重,一个性能良好的数据库对与我们整个系统的优化有很大的帮助。
后端应用程序与数据库进行连接,使用sql语句对数据库进行增删改查。 连接有以下几种类型:直接连接/conn,预编译/stmt,事务Tx。
gorm是一种设计简洁、功能强大,自由扩展的全功能ORM。 功能完善: 关联:一对一,一对多,单表自关联,多态。 事务:事务代码块,嵌套事务。 多数据库、读写分离、命名参数、map等 字段权限 软删除、批量数据处理等
grom相当于在后端程序和数据库之间又加了一层orm,orm提供接口,调用者调用接口,orm将其转化位sql,发送到数据库。
以下是我在做抖音项目是用到的一些关于orm的接口。
func InitDatabase() {
var err error
host := viper.GetString("mysql.host")
port := viper.GetString("mysql.port")
database := viper.GetString("mysql.database")
username := viper.GetString("mysql.username")
password := viper.GetString("mysql.password")
args := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=true",
username,
password,
host,
port,
database)
log.Info(args)
DataBase, err = gorm.Open("mysql", args)
if err != nil {
panic("failed to connect database ,err:" + err.Error())
}
log.Infof("connect database success,user:%s,database:%s", username, database)
}
func GetDB() *gorm.DB {
return DataBase
}
func CloseDataBase() {
DataBase.Close()
}