通用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的具體使用
寫的很詳細,我就不當一個搬運工了。