先引入包:
go get -u gorm.io/gorm
go get -u gorm.io/driver/sqlite
连接数据库:
dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
数据库创建
result := db.Create(&user) // 通过数据的指针来创建
&后内容为想要存入数据库结构,同时结构中需要有gorm.Model 可以自动创建数据表格式
根据切片创建数据:
db.Model(&User{}).Create([]map[string]interface{}{
{"Name": "jinzhu_1", "Age": 18},
{"Name": "jinzhu_2", "Age": 20},
})
可设置对应值的默认值:
type User struct {
ID int64
Name string `gorm:"default:galeone"`
Age int64 `gorm:"default:18"`
}
查询数据:
获取全部记录使用Find
result := db.Find(&users)
result.RowsAffected 相当于返回的记录的个数
获取string条件:
db.Where("name = ?","wuhao").First(&user)
若是想增加查询条件在where后面继续点就可以增加条件,获取全部记录使用find
当需要判断该字段是否存在于表格中的时候:
db.Where("name IN ?", []string{"jinzhu", "jinzhu 2"}).Find(&users)
当需要进行模糊查询的时候:
db.Where("name like ?","%wu%").Find(&user)
当进行多个字段查询的时候:
db.where("name = ?","age >?","wuhao","18").Find(&user)
当查询结构体的时候:
db.Where(&User{Name: "jinzhu", Age: 20}).First(&user)
当查询map切片的时候:
db.Where(map[string]interface{}{"name": "jinzhu", "age": 20}).Find(&users)