1. 程式人生 > >Mybats -Plus CRUD 介面

Mybats -Plus CRUD 介面

說明

  • 通用 CRUD 封裝BaseMapper 介面,為 Mybatis-Plus 啟動時自動解析實體表關係對映轉換為 Mybatis 內部物件注入容器
  • 泛型 T 為任意實體物件
  • 引數 Serializable 為任意型別主鍵 Mybatis-Plus 不推薦使用複合主鍵約定每一張表都有自己的唯一 id 主鍵
  • 物件 Wrapper 為 條件構造器

Mapper CRUD操作

insert

/**
 * <p>
 * 插入一條記錄
 * </p>
 *
 * @param entity 實體物件
 * @return 插入成功記錄數
 */
int insert(T entity)
;

deleteById

/**
 * <p>
 * 根據 ID 刪除
 * </p>
 *
 * @param id 主鍵ID
 * @return 刪除成功記錄數
 */
int deleteById(Serializable id);

deleteByMap

/**
 * <p>
 * 根據 columnMap 條件,刪除記錄
 * </p>
 *
 * @param columnMap 表字段 map 物件
 * @return 刪除成功記錄數
 */
int deleteByMap(@Param(Constants.COLUMN_MAP) Map<
String, Object>
columnMap);

delete

/**
 * <p>
 * 根據 entity 條件,刪除記錄
 * </p>
 *
 * @param queryWrapper 實體物件封裝操作類(可以為 null)
 * @return 刪除成功記錄數
 */
int delete(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

deleteBatchlds

/**
 * <p>
 * 刪除(根據ID 批量刪除)
 * </p>
 *
 * @param idList 主鍵ID列表(不能為 null 以及 empty)
 * @return 刪除成功記錄數
 */
int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);

updateById

/**
 * <p>
 * 根據 ID 修改
 * </p>
 *
 * @param entity 實體物件
 * @return 修改成功記錄數
 */
int updateById(@Param(Constants.ENTITY) T entity);

update

/**
 * <p>
 * 根據 whereEntity 條件,更新記錄
 * </p>
 *
 * @param entity        實體物件 (set 條件值,不能為 null)
 * @param updateWrapper 實體物件封裝操作類(可以為 null,裡面的 entity 用於生成 where 語句)
 * @return 修改成功記錄數
 */
int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper);

selectById

/**
 * <p>
 * 根據 ID 查詢
 * </p>
 *
 * @param id 主鍵ID
 * @return 實體
 */
T selectById(Serializable id);

selectBatchlds

/**
 * <p>
 * 查詢(根據ID 批量查詢)
 * </p>
 *
 * @param idList 主鍵ID列表(不能為 null 以及 empty)
 * @return 實體集合
 */
List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);

selectByMap

/**
 * <p>
 * 查詢(根據 columnMap 條件)
 * </p>
 *
 * @param columnMap 表字段 map 物件
 * @return 實體集合
 */
List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);

selectOne

/**
 * <p>
 * 根據 entity 條件,查詢一條記錄
 * </p>
 *
 * @param queryWrapper 實體物件
 * @return 實體
 */
T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

selectCount

/**
 * <p>
 * 根據 Wrapper 條件,查詢總記錄數
 * </p>
 *
 * @param queryWrapper 實體物件
 * @return 滿足條件記錄數
 */
Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

selectList

/**
 * <p>
 * 根據 entity 條件,查詢全部記錄
 * </p>
 *
 * @param queryWrapper 實體物件封裝操作類(可以為 null)
 * @return 實體集合
 */
List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

selectMaps

/**
 * <p>
 * 根據 Wrapper 條件,查詢全部記錄
 * </p>
 *
 * @param queryWrapper 實體物件封裝操作類(可以為 null)
 * @return 欄位對映物件 Map 集合
 */
List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

selectObjs

/**
 * <p>
 * 根據 Wrapper 條件,查詢全部記錄
 * 注意: 只返回第一個欄位的值
 * </p>
 *
 * @param queryWrapper 實體物件封裝操作類(可以為 null)
 * @return 欄位對映物件集合
 */
List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

selectPage

/**
 * <p>
 * 根據 entity 條件,查詢全部記錄(並翻頁)
 * </p>
 *
 * @param page         分頁查詢條件(可以為 RowBounds.DEFAULT)
 * @param queryWrapper 實體物件封裝操作類(可以為 null)
 * @return 實體分頁物件
 */
IPage<T> selectPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

selectMapsPage

/**
 * <p>
 * 根據 Wrapper 條件,查詢全部記錄(並翻頁)
 * </p>
 *
 * @param page         分頁查詢條件
 * @param queryWrapper 實體物件封裝操作類
 * @return 欄位對映物件 Map 分頁物件
 */
IPage<Map<String, Object>> selectMapsPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

service CRUD介面

  • 通用 Service CRUD 封裝IService 介面,進一步封裝 CRUD 採用 get 查詢單行 remove 刪除 list 查詢集合 page 分頁 字首命名方式區分 Mapper 層避免混淆,

  • 泛型 T 為任意實體物件

  • 建議如果存在自定義通用 Service 方法的可能,請建立自己的 IBaseService 繼承 Mybatis-Plus 提供的基類

  • 物件 Wrapper 為 條件構造器

  • 準備 service serviceImpl mapper

public interface Tservice extends IService<T> 

