这是我参与「第三届青训营 -后端场」笔记创作活动的的第4篇笔记
未命名
这人很懒,什么都没有留下。
未命名
2022-06-19 01:13:58
48
{{single.collect_count}}

本次课程主题位设计模式之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()
}
回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}