Mybatis Plus Mapper源碼接口解析
說明:
- 通用 CRUD 封裝BaseMapper接口,爲
Mybatis-Plus
啓動時自動解析實體表關係映射轉換爲Mybatis
內部對象注入容器 - 泛型
T
爲任意實體對象 - 參數
Serializable
爲任意類型主鍵Mybatis-Plus
不推薦使用複合主鍵約定每一張表都有自己的唯一id
主鍵 - 對象
Wrapper
爲 條件構造器
/**
* <p>
* 插入一條記錄
* </p>
*
* @param entity 實體對象
* @return 插入成功記錄數
*/
int insert(T entity);
/**
* <p>
* 根據 ID 刪除
* </p>
*
* @param id 主鍵ID
* @return 刪除成功記錄數
*/
int deleteById(Serializable id);
/**
* <p>
* 根據 columnMap 條件,刪除記錄
* </p>
*
* @param columnMap 表字段 map 對象
* @return 刪除成功記錄數
*/
int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
/**
* <p>
* 根據 entity 條件,刪除記錄
* </p>
*
* @param wrapper 實體對象封裝操作類(可以爲 null)
* @return 刪除成功記錄數
*/
int delete(@Param(Constants.WRAPPER) Wrapper<T> wrapper);
/**
* <p>
* 刪除(根據ID 批量刪除)
* </p>
*
* @param idList 主鍵ID列表(不能爲 null 以及 empty)
* @return 刪除成功記錄數
*/
int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
/**
* <p>
* 根據 ID 修改
* </p>
*
* @param entity 實體對象
* @return 修改成功記錄數
*/
int updateById(@Param(Constants.ENTITY) T entity);
/**
* <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);
/**
* <p>
* 根據 ID 查詢
* </p>
*
* @param id 主鍵ID
* @return 實體
*/
T selectById(Serializable id);
/**
* <p>
* 查詢(根據ID 批量查詢)
* </p>
*
* @param idList 主鍵ID列表(不能爲 null 以及 empty)
* @return 實體集合
*/
List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
/**
* <p>
* 查詢(根據 columnMap 條件)
* </p>
*
* @param columnMap 表字段 map 對象
* @return 實體集合
*/
List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
/**
* <p>
* 根據 entity 條件,查詢一條記錄
* </p>
* 如果邏輯非唯一該方法不會自動替您 limit 1 你需要 wrapper.last("limit 1") 設置唯一性。
* @param queryWrapper 實體對象
* @return 實體
*/
T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
/**
* <p>
* 根據 Wrapper 條件,查詢總記錄數
* </p>
*
* @param queryWrapper 實體對象
* @return 滿足條件記錄數
*/
Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
/**
* <p>
* 根據 entity 條件,查詢全部記錄
* </p>
*
* @param queryWrapper 實體對象封裝操作類(可以爲 null)
* @return 實體集合
*/
List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
/**
* <p>
* 根據 Wrapper 條件,查詢全部記錄
* </p>
*
* @param queryWrapper 實體對象封裝操作類(可以爲 null)
* @return 字段映射對象 Map 集合
*/
List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
/**
* <p>
* 根據 Wrapper 條件,查詢全部記錄
* 注意: 只返回第一個字段的值
* </p>
*
* @param queryWrapper 實體對象封裝操作類(可以爲 null)
* @return 字段映射對象集合
*/
List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
/**
* <p>
* 根據 entity 條件,查詢全部記錄(並翻頁)
* </p>
*
* @param page 分頁查詢條件(可以爲 RowBounds.DEFAULT)
* @param queryWrapper 實體對象封裝操作類(可以爲 null)
* @return 實體分頁對象
*/
IPage<T> selectPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
/**
* <p>
* 根據 Wrapper 條件,查詢全部記錄(並翻頁)
* </p>
*
* @param page 分頁查詢條件
* @param queryWrapper 實體對象封裝操作類
* @return 字段映射對象 Map 分頁對象
*/
IPage<Map<String, Object>> selectMapsPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);