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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通