gorm的那些坑
1. db.SingularTable(true)
在Gorm中,表名是结构体名的复数形式,列名是字段名的蛇形小写。即,如果有一个user表,那么如果你定义的结构体名为:User,gorm会默认表名为users而不是user。
db.SingularTable(true)
让grom转义struct名字的时候不用加上s
2. Rows.Next() 需要关闭
每次返回的rows 都是新的实例,占用一个数据库连接. rows.next()直到false 就会关闭,否则就会出现资源没有被回收,但数据库设置的超时回收也会去回收 但是会降低服务Tps。
user := new(User)
rows, err := engine.Where("id >?", 1).Rows(user)
if err != nil {
}
defer rows.Close()
for rows.Next() {err = rows.Scan(user)
}
3. Scan error on column index 1, name “created_at”: unsupported Scan, storing driver.Value type []uint8
parseTime是查询结果是否自动解析为时间。+loc是MySQL的时区设置
parseTime=True&loc=Local
4. NewRecord和Create
db.NewRecord(user) // => 主键为空返回true
db.Create(&user)
NewRecord
检查主键是否存在
Create
即执行 insert 操作