项目中少不了CRUD的操作,在Mybatis中的Mapper文件中也随处可见增、删、改、查。但是,有的CRUD操作却是类似的,可以通过Mybatis提供的注解加上反射实现传入实体类就是简单的CRUD操作,这样的实现是基于对单表的操作,需要进行关联查询等操作时,还是老老实实的写在mapper文件中。
一、Mybatis中的注解
定义Mybatis基类我们需要用到org.apache.ibatis.annotations包下面四个很重要的注解:
(1)@InsertProvider,提供插入的SQL语句
(2)@DeleteProvider,提供删除的SQL语句
(3)@UpdateProvider,提供修改的SQL语句
(4)@SelectProvider,提供查询的SQL语句
@SelectProvider注解的中定义了两个属性,其中,type:指定提供SQL语句的类;method:指定提供SQL语句的方法。其他三个注解中也都有这两个属性。通过这些注解,在Mapper接口中定义方法时,我们就可以利用它来指定为这个方法指定提供SQL语句的方法,也就是这些主要用在Mapper接口中的方法上。这里我们不深入介绍Mybatis是如何通过这个注解获取SQL语句的,有兴趣的朋友可以看这篇博客https://blog.csdn.net/u012734441/article/details/86285209
@SelectProvider注解的源码如下:
/**
* @author Clinton Begin
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface SelectProvider {
Class<?> type();
String method();
}
二、定义Mybatis基类
这里不介绍整过环境的搭建过程,下文中主要介绍定义基类中的主要过程,也就是怎么使用上述介绍的注解类来完成向Mapper提供SQL语句的过程,也就是下文中的第三步:完成提供SQL类的方法,第四步:利用注解定义基础类接口——BaseDao。
第一,准备数据库表,表名为:user,字段定义如下:
+---------+--------------+------+-----+---------+