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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
idea 安裝 Mybatis 開發(fā)幫助插件 MyBatisCodeHelper-Pro 插件破解版的方法
MyBatisCodeHelper-Pro 插件可以幫助我們快速的開發(fā) mybatis,這篇文章給大家介紹idea 安裝 Mybatis 開發(fā)幫助插件 MyBatisCodeHelper-Pro 插件破解版的相關知識,感興趣的朋友跟隨小編一起看看吧2020-09-09Java使用EasyExcel實現(xiàn)對excel文件的讀寫方式
這篇文章主要介紹了Java使用EasyExcel實現(xiàn)對excel文件的讀寫方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05使用 Java 將 byte[] 轉換為 File 對象并上
本文展示了如何通過 Java 和 Spring 來處理圖像文件的獲取、保存和上傳,通過 RestTemplate 獲取字節(jié)數(shù)組并將其轉換為 File 對象,可以輕松實現(xiàn)從遠程 URL 獲取文件并將其上傳到外部服務器,感興趣的朋友一起看看吧2025-03-03java 結合jQuery實現(xiàn)跨域名獲取數(shù)據(jù)的方法
下面小編就為大家?guī)硪黄猨ava 結合jQuery實現(xiàn)跨域名獲取數(shù)據(jù)的方法。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-05-05