tonglin0325的个人主页

Mybatis学习笔记——通用mapper

在使用mybatis-generator自动生成mapper代码的时候,对于基本的增删改查方法可以通过继承通用mapper的方式进行简化,参考:MyBatis 通用 Mapper
  5. 高级用法

mapper接口,参考:Mapper 接口大全

1.依赖

1
2
3
4
5
6
7
8
9
10
11
12
<!-- mybatis -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.3.9</version>
</dependency>

2.由于需要使用增删改查的方法,所以通用的MyMapper类为

1
2
3
4
5
6
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

public interface MyMapper<T> extends Mapper<T>, MySqlMapper<T> {
}

3.对于具体mapper,只主要继承MyMapper即可,如

1
2
public interface UserMapper extends MyMapper<User> {
}

对于UserMapper接口,需要添加 @Mapper 注解,或者使用 @MapperScan(basePackages = “com.example.demo.mapper”) 的方式,为其生成动态代理类

代理模式是一种设计模式,提供了对目标对象额外的访问方式,即通过代理对象访问目标对象,这样可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。

动态代理,参考:什么是动态代理? 

Java动态代理之InvocationHandler最简单的入门教程

静态代理: 在编译时就已经实现,编译完成后代理类是一个实际的class文件

动态代理: 在运行时动态生成的,即编译完成后没有实际的class文件,而是在运行时动态生成类字节码,并加载到JVM中

 

@Mapper注解 和 @MapperScan注解,参考:详解 @MapperScan 注解和 @Mapper 注解