MyBatis-Plus的BaseMapper提供17个通用CRUD方法:含基础增删改查(insert/selectById/updateById/deleteById)、批量操作(selectBatchIds/deleteBatchIds)、条件查询(selectByMap/selectOne/selectList/selectCount)、分页(selectPage/selectMapsPage)及高级更新删除(update/delete)。

MyBatis-Plus 的 BaseMapper 是通用 CRUD 的核心入口,只要你的 Mapper 接口继承它,就能直接使用约 17 个开箱即用的方法,无需写 SQL、不用配 XML,真正实现“零SQL开发”。
基础增删改查方法
这是最常用的一组,覆盖单条记录的完整生命周期:
-
insert(T entity):插入一条记录,主键策略由
@TableId注解控制(如 AUTO、ASSIGN_ID) -
selectById(Serializable id):按主键查询,返回单个实体;查不到时返回
null,不是空集合 -
updateById(T entity):根据实体的主键字段更新其他非主键字段(只更新非 null 字段,除非配置了
updateStrategy) - deleteById(Serializable id):按主键删除一条记录
批量与条件操作方法
适用于多数据或动态筛选场景,灵活性更强:
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
- selectBatchIds(Collection<?> idList):传入 ID 列表,批量查询对应记录
- deleteBatchIds(Collection<?> idList):批量按 ID 删除
-
selectByMap(Map<String, Object> columnMap):以字段名→值的 Map 做等值查询(如
{"status": 1, "type": "user"}) - deleteByMap(Map<String, Object> columnMap):同上逻辑,用于等值删除
-
selectOne(Wrapper<T> wrapper):用
QueryWrapper或LambdaQueryWrapper构建条件,返回至多一条结果;结果多于一条会抛异常 - selectList(Wrapper<T> wrapper):同上条件,但返回完整列表
- selectCount(Wrapper<T> wrapper):仅统计满足条件的记录数,不查具体数据
分页与结果封装方法
面向真实业务分页和轻量查询需求:
立即学习“Java免费学习笔记(深入)”;
- selectPage(Page<T> page, Wrapper<T> wrapper):带分页参数的列表查询,自动注入 LIMIT/OFFSET(依赖分页插件)
-
selectMaps(Wrapper<T> wrapper):返回
List<Map<String, Object>>,适合只查部分字段或动态列场景 - selectMapsPage(Page page, Wrapper wrapper):分页 + Map 结果组合
更新与删除的高级条件方法
支持更精细的数据变更控制:
-
update(T entity, Wrapper<T> updateWrapper):将
entity中的非 null 字段作为 SET 部分,updateWrapper作为 WHERE 条件(常用于修改指定条件下的某些字段) -
delete(Wrapper<T> wrapper):完全由条件构造器决定删除范围,比如
eq("status", 0).gt("create_time", yesterday)

















