GORM框架
扫描二维码
随时随地手机看文章
- 安装GORM库 go get -u gorm.io/gorm
- MySQL驱动 go get -u gorm.io/driver/mysql
- 连接数据库 dsn := "root:root@tcp(127.0.0.1:3306)/goadmin?charset=utf8mb4&parseTime=True&loc=Local"//goadmin为数据库名
- 定义模型以及基本操作:模型 通过 struct 定义模型 映射到数据库中的表 字段映射到列
- 自定义表名和列名
-
package main
import(
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
//自定义列名
type User struct{
ID uint `gorm:"primaryKey"`//uint系列/ int系列/int32
ServerIP string `gorm:"column:server_ip"`//映射到不同字段名--当前字段名与表的列名不一样时
ServerPort string `gorm:"column:server_port"`
}
//自定义表名
func (User)TableName() string{
return "user0"
}
func main(){
//建立数据库的连接
dsn := "ims:123456@tcp(192.168.0.26:3306)/ibcf?charset=utf8mb4&parseTime=True&loc=Local"
db,err := gorm.Open(mysql.Open(dsn),&gorm.Config{})//第二个参数为配置文件
if err != nil{
log.Fatal("数据库连接失败:",err)
}
fmt.Println("数据库连接成功!")
//创建一个User类型-user
user := User{
ID:2,
ServerIP:"192.168.0.26",
ServerPort:"8080"
}
db.Create(&user)//相当于INSERT
//读取
db.First(&user,1)//将读取到数据存到user中
//查询
db.Where("ServerIP = ?","192.168.0.26").First(&user,1)
//db.Where("ServerIP = ? AND ServerPort = ?").First(&user,1)
fmt.Println(db)
//修改
db.Model(&user).Updates(User{ServerIP:"192.168.0.2",ServerPort:"0000"})
db.Model(&user).Updates("ServerIP","100.0.0.0")//只修改一个字段
//按条件修改
db.Model(&User{}).Where("ServerPort = ?","9012").Update("ServerPort",db.Exec("ServerPort = ?","9013"))
//删除
db.Delete(&user,1)//按主键删除
db.Where("ServerPort = ?","0000").Delete(&User{})//根据条件删除
}