1、慎用CreatedAt、UpdatedAt和DeletedAt字段
数据库的字段要避开这created_at、updated_at、deleted_at字段,改为created_time、updated_time和deleted_time。
数据插入时,仅仅插入业务数据即可,created_at
和updated_at
,deleted_at
字段不用手动设置值,gorm自动维护这些字段的值
2、查询的时候,如果没有查到记录也算一个err,需要在正常理解的err之前判断,类似如下的顺序:
err := db. Table(GroupChatTableName). Select("gc_status"). Where(map[string]interface{}{ "gc_id": gid, }). Find(&group). Error // 这个要在err前面,因为在gorm里找不到记录也算错误 if db.RecordNotFound() { log.Errorf("query group chat not found") return 0, nil } if err != nil { log.Errorf("query group chat info by gid failed, err: %v", err) return 0, err }
Find查询结果是列表,First查询的是单条数据。
当 First、Last、Take 方法找不到记录时,GORM 会返回 ErrRecordNotFound 错误
在使用Raw自定义SQL查询时,使用Scan来接收数据,虽然Find也是可以接收的,但是Find主要还是用来带条件查询的,
链接到Raw后面时条件是不起作用的。所以用Scan函数单纯的接收数据就行了。
3、更新单个字段用update,但通过 map
+ updates才能更新多个字段,零值字段也会更新