目录
一、构造环境
在终端中输入以下命令
1、gorm环境
go get gorm.io/gorm
2、mysql连接
go get gorm.io/driver/mysql
二、编写操作代码
3、创建连接函数
func connDB() *gorm.DB {
mysqlDB, err := gorm.Open(mysql.Open("账号:密码@tcp(localhost:3306)/cms_account?charset=utf8mb4&parseTime=True&loc=Local"))
if err != nil {
panic(err)
}
db, err := mysqlDB.DB()
if err != nil {
panic(err)
}
//最大连接数
db.SetMaxOpenConns(4)
//最大空闲连接,一般为最大连接数/2
db.SetMaxIdleConns(2)
mysqlDB = mysqlDB.Debug()
return mysqlDB
}
4、创建结构体
必须与account表字段与字段类型保持一致
type Account struct {
ID int64 `gorm:"column:id;primaryKey;autoIncrement:true"`
UserId string `gorm:"column:user_id"`
Password string `gorm:"column:password"`
Nickname string `gorm:"column:nickname"`
CreatedAt time.Time `gorm:"column:created_at"`
UpdatedAt time.Time `gorm:"column:updated_at"`
}
5、查询调用
func main() {
db := connDB()
var accounts []Account
if err := db.Table("account").Find(&accounts).Error; err != nil {
fmt.Println(err)
return
}
fmt.Println(accounts)
}
6、动态表名
动态表面的好处可以动态的获取表名进行灵活的查询,比如一些流水表的名字后面会加上日期的这里是改写了TableName方法,使用此方法后就删除.Table("account")调用
func (a Account) TableName() string {
table := "account"
return table
}
7、添加条件查询
func main() {
db := connDB()
var accounts []Account
if err := db.Where("id=?", 1).Find(&accounts).Error; err != nil {
fmt.Println(err)
}
fmt.Println(accounts)
}
9、分页查询
func main() {
db := connDB()
var accounts []Account
if err := db.Where("id=?", 1).Offset(0).Limit(10).Find(&accounts).Error; err != nil {
fmt.Println(err)
}
fmt.Println(accounts)
}