跳转至

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基础上定义其他方法,感兴趣的可以自行阅读源码