public class TserviceImpl extends ServiceImpl<TMapper , T>
                                    implements ISysRoleMenuService 

public interface TMapper extends BaseMapper<T>

save

/**
 * <p>
 * 插入一條記錄(選擇欄位,策略插入)
 * </p>
 *
 * @param entity 實體物件
 */
boolean save(T entity);

saveBatch

/**
 * <p>
 * 插入一條記錄(選擇欄位,策略插入)
 * </p>
 *
 * @param entity 實體物件
 */
boolean save(T entity);

saveOrUpdateBatch

/**
 * <p>
 * 批量修改插入
 * </p>
 *
 * @param entityList 實體物件集合
 */
boolean saveOrUpdateBatch(Collection<T> entityList);

saveOrUpdateBatch

/**
 * <p>
 * 批量修改插入
 * </p>
 *
 * @param entityList 實體物件集合
 * @param batchSize  每次的數量
 */
boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize);

removeById

/**
 * <p>
 * 根據 ID 刪除
 * </p>
 *
 * @param id 主鍵ID
 */
boolean removeById(Serializable id);

removeByMap

/**
 * <p>
 * 根據 columnMap 條件,刪除記錄
 * </p>
 *
 * @param columnMap 表字段 map 物件
 */
boolean removeByMap(Map<String, Object> columnMap);

remove

/**
 * <p>
 * 根據 entity 條件,刪除記錄
 * </p>
 *
 * @param queryWrapper 實體包裝類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
 */
boolean remove(Wrapper<T> queryWrapper);

removeByIds

/**
 * <p>
 * 刪除(根據ID 批量刪除)
 * </p>
 *
 * @param idList 主鍵ID列表
 */
boolean removeByIds(Collection<? extends Serializable> idList);

updateById

/**
 * <p>
 * 根據 ID 選擇修改
 * </p>
 *
 * @param entity 實體物件
 */
boolean updateById(T entity);

update

/**
 * <p>
 * 根據 whereEntity 條件,更新記錄
 * </p>
 *
 * @param entity        實體物件
 * @param updateWrapper 實體物件封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper}
 */
boolean update(T entity, Wrapper<T> updateWrapper);

updateBatchById

/**
 * <p>
 * 根據ID 批量更新
 * </p>
 *
 * @param entityList 實體物件集合
 * @param batchSize  更新批次數量
 */
boolean updateBatchById(Collection<T> entityList, int batchSize);

saveOrUpdate

/**
 * <p>
 * TableId 註解存在更新記錄,否插入一條記錄
 * </p>
 *
 * @param entity 實體物件
 */
boolean saveOrUpdate(T entity);

getById

/**
 * <p>
 * 根據 ID 查詢
 * </p>
 *
 * @param id 主鍵ID
 */
T getById(Serializable id);

listByIds

/**
 * <p>
 * 查詢(根據ID 批量查詢)
 * </p>
 *
 * @param idList 主鍵ID列表
 */
Collection<T> listByIds(Collection<? extends Serializable> idList);

listByMap

/**
 * <p>
 * 查詢(根據 columnMap 條件)
 * </p>
 *
 * @param columnMap 表字段 map 物件
 */
Collection<T> listByMap(Map<String, Object> columnMap);

getOne

/**
 * <p>
 * 根據 Wrapper,查詢一條記錄
 * </p>
 *
 * @param queryWrapper 實體物件封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
 * @param throwEx      有多個 result 是否丟擲異常
 */
T getOne(Wrapper<T> queryWrapper, boolean throwEx);

getMap

/**
 * <p>
 * 根據 Wrapper,查詢一條記錄
 * </p>
 *
 * @param queryWrapper 實體物件封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
 */
Map<String, Object> getMap(Wrapper<T> queryWrapper);

getObj

/**
 * <p>
 * 根據 Wrapper,查詢一條記錄
 * </p>
 *
 * @param queryWrapper 實體物件封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
 */
Object getObj(Wrapper<T> queryWrapper);

count

/**
 * <p>
 * 根據 Wrapper 條件,查詢總記錄數
 * </p>
 *
 * @param queryWrapper 實體物件封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
 */
int count(Wrapper<T> queryWrapper);

list

/**
 * <p>
 * 查詢列表
 * </p>
 *
 * @param queryWrapper 實體物件封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
 */
List<T> list(Wrapper<T> queryWrapper);

page

/**
 * <p>
 * 翻頁查詢
 * </p>
 *
 * @param page         翻頁物件
 * @param queryWrapper 實體物件封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
 */
IPage<T> page(IPage<T> page, Wrapper<T> queryWrapper);

listMaps

/**
 * <p>
 * 查詢列表
 * </p>
 *
 * @param queryWrapper 實體物件封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
 */
List<Map<String, Object>> listMaps(Wrapper<T> queryWrapper);

listObjs

/**
 * <p>
 * 根據 Wrapper 條件,查詢全部記錄
 * </p>
 *
 * @param queryWrapper 實體物件封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
 */
List<Object> listObjs(Wrapper<T> queryWrapper);

pageMaps

/**
 * <p>
 * 翻頁查詢
 * </p>
 *
 * @param page         翻頁物件
 * @param queryWrapper 實體物件封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
 */
IPage<Map<String, Object>> pageMaps(IPage<T> page, Wrapper<T> queryWrapper);