Mybatis通用Mapper的使用
一、什么是通用mapper
使用MyBatis的开发者,大多数都会遇到一个问题,就是要写大量的SQL在xml文件中,除了特殊的业务逻辑SQL之外,还有大量结构类似的增删改查SQL。而且,当数据库表结构改动时,对应的所有SQL以及实体类都需要更改。这工作量和效率的影响或许就是区别增删改查程序员和真正程序员的屏障通用Mapper就是为了解决单表增删改查,基于Mybatis的插件。开发人员不需要编写SQL,不需要在DAO中增加方法,只要写好实体类,就能支持相应的增删改查方法。
特点:通用Mapper可以极大的方便开发人员。可以随意的按照自己的需求选择通用方法,还可以开发自己的通用方法。极其方便的使用MyBatis表单的增删改查。支持单表操作。不支持通用的多表联合查询。
二、如何使用通用mapper
Maven依赖
<!-- 通用Mapper -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.3.9</version>
</dependency>
一、配置实体类
在上面类中,我们给主键添加了 @Id
,标记该字段为数据库主键。还有一个通用 Mapper 的特殊注解 @KeySql
,配置的 useGeneratedKeys = true
和 MyBatis 中的 useGeneratedKeys 含义相同,意思是说使用 JDBC 的方式获取数据库自增的主键值。
public class Country implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@KeySql(useGeneratedKeys = true)
private Long id;
private String countryname;
private String countrycode;
//setter 和 getter 方法
}
二、创建Mapper接口
这里继承了 tk.mybatis.mapper.common.Mapper
接口,在接口上指定了泛型类型 Country
。当你继承了 Mapper
接口后,此时就已经有了针对 Country
的大量方法,方法如下:
import tk.mybatis.mapper.common.Mapper;
public interface CountryMapper extends Mapper<Country> {
}
此时继承接口以后,此时就已经有了针对该类的大量方法
三、配置方法
配置 Mapper 接口的扫描,可以在启动类上或自定义 MyBatis 的配置类上,通过 @MapperScan
注解配置。
@SpringBootApplication
@tk.mybatis.spring.annotation.MapperScan(basePackages = "com.cxy35.sample.springboot.mybatis.tkmybatis.mapper")
public class SpringBootMybatisTkmybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootMybatisTkmybatisApplication.class, args);
}
四、自定义XXXMapper.xml
虽然大多数复杂的需求,都能通过 TkMyBatis 的组合完成操作。但如果有特殊需求,可以自定义 XXXMapper.xml 文件,实现复杂 sql 语句的操作。