mapper--mybatis封裝插件

mapper簡介

通用mapper是一個可以實現任意Mybatis通用方法的框架,項目提供了常規的增刪改查操作以及Example相關的表單操作。

官網

https://gitee.com/free/Mapper

Mybatis的痛點

  1. mapper.xml文件裏有大量的sql,當數據庫表字段變動,配置文件就要修改
  2. 需要自己實現sql分頁,如:select * from table where … limit 1, 10,自己寫分頁,除了傳參pagepageSize,還需要返回條目總數count
  3. 數據庫可移植性差,如果項目更好數據庫,如Oracle->MySQL,mapper.xml中的sql要重寫,因爲Oracle的PLSql和MySQL支持的函數不同
  4. 生成的代碼量大,會生成非常多的mapper.xml文件
  5. 批量操作,如插入、更新,需要手寫
    而這些可以通過通用mapper解決

使用通用Mapper

和Spring集成

  1. 引入依賴
    Spring和Mybatis的依賴如下:
<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis</artifactId>
	<version>Version</version>
</dependency>
<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis-spring</artifactId>
	<version>Version</version>
</dependency>
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-context</artifactId>
	<version>Version</version>
</dependency>
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-tx</artifactId>
	<version>Version</version>
</dependency>
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-jdbc</artifactId>
	<version>Version</version>
</dependency>

在此基礎上,添加通用Mapper的依賴

<dependency>
	<groupId>tk.mybatis</groupId>
	<artifactId>mapper</artifactId>
	<version>Version</version>
</dependency>
  1. 與Spring集成
    只需要把原來配置文件中的org.mybatis.spring.mapper.MapperScannerConfigurer換成tk.mybatis.spring.mapper.MapperScannerConfigurer即可
    即原來的配置是
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	<property name="basePackage" value="掃描包名"/>
</bean>

現在的是

<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
	<property name="basePackage" value="掃描包名"/>
</bean>

實體類映射

@Table(name="tb_user")
public class User implments Serializable{
	@Id
	private Integer id;

	private String name;
	//getter setter...
}

@Table映射表,@Id映射表的主鍵

創建mapper接口

public interface UserMapper extends Mapper<User>{}

Mappertk.mybatis.mapper.common.Mapper類,繼承了該類的接口指定了泛型類型後,自動擁有針對泛型類型的大量方法:
在這裏插入圖片描述

接口方法說明

基礎接口select

  • List select(T record):根據T對象中的屬性名稱查詢,類似於select * from table as t where t.name=#{name} and t.password=#{password}
  • T selectOne(T record):根據實體中的屬性進行查詢,只能有一個返回值,有多個結果時拋出異常,查詢條件使用等號
  • T selectByPrimaryKey(Object key):根據主鍵查詢,方法參數必須包含完整的主鍵屬性,查詢條件使用等號
  • int selectCount(T record):根據實體中的屬性查詢總數,查詢條件使用等號

基礎接口insert

  • int insert(T record):保持一個實體,null的屬性也會保存,不會使用數據庫默認值
  • int insertSelective(T record):保持一個實體,null的屬性也會保存,使用數據庫默認值

基礎接口update

  • int updateByPrimaryKey(T record):根據主鍵更新實體全部字段,null值會被更新,不使用數據庫默認值
  • int updateByPrimaryKeySelective(T record):根據主鍵更新實體全部字段,null值會被更新,使用數據庫默認值

基礎接口delete

  • int delete(T record):根據實體屬性爲條件進行刪除,查詢條件使用等號
  • int deleteByPrimaryKey(Object key):根據主鍵進行刪除,方法參數必須包含完整的主鍵屬性
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章