通用mapper中的官方扩展与自定义扩展

872 阅读1分钟

通用mapper是我非常喜欢使用的ORM辅助框架,可以帮忙动态的生成SQL,而且还有很多官方写好的扩展,还可以自定义扩展动态sql,有无限的可能

官方gitee地址

通用Mapper 在issue中可以找到很多同样使用者的提问,没准可以解决你的疑惑

官方扩展

我们可以定义一个BaseMapper,使我们各个对象的Mapper继承BaseMapper,从而拥有官方扩展的动态sql方法

现在有这样个问题:之前使用的是updateByPrimaryKeySelective(model),简单的来说就是根据主键更新属性不为null的值,使前端传啥改啥,但遇到问题是,如何置空时间字段?如果传null,直接忽略掉,无法置空时间

此时我们使BaseMapper extends UpdateByPrimaryKeySelectiveForceMapper,于是所有的子类对象mapper都拥有了updateByPrimaryKeySelectiveForce方法,即传入更新对象的同时,还可以传入一个强制更新列表,对其中的属性不进行忽略

自定扩展

同样基于刚才的BaseMapper模式,现在有这样的一个需求,插入的数据中存在重复的主键,所以需要使用 insert ignore语句进行插入,而默认的InsertListMapper提供的只有insert

所以这样处理,重写其InsertListMapper或者自定义新的泛型Mapper,让BaseMapper继承之,整理重写过程可模仿Tkmapper源码的写法,进行自定义

如图,我自定义了insert ignore 语句

工具的可扩展性

ORM辅助工具TKMAPPER的良好的可扩展性可大大提高工作效率,逐渐积累的BaseMapper将慢慢成为一个动态SQL机器,拥有各种各样的动态sql能力