Mybatis-Plus?CRUD操作方法
Mybatis-Plus CRUD
通用 Service CRUD 封裝 IService 接口,進一步封裝 CRUD 采用 get 查詢、remove 刪除 、list 查詢集合、page 分頁的前綴命名方式區(qū)分 Mapper 層避免混淆
泛型 T 為任意實體對象
如果自定義通用 Service 方法,可以創(chuàng)建自己的 IBaseService 繼承 Mybatis-Plus 提供的基類IService
對象 Wrapper 為 條件構造器
Service CRUD 接口
Save
| 類型 | 參數(shù)名 | 描述 |
|---|---|---|
| T | entity | 實體對象 |
| Collection | entityList | 實體對象集合 |
| int | batchSize | 插入批次數(shù)量 |
// 插入一條記錄(選擇字段,策略插入) boolean save(T entity); // 插入(批量) boolean saveBatch(Collection<T> entityList); // 插入(批量) boolean saveBatch(Collection<T> entityList, int batchSize);
SaveOrUpdate
| 類型 | 參數(shù)名 | 描述 |
|---|---|---|
| T | entity | 實體對象 |
| Wrapper | updateWrapper | 實體對象封裝操作類 UpdateWrapper |
| Collection | entityList | 實體對象集合 |
| int | batchSize | 插入批次數(shù)量 |
// TableId 注解存在更新記錄,是否插入一條記錄 boolean saveOrUpdate(T entity); // 根據(jù)updateWrapper嘗試更新,是否繼續(xù)執(zhí)行saveOrUpdate(T)方法 boolean saveOrUpdate(T entity, Wrapper<T> updateWrapper); // 批量修改插入 boolean saveOrUpdateBatch(Collection<T> entityList); // 批量修改插入 boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize);
Remove
| 類型 | 參數(shù)名 | 描述 |
|---|---|---|
| Wrapper | queryWrapper | 實體包裝類 QueryWrapper |
| Serializable | id | 主鍵 ID |
| Map<String, Object> | columnMap | 表字段 map 對象 |
| Collection<? extends Serializable> | idList | 主鍵 ID 列表 |
// 根據(jù) UpdateWrapper 條件,更新記錄 需要設置sqlset boolean update(Wrapper<T> updateWrapper); // 根據(jù) whereWrapper 條件,更新記錄 boolean update(T updateEntity, Wrapper<T> whereWrapper); // 根據(jù) ID 選擇修改 boolean updateById(T entity); // 根據(jù)ID 批量更新 boolean updateBatchById(Collection<T> entityList); // 根據(jù)ID 批量更新 boolean updateBatchById(Collection<T> entityList, int batchSize);
Update
| 類型 | 參數(shù)名 | 描述 |
|---|---|---|
| Wrapper | updateWrapper | 實體對象封裝操作類 UpdateWrapper |
| T | entity | 實體對象 |
| Collection | entityList | 實體對象集合 |
| int | batchSize | 更新批次數(shù)量 |
// 根據(jù) UpdateWrapper 條件,更新記錄 需要設置sqlset boolean update(Wrapper<T> updateWrapper); // 根據(jù) whereWrapper 條件,更新記錄 boolean update(T updateEntity, Wrapper<T> whereWrapper); // 根據(jù) ID 選擇修改 boolean updateById(T entity); // 根據(jù)ID 批量更新 boolean updateBatchById(Collection<T> entityList); // 根據(jù)ID 批量更新 boolean updateBatchById(Collection<T> entityList, int batchSize);
Get
| 類型 | 參數(shù)名 | 描述 |
|---|---|---|
| Serializable | id | 主鍵 ID |
| Wrapper | queryWrapper | 實體對象封裝操作類 QueryWrapper |
| boolean | throwEx | 有多個 result 是否拋出異常 |
| T | entity | 實體對象 |
| Function<? super Object, V> | mapper | 轉換函數(shù) |
// 根據(jù) ID 查詢
T getById(Serializable id);
// 根據(jù) Wrapper,查詢一條記錄。結果集,如果是多個會拋出異常,隨機取一條加上限制條件 wrapper.last("LIMIT 1")
T getOne(Wrapper<T> queryWrapper);
// 根據(jù) Wrapper,查詢一條記錄
T getOne(Wrapper<T> queryWrapper, boolean throwEx);
// 根據(jù) Wrapper,查詢一條記錄
Map<String, Object> getMap(Wrapper<T> queryWrapper);
// 根據(jù) Wrapper,查詢一條記錄
<V> V getObj(Wrapper<T> queryWrapper, Function<? super Object, V> mapper);List
| 類型 | 參數(shù)名 | 描述 |
|---|---|---|
| Wrapper | queryWrapper | 實體對象封裝操作類 QueryWrapper |
| Collection<? extends Serializable> | idList | 主鍵 ID 列表 |
| Map<String, Object> | columnMap | 表字段 map 對象 |
| Function<? super Object, V> | mapper | 轉換函數(shù) |
// 查詢所有 List<T> list(); // 查詢列表 List<T> list(Wrapper<T> queryWrapper); // 查詢(根據(jù)ID 批量查詢) Collection<T> listByIds(Collection<? extends Serializable> idList); // 查詢(根據(jù) columnMap 條件) Collection<T> listByMap(Map<String, Object> columnMap); // 查詢所有列表 List<Map<String, Object>> listMaps(); // 查詢列表 List<Map<String, Object>> listMaps(Wrapper<T> queryWrapper); // 查詢全部記錄 List<Object> listObjs(); // 查詢全部記錄 <V> List<V> listObjs(Function<? super Object, V> mapper); // 根據(jù) Wrapper 條件,查詢全部記錄 List<Object> listObjs(Wrapper<T> queryWrapper); // 根據(jù) Wrapper 條件,查詢全部記錄 <V> List<V> listObjs(Wrapper<T> queryWrapper, Function<? super Object, V> mapper);
Page
| IPage | page | 翻頁對象 |
|---|---|---|
| Wrapper | queryWrapper | 實體對象封裝操作類 QueryWrapper |
// 無條件分頁查詢 IPage<T> page(IPage<T> page); // 條件分頁查詢 IPage<T> page(IPage<T> page, Wrapper<T> queryWrapper); // 無條件分頁查詢 IPage<Map<String, Object>> pageMaps(IPage<T> page); // 條件分頁查詢 IPage<Map<String, Object>> pageMaps(IPage<T> page, Wrapper<T> queryWrapper);
Count
| 類型 | 參數(shù)名 | 描述 |
|---|---|---|
| Wrapper | queryWrapper | 實體對象封裝操作類 QueryWrapper |
// 查詢總記錄數(shù) int count(); // 根據(jù) Wrapper 條件,查詢總記錄數(shù) int count(Wrapper<T> queryWrapper);
Chain
query
// 鏈式查詢 普通
QueryChainWrapper<T> query();
// 鏈式查詢 lambda 式。注意:不支持 Kotlin
LambdaQueryChainWrapper<T> lambdaQuery();
// 示例:
query().eq("column", value).one();
lambdaQuery().eq(Entity::getId, value).list();update
// 鏈式更改 普通
UpdateChainWrapper<T> update();
// 鏈式更改 lambda 式。注意:不支持 Kotlin
LambdaUpdateChainWrapper<T> lambdaUpdate();
// 示例:
update().eq("column", value).remove();
lambdaUpdate().eq(Entity::getId, value).update(entity);Mapper CRUD 接口
通用 CRUD 封裝 BaseMapper 接口,為 Mybatis-Plus 啟動時自動解析實體表關系映射轉換為 Mybatis 內部對象注入容器
泛型 T 為任意實體對象
參數(shù) Serializable 為任意類型主鍵 Mybatis-Plus 不推薦使用復合主鍵,約定每一張表,都有自己的唯一 id 主鍵
對象 Wrapper 為 條件構造器
Insert
| 類型 | 參數(shù)名 | 描述 |
|---|---|---|
| T | entity | 實體對象 |
// 插入一條記錄 int insert(T entity);
Delete
| 類型 | 參數(shù)名 | 描述 |
|---|---|---|
| Wrapper | wrapper | 實體對象封裝操作類(可以為 null) |
| Collection<? extends Serializable> | idList | 主鍵 ID 列表(不能為 null 以及 empty) |
| Serializable | id | 主鍵 ID |
| Map<String, Object> | columnMap | 表字段 map 對象 |
// 根據(jù) entity 條件,刪除記錄 int delete(@Param(Constants.WRAPPER) Wrapper<T> wrapper); // 刪除(根據(jù)ID 批量刪除) int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList); // 根據(jù) ID 刪除 int deleteById(Serializable id); // 根據(jù) columnMap 條件,刪除記錄 int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
Update
| 類型 | 參數(shù)名 | 描述 |
|---|---|---|
| T | entity | 實體對象 (set 條件值,可為 null) |
| Wrapper | updateWrapper | 實體對象封裝操作類(可以為 null,里面的 entity 用于生成 where 語句) |
調用
updateById方法前,需要在T entity(對應的實體類)中的主鍵屬性上加上@TableId注解
// 根據(jù) whereWrapper 條件,更新記錄 int update(@Param(Constants.ENTITY) T updateEntity, @Param(Constants.WRAPPER) Wrapper<T> whereWrapper); // 根據(jù) ID 修改 int updateById(@Param(Constants.ENTITY) T entity);
Select
| 類型 | 參數(shù)名 | 描述 |
|---|---|---|
| Serializable | id | 主鍵 ID |
| Wrapper | queryWrapper | 實體對象封裝操作類(可以為 null) |
| Collection<? extends Serializable> | idList | 主鍵 ID 列表(不能為 null 以及 empty) |
| Map<String, Object> | columnMap | 表字段 map 對象 |
| IPage | page | 分頁查詢條件(可以為 RowBounds.DEFAULT) |
// 根據(jù) ID 查詢 T selectById(Serializable id); // 根據(jù) entity 條件,查詢一條記錄 T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); // 查詢(根據(jù)ID 批量查詢) List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList); // 根據(jù) entity 條件,查詢全部記錄 List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); // 查詢(根據(jù) columnMap 條件) List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap); // 根據(jù) Wrapper 條件,查詢全部記錄 List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); // 根據(jù) Wrapper 條件,查詢全部記錄。注意: 只返回第一個字段的值 List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); // 根據(jù) entity 條件,查詢全部記錄(并翻頁) IPage<T> selectPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper); // 根據(jù) Wrapper 條件,查詢全部記錄(并翻頁) IPage<Map<String, Object>> selectMapsPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper); // 根據(jù) Wrapper 條件,查詢總記錄數(shù) Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
到此這篇關于Mybatis-Plus CRUD的文章就介紹到這了,更多相關Mybatis-Plus CRUD內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
java如何實現(xiàn)自動生成數(shù)據(jù)庫設計文檔
以前我們還需要手寫數(shù)據(jù)庫設計文檔、現(xiàn)在可以通過引入screw核心包來實現(xiàn)Java?數(shù)據(jù)庫文檔一鍵生成。本文將具體介紹一下如何通過java自動生成數(shù)據(jù)庫設計文檔,需要的朋友可以參考下2021-11-11
SpringMVC加載控制與Postmand的使用和Rest風格的引入及RestFul開發(fā)全面詳解
SpringMVC是一種基于Java,實現(xiàn)了Web MVC設計模式,請求驅動類型的輕量級Web框架,即使用了MVC架構模式的思想,將Web層進行職責解耦?;谡埱篁寗又傅木褪鞘褂谜埱?響應模型,框架的目的就是幫助我們簡化開發(fā),SpringMVC也是要簡化我們日常Web開發(fā)2022-10-10
如何將SpringBoot項目打成?war?包并部署到Tomcat
這篇文章主要介紹了如何將SpringBoot項目?打成?war?包?并?部署到?Tomcat,當前環(huán)境是windows,tomcat版本是8.5采用的springboot版本是2.2.3,本文結合實例代碼給大家詳細講解需要的朋友可以參考下2022-11-11
JDK20?+?SpringBoot?3.1.0?+?JdbcTemplate?使用案例詳解
通過 JdbcTemplate 直接執(zhí)行 SQL 語句,結合源碼動態(tài)編譯即可方便實現(xiàn)動態(tài)修改代碼邏輯的效果,這篇文章主要介紹了JDK20?+?SpringBoot?3.1.0?+?JdbcTemplate?使用,需要的朋友可以參考下2023-09-09
java多線程編程之從線程返回數(shù)據(jù)的兩種方法
從線程中返回數(shù)據(jù)和向線程傳遞數(shù)據(jù)類似。也可以通過類成員以及回調函數(shù)來返回數(shù)據(jù)。但類成員在返回數(shù)據(jù)和傳遞數(shù)據(jù)時有一些區(qū)別,下面讓我們來看看它們區(qū)別在哪2014-01-01
mybatis plus表的創(chuàng)建時間和修改時間的操作方法
這篇文章主要介紹了mybatis plus表的創(chuàng)建時間和修改時間的實現(xiàn)方法,本文給大家分享兩種方法,每種方法通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2021-09-09

