參考文檔:https://mybatis.plus/guide/crud-interface.html
MyBatis-Plus自帶的CRUD方法分為Mapper層和Service層,大多數功能是重疊的,本文章只說明Service層CRUD接口
說明:
通用 Service CRUD 封裝IService接口,進一步封裝 CRUD 采用 get 查詢單行 remove 刪除 list 查詢集合 page 分頁 前綴命名方式區分 Mapper 層避免混淆,
泛型 T 為任意實體對象
建議如果存在自定義通用 Service 方法的可能,請創建自己的 IBaseService 繼承 Mybatis-Plus 提供的基類
對象 Wrapper 為 條件構造器
1. 新增方法
1.1 save
/** * 插入一條記錄(選擇字段,策略插入) * @param entity 實體對象 */ boolean save(T entity);
1.2 saveBatch
/** * 插入(批量) * @param entityList 實體對象集合 */ boolean saveBatch(Collection<T> entityList); /** * 插入(批量) * @param entityList 實體對象集合 * @param batchSize 插入批次數量 */ boolean saveBatch(Collection<T> entityList, int batchSize);
1.3 saveOrUpdate
/** * TableId 注解存在更新記錄,否插入一條記錄 * @param entity 實體對象 */ boolean saveOrUpdate(T entity);
1.4 saveOrUpdateBatch
/** * 批量修改插入 * @param entityList 實體對象集合 */ boolean saveOrUpdateBatch(Collection<T> entityList); /** * 批量修改插入 * @param entityList 實體對象集合 * @param batchSize 每次的數量 */ boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize);
2. 刪除方法
2.1 remove
/** * 根據 entity 條件,刪除記錄 * @param queryWrapper 實體包裝類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ boolean remove(Wrapper<T> queryWrapper);
2.2 removeById
/** * 根據 ID 刪除 * @param id 主鍵ID */ boolean removeById(Serializable id);
2.3 removeByIds
/** * 刪除(根據ID 批量刪除) * @param idList 主鍵ID列表 */ boolean removeByIds(Collection<? extends Serializable> idList);
2.4 removeByMap
/** * 根據 columnMap 條件,刪除記錄 * @param columnMap 表字段 map 對象 */ boolean removeByMap(Map<String, Object> columnMap);
3. 修改方法
3.1 update
/** * 根據 whereEntity 條件,更新記錄 * @param entity 實體對象 * @param updateWrapper 實體對象封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper} */ boolean update(T entity, Wrapper<T> updateWrapper);
3.2 updateById
/** * 根據 ID 選擇修改 * @param entity 實體對象 */ boolean updateById(T entity);
3.3 updateBatchById
/** * 根據ID 批量更新 * @param entityList 實體對象集合 * @param batchSize 更新批次數量 */ boolean updateBatchById(Collection<T> entityList, int batchSize);
4. 查詢方法
4.1 getById
/** * 根據 ID 查詢 * @param id 主鍵ID */ T getById(Serializable id);
4.2 getOne
/** * 根據 Wrapper,查詢一條記錄 * 結果集,如果是多個會拋出異常,隨機取一條加上限制條件 wrapper.last("LIMIT 1") * * @param queryWrapper 實體對象封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ T getOne(Wrapper<T> queryWrapper); /** * 根據 Wrapper,查詢一條記錄 * @param queryWrapper 實體對象封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} * @param throwEx 有多個 result 是否拋出異常 */ T getOne(Wrapper<T> queryWrapper, boolean throwEx);
4.2 getMap
/** * 根據 Wrapper,查詢一條記錄,返回Map格式 * @param queryWrapper 實體對象封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ Map<String, Object> getMap(Wrapper<T> queryWrapper);
4.3 getObj
/** * 根據 Wrapper,查詢一條記錄 * @param queryWrapper 實體對象封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ Object getObj(Wrapper<T> queryWrapper);
4.4 count
/** * 根據 Wrapper 條件,查詢總記錄數 * @param queryWrapper 實體對象封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ int count(Wrapper<T> queryWrapper);
4.5 list
/** * 查詢列表 * @param queryWrapper 實體對象封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ List<T> list(Wrapper<T> queryWrapper);
4.6 listMaps
/** * 查詢列表 * @param queryWrapper 實體對象封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ List<Map<String, Object>> listMaps(Wrapper<T> queryWrapper);
4.7 listObjs
/** * 根據 Wrapper 條件,查詢全部記錄 * @param queryWrapper 實體對象封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ List<Object> listObjs(Wrapper<T> queryWrapper);
4.8 page
/** * 翻頁查詢 * @param page 翻頁對象 * @param queryWrapper 實體對象封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ IPage<T> page(IPage<T> page, Wrapper<T> queryWrapper);
4.9 pageMaps
/** * 翻頁查詢 * @param page 翻頁對象 * @param queryWrapper 實體對象封裝操作類 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ IPage<Map<String, Object>> pageMaps(IPage<T> page, Wrapper<T> queryWrapper);
