MyBatis-Plus使用(2)-CRUD接口
参考文档: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);