GORM是go语言的一个orm框架,是对开发人员友好的 Golang ORM 库,简化了ORM库的 *** 作。GORM解决了面向对象和关系数据库相互匹配的问题。
GORM目前只支持MySQL、PostgreSQL、Sqlite3数据库。
2.使用GORM 1).安装mysql驱动
go get -u github.com/go-sql-driver/mysql
(mysql驱动)
go get -u github.com/jinzhu/gorm
先导入驱动和gorm
import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
4).使用navicat创建t_user表
5).创建数据表对应的结构体
gorm.Model是GORM自带的模型,里面包含的字段有 ID,CreatedAt, UpdatedAt, DeletedAt字段
//用户结构体
type Users struct {
// 将字段 `ID`, `CreatedAt`, `UpdatedAt`, `DeletedAt` 注入到 `User` 模型中
//我这里没使用
//gorm.Model
Id int64 `db:"id"`
Username string `db:"username"`
Password string `db:"password"`
}
6).数据库连接
注意: 为了正确的处理 time.Time ,你需要包含 parseTime 作为参数
var db *gorm.DB
func init() {
//gorm.Open("数据库类型", "用户名:密码@tcp(IP:port)/数据库名")
//注意: 为了正确的处理 time.Time ,你需要包含 parseTime 作为参数
d, err := gorm.Open("mysql", "root:123456@tcp(192.168.0.109:30068)/go_test?charset=utf8&parseTime=True&loc=Local")
if err != nil {
panic(err)
}
db = d
}
3.增删改查 1).新增
user := User{Username: "大旺", Password: "123456"}
//指定表t_user 要用&user
db.Table("t_user").Create(&user)
2).查询
查询第一个数据,按主键排序
var user User
//指定表t_user 结构体User和表t_user名称不同需要指定
db.Table("t_user").First(&user)
//获取最后一条记录,按照主键排序
//db.Table("t_user").Last(&user)
fmt.Printf("user:%#v\n",&user)
查询全部
var users []User
//指定表t_user 结构体User和表t_user名称不同需要指定
db.Table("t_user").Find(&users)
fmt.Printf("user:%#v\n",&users)
通过主键查询
var user User
//指定表t_user 结构体User和表t_user名称不同需要指定
// 通过主键进行查询 (仅适用于主键是数字类型)
db.Table("t_user").First(&user, 10)
fmt.Printf("user:%#v\n",&user)
通过where
条件查询
var users []User
//指定表t_user 结构体User和表t_user名称不同需要指定
db.Table("t_user").Where("username LIKE ? AND password = ?", "%旺%", "1").Find(&users)
fmt.Printf("user:%#v\n",&users)
其他查询
// 结构体
var user User
// SELECT * FROM t_user WHERE username= "大旺" AND password= “123456” LIMIT 1;
db.Table("t_user").Where(&User{Username: "大旺", Password: “123456”}).First(&user)
// Map
var users []User
// SELECT * FROM t_user WHERE username= "大旺1" AND password= “1”;
db.Table("t_user").Where(map[string]interface{}{"username": "大旺1", "password": 1}).Find(&users)
// 主键的切片
var users []User
//SELECT * FROM t_user WHERE id IN (1, 2, 3);
db.Table("t_user").Where([]int64{1, 2, 4}).Find(&users)
3).修改
先查询后修改
db.Table("t_user").Save(&user)
var user User
db.Table("t_user").First(&user, 10)
fmt.Printf("查到的user:%#v\n",&user)
user.Password="666666666"
db.Table("t_user").Save(&user)
fmt.Printf("新增后的user:%#v\n",&user)
根据where条件修改
var user User
db.Table("t_user").Where("id = ?", 10).Updates(map[string]interface{}{"username": "更新"})
4).删除
//删除存在的一条
db.Delete(&user)
//根据条件删除
db.Table("t_user").Where("id = ?", 10).Delete(User{})
// delete from t_user where id=10;
//根据条件删除
db.Table("t_user").Delete(User{}, "id = ?", "10")
// delete from t_user where id=10;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)