标签:
基于 com.github.abel533-mapper改造的实现的动态查询字段,mapper已经实现了单表的操作不需要写配置文件,但是唯一的不足就是查询的时候不能根据具体的业务区查询指定的字段,默认是查询所有的字段,这样在数据访问量大的情况下性能会跟不上。几天基于这种物配制的基础,在原有的基础上修改了查询方便实现了根据业务查询指定的字段,实现方法很简单,在执行sql之前把需要查询的字段和本地线程绑定,然后在正真构造sql的时候用根本的线程的数据替换掉默认的所以字段,具体实现如下:
用自己的接口掩盖掉默认的接口(大多数是copy,因为默认接口是泛型,所以如果直接继承会有很多问题需要处理,所以这里是直接copy整个接口的代码,并添加了一个接口)
接口写好以后就需要实现类,大部分是沿用默认的方法,从写了三个查询方法,添加了一个批量删除方法(上面接口中新增了一个批量删除的接口)
这样基于原来的两个拦截器就改造完毕。
还需要一个本地线程类用于保存需要查询的字段
ok,到这来就算大功告成,整个拦截器就完全改造完成
接下来就需要告诉大家怎么样用了
通过mapper ,里面的plugin 的interceptor属性就是配置通用Mapper拦截器 identity属性就针对数据库类型,这来是mysql,mappers属性就是我们真正的执行方法的接口(里面有具体的增、删、改、查的方法) 然后自己的mapper只需要继承这来配置的接口(LiuzwMapper)就具备了上个接口的所以方法,所以实现了零代码编写,零配置。因为接口是泛型所以在继承的时候需要给一个po对象(po对象的属性必须和数据库的字段保持一致,必须加上对应的注解,这个就是缺点,这样一来我们的po对象就只能是一个单纯的po对象,而不能有过多的业务参与,现在的程序设计中也推荐用这种方法,po对象和vo对象分离)
具体用法如下:
po对象
自定义mapper:
可以看见基本就是零代码编写,只需要继承我们的通用mapper
service 代码:
主要:其他的配置包括spring整合mybatis 这些还是必不可少的
标签:
原文地址:http://blog.csdn.net/u013239236/article/details/51871160