通用mapper可以自动生成sql语句用于mybatis框架使用。那么,通用mapper的一些基本概念,我们需要了解。
1.通用mapper是一个mybatis框架的插件。
2.通用mapper可以理解为JPA的一种实现。
3.既然是一种JPA的实现,那么,就有一些ORM的思想在其中。
4.通用mapper中有多种接口,每种接口中定义了相关方法,供使用者调用。
5.请区别JPA、spring data JPA、Hibernate这三者的区别,至于具体区别,可以通过百度查询三者的相关概念,进行区别。
下面对上述内容进行一些解释:
1.既然是插件,就算不上框架,它是基于mybatis对JPA的一种实现,是mybatis的一种封装。其实现原理相对简单,利用IOC就能做到(个人臆测,没时间看源码,欢迎斧正)。
2.既然是JPA实现。那么,就需要相关的注解来标明成员变量的一些属性和类上的表名等内容。即@Id@Column@Table等等。里面有一些小坑,比如如果你在Entity的成员变量上不加@Id注解去标明哪个是主键,那么你在调用selectByPrimaryKey方法时,他会进行多个and,把你这个表每个字段都联合起来,作为联合主键,并且每个列都要等于这个值。means会生成这样的sql
select * from table where columnA = '' and columnB = '' and ... ...;
3.那么多接口,你可以选择你去继承哪个接口,从而定制自己的通用mapper。
public interface Mapper<T> extends
BaseMapper<T>,
ExampleMapper<T>,
RowBoundsMapper<T>,
Marker {}