通用Mapper的分享使用
Mybatis的通用mapper和Hibernate一样都实现了JPA接口,简化了数据库的操作
和Hibernate的对比
Hibernate和Mybatis都是对数据库的单表操作。Hibernate的封装更加彻底,但是由于写死,性能和框架大小都被限制,而通用Mapper提供一个example来提供给使用者自定义查询
通用Mapper的使用
添加pom依赖
<dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.0.2</version> </dependency>
通用mapper是在springboot集成了Mybatis的基础上进行使用的
创建通用接口
package com.boss.hr.train.fishkkmybatis.basedao; import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.MySqlMapper; /** * * 公用Mapper接口 *@author fishkk *@version 1.0.0 *@since * * 修改人信息 *@author *@version *@since * */ public interface BaseDao<T> extends Mapper<T>,MySqlMapper<T> { }
之后- 所有继承BaseDao的接口都最有通用mapper的功能
yml的配置
##通用mapper配置 mapper: ##实体类所在的包 mappers: com.boss.hr.train.fishkkmybatis.basedao.BaseDao identity: MYSQL
创建实体类,这里就省略了,接下来看一下是怎么使用通用mapper的
- userDao的基类继承了前面定义的BaseDao,可以看到通用mapper定义了一系列自己的函数来简化数据库的操作
但是通用mapper值适合单表操作,如果涉及到夺标操作还是不能避免使用Mybatis来写SQL语句
package com.xyz.mapper; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import tk.mybatis.spring.annotation.MapperScan; @SpringBootApplication @MapperScan("com.xyz.mapper.dao")//注意MapperScan要导tk的包,不然会报NoSuchMethodException public class MapperApplication { public static void main(String[] args) { SpringApplication.run(MapperApplication.class, args); } }
最后一步,为添加起步依赖注释
通过example来筛选数据库实例
mybatis的逆向工程中会生成实例及实例对应的example,example用于添加条件,相当where后面的部分
Example为我们创建的实例 Example.createCriteria()为我们创建了条件容器,然后将我们的筛选条件一一添加到里面,最后用这个实例去查询
Example的具体使用
写的很详细,我就不当一个搬运工了。