mybatis 排序_hibatis--mybatis,自动生成SQL, 通用Mapper, 通用Dao

——从Mybatis到Hibernate、Spring data JPA,再到QueryDSL,用过了这些框架后,对各种框架的毛病已不胜其烦。在看到Mybatis Plus这样的框架后,突发奇想,不如自己使用mybatis 定制一个数据库持久层框架,实现SQL语句的自动生成。

一个Mybatis增强工具包。新增了5种SQL语句自动生成注解:ExecuteInsert, ExecuteSelect, ExecuteCount, ExecuteUpdate, ExecuteDelete。 实现了增删改查语句自动生成。

150d30addfeac8ec0fb5a40c3927fb62.png

特点

  1. 自动按需关联表。自动收集实体类中声明的关联表、以及方法签名中的参数注解声明的关联表,根据查询参数引用到的关联表、及查询结果视图中 用到的关联表,自动对用到的表进行Join。支持左连接,内连接,右连接。
  2. 查询结果支持视图,类似于Jackson Json中的JsonView,可在ExecuteSelect注解中声明查询结果的视图。生成的语句会根据查询结果视图中的字段引用 的表,自动进行Join。如果视图中包含1对1、1对多的关联属性,自动通过二次查询设置属性值。
  3. 支持拦截器对Mapper中方法的参数进行修改,以及添加额外的过滤条件和插入值(或更新值)。
  4. 支持默认过滤条件、默认插入值(或更新值)、默认排序。具体参考ExecuteInsert等语句自动生成注解。

实现思路

MybatisGenerator在监听到ContextRefreshedEvent事件后,在所有已注入的扩展了BaseMapper或EmptyMapper的Mapper中查找使用ExecuteInsert等 注解标注的方法,生成动态SqlSource,注册MappedStatement。

快速开始

插入

ExecuteInsert方法严格限定只能声明1个参数,可以是单个实例,也可以是集合类型(List或数组)。参数类型可以是实体类型、Map类型及任意的java bean类型。生成插入语句时 根据实体类字段名查找参数中的同名字段进行插入。

插入实体类实例:

@ExecuteInsertint insert(Entity entity);

插入数组:

@ExecuteInsertint insertArray(T[] array);

插入列表(使用默认插入值):

@ExecuteInsert(columnValue = {@ColumnValue(field = "updateTime
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值