1 .MyBatisPlus 介紹
MyBatis-Plus(簡稱 MP),是一個 MyBatis 的增強工具包,隻做增強不做改變.
為簡化開 發工作、提高生産率而生.
1.2 代碼及文檔釋出位址
官方位址: http://mp.baomidou.com
代碼釋出位址: Github: https://github.com/baomidou/mybatis-plus
Gitee: https://gitee.com/baomidou/mybatis-plus
文檔釋出位址: http://mp.baomidou.com/#/?id=%E7%AE%80%E4%BB%8B
1.3 前置知識
在學習MP之前,需要掌握Mybatis,Spring,Maven.
2.MyBatisPlubs 引入
2.1 導入jar包
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>2.3</version>
</dependency>
2.2 在application.xml中修改Mybatis自帶的MybatisSqlSessionFactoryBean 為 MP自帶的 MybatisSqlSessionFactoryBean
<bean id="sqlSessionFactoryBean" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
3. 通用CURD
3.1 基礎
1) 提出問題:
假設我們已存在一張 tbl_employee 表,且已有對應的實體類 Employee,實作 tbl_employee 表的 CRUD 操作我們需要做什麼呢?
2) 實作方式:
基于 Mybatis 需要編寫 EmployeeMapper 接口,并手動編寫 CRUD 方法 提供 EmployeeMapper.xml 映射檔案,并手動編寫每個方法對應的 SQL 語句.
基于 MP 隻需要建立 EmployeeMapper 接口, 并繼承 BaseMapper 接口.這就是使用 MP需要完成的所有操作,甚至不需要建立 SQL 映射檔案。
public class EmployeeMapper extends BaseMapper<Employee>{
}
3.2 插入操作
1) Integer insert(T entity);
2) @TableName
3) 全局的 MP 配置: <property name="tablePrefix" value="tbl_"></property>
4) @TableField
5) 全局的 MP 配置: <property name="dbColumnUnderline" value="true"></property>
6) @TableId
7) 全局的 MP 配置: <property name="idType" value="0"></property>
8) 支援主鍵自增的資料庫插入資料擷取主鍵值 Mybatis: 需要通過 useGeneratedKeys 以及 keyProperty 來設定 MP: 自動将主鍵值回寫到實體類中
9) Integer insertAllColumn(T entity)
3.3 更新操作
1) Integer updateById(T entity);
2) Integer updateAllColumnById( T entity)
3.4 查詢操作
1) T selectById(Serializable id);
2) T selectOne( T entity);
3) List<T> selectBatchIds(List<? extends Serializable> idList);
4) List<T> selectByMap( Map<String, Object> columnMap);
5) List<T> selectPage(RowBounds rowBounds, Wrapper<T> wrapper);
3.5 删除操作
1) Integer deleteById(Serializable id);
2) Integer deleteByMap( Map<String, Object> columnMap);
3) Integer deleteBatchIds(List< extends Serializable> idList);
3.6 通用 CRUD 小結
1) 以上是基本的 CRUD 操作,如您所見,我們僅僅需要繼承一個 BaseMapper 即可實作 大部分單表 CRUD 操作。BaseMapper 提供了多達 17 個方法給大家使用, 可以極其方 便的實作單一、批量、分頁等操作。極大的減少開發負擔!
4.條件構造器 EntityWrapper
4.1 EntityWrapper 簡介
1) Mybatis-Plus 通過 EntityWrapper(簡稱 EW,MP 封裝的一個查詢條件構造器)或者 Condition(與 EW 類似) 來讓使用者自由的建構查詢條件,簡單便捷,沒有額外的負擔, 能夠有效提高開發效率
2) 實體包裝器,主要用于處理 sql 拼接,排序,實體參數查詢等
3) 注意: 使用的是資料庫字段,不是 Java 屬性!
4) 條件參數說明:
4.2 舉個栗子
List<Employee> userList = employeeMapper.selectPage(new Page<Employee>(2, 3),
new EntityWrapper<Employee>()
.eq("last_name", "MybatisPlus")
.eq("gender", 1)
.between("age", 18, 50) );