大家都知道,传统的mybatis实现数据库的增删改查都是依赖xml写sql语句,外层的mapper接口暴露出来调用,xml实现接口,然后通过调用接口操作数据库。虽然目的实现了,但是有一点麻烦的是,数据库增加一张表,就要对应增加一套mappe接口和xml文件,如果数据库表比较多的话,对应的文件就会很多,那这就很麻烦。所以我一直在想有没有方法可以不用写那些复杂的sql就可以实现对数据库的操作呢?带着这个疑问,我摸索好多天,查了好多资料,最后得到了答案:mybatis3以上提供了**provider注解,合理利用这些注解就可以不用sql啦。下面回归正题:
mybatis3提供了4个**provider注解,分别对应增删改查,分别是:InsertProvider、DeleteProvider、UpdateProvider、SelectProvider;如何使用这些注解呢?
1.这些注解都有统一的2个入参,一个是type,一个是method。type参数的值是你动态sql的类(A)class文件,method是类(A)中的方法名。当然,这些方法都是动态sql,至于动态sql怎么实现,这就可以发挥你的java基础能力,我是结合了自定义注解和java反射基础知识实现了动态sql。下面结合代码讲解一下实现过程。
2.首先你需要定义一个接口类,这个类提供各种各样的增删改查方法。
其中的BaseSql