Mapper
说明¶
- mapper为数据存取层,提供对数据库操作的能力
- 每次使用前需要获取mapper实例,如:
mp := mapper.GetConsumeRecordMapper("ro")
- GetXXXXMapper中间的XXXX部分,对应于数据表名称
- GetXXXXMapper接受一个参数,指定使用哪个数据库实例,一般用于读写分离架构。数据库的初始化,请参考章节 应用初始化
事务¶
- mp.Tx2(...)可开启事务
- 事务代码示例:(有panic时,自动回滚)
mp.Tx2(func(tx *sqlx.Tx) { //do..................... })
- 所有mapper方法第1个参数tx,使用上述示例代码的的回调参数即可,不启用事务时可传nil
方法详细说明¶
-
获取单条数据、判断是否存在 (XXXModel代表模型类名)
方法/说明 Get(tx, id) *XXXModel 根据id获取,未获取到返回nil GetFirst(tx, whereStr, orderStr, args...) *XXXModel 根据条件查找第1条数据,whereStr、orderby都是mysql原生sql语句,不用包含where、order by字样。需要参数时,在whereStr中用?替代,同时在参数最后按顺序传入参数,每个?对应一个参数。 其他函数与此类似,除非特别指定 Exists(tx, id) bool 根据id判断数据是否存在 GetByCode(tx, code) *XXXModel 根据code获取,需要数据表中有code字段 -
获取多条数据
方法/说明 Gets(tx, pageIndex, rowsInPage, whereStr, orderStr, args...) []*XXXModel 获取多条数据、pageIndex从1开始、whereStr、orderStr可以为空,不要where、order by部分 Getss(tx, pageIndex, rowsInPage, sqlStr, args...) []*XXXModel 获取多条数据、pageIndex从1开始、sqlStr参数是完整的sql语句,如 select * from table1 where id=? and version=? GetTops(tx, top, whereStr, orderStr, args...) []*XXXModel 获取前几条数据 GetTopss(tx, top, sqlStr, args...) []*XXXModel 获取前几条数据,需要完整的sql语句 -
插入
方法/说明 Insert(tx,item *XXXModel) int,int 插入单条数据,返回值1:数据的id(id是自增字段时才返回,否则不返回),返回值2:插入成功的条数 Inserts(tx,items []*XXXModel) int 插入多条数据,返回值:插入成功的条数 -
修改
方法/说明 Update(tx,item *XXXModel) int 更新数据,返回成功的条数,下同 Updates(tx,updateStr,whereStr,args...) int 更新数据 Updatess(tx,sqlStr,args...) int 更新数据、需要完整的sql语句 -
删除
方法/说明 Del(tx,id) int 根据id删除 Dels(tx,whereStr,args...) int 根据where删除 Delss(tx,sqlStr,args...) int 根据sql删除,需要完整的sql语句 -
计数等
方法/说明 GetCount(tx,whereStr,args...) int 获取数量 GetCountss(tx,sqlStr,args...) int 获取数量,需要完整的sql语句 GetStringss(tx,sqlStr,args...) string 获取字符串,需要完整的sql语句 GetFloatss(tx,sqlStr,args...) float64 获取数值,需要完整的sql语句
BaseMapper¶
- mapper的方法由基础类型BaseMapper提供支撑,可在BaseMapper基础上定义其他方法,感兴趣的可以自行阅读源码