
前文我们学习了lambdaQuery() ,这个事不过是service层里一个普通的链式调用方法,他还有其他很多的方法在 MyBatis-Plus 中Service 层的核心是 IService 接口及其默认实现类 ServiceImpl。它们进一步封装了 CRUD 操作采用了 get查询单行、list查询集合、remove删除、save新增、update更新、page分页等前缀命名方式以区分 Mapper 层并避免混淆。以下是 MyBatis-Plus Service 层提供的常用方法分类整理新增操作 (Save)save(T entity)插入一条记录如果主键自增主键会自动回填。saveBatch(Collection entityList)批量插入默认每次提交 1000 条可自定义批次大小。saveOrUpdate(T entity)如果记录存在则更新不存在则插入依赖 TableId 注解判断。saveOrUpdateBatch(Collection entityList)批量执行插入或更新操作。删除操作 (Remove)removeById(Serializable id)根据主键 ID 删除记录。removeByMap(MapString, Object columnMap)根据 Map 中的键值对作为条件进行删除。remove(Wrapper queryWrapper)根据条件构造器Wrapper动态删除。removeByIds(Collection? extends Serializable idList)根据 ID 集合批量删除。更新操作 (Update)updateById(T entity)根据主键 ID 更新记录仅更新实体中非 null 的字段。update(T entity, Wrapper updateWrapper)根据条件构造器更新。第一个参数为实体可为 null第二个参数为 Wrapper 条件。update(Wrapper updateWrapper)仅根据 Wrapper 中的 set 和 where 条件进行更新。updateBatchById(Collection entityList)根据 ID 批量更新记录查询单条记录 (Get)getById(Serializable id)根据主键 ID 查询单条记录。getOne(Wrapper wrapper)查询单条记录。若查出多条默认不报错自动加 LIMIT 1若传入 getOne(wrapper, true)查出多条时会抛出异常。查询列表与集合 (List)list()查询表中的所有数据。list(Wrapper wrapper)根据条件构造器查询列表。listByIds(Collection? extends Serializable idList)根据 ID 集合批量查询。listByMap(MapString, Object columnMap)根据 Map 条件查询列表。分页与统计 (Page Count)page(Page page, Wrapper wrapper)分页查询返回包含数据和总数的分页对象。pageMaps(PageMapString, Object page, Wrapper wrapper)分页查询但将结果映射为 Map 集合。count()查询总记录数。count(Wrapper wrapper)根据条件统计记录总数。链式调用 (Chain Wrapper)lambdaQuery()返回 LambdaQueryChainWrapper支持使用 Lambda 表达式进行链式查询最后以 .one()、.list()、.count() 等方法结尾。getOne() 与 .one() 的核心区别正确的写法Useruserthis.lambdaQuery().eq(User::getPhone,13800138000).orderByDesc(User::getCreateTime).one();LambdaQueryWrapperUserwrappernewLambdaQueryWrapper();wrapper.eq(User::getPhone,13800138000).orderByDesc(User::getCreateTime);// 使用 this.getOne() 替代 this.selectOne()Useruserthis.getOne(wrapper);然两者都是查询单条记录但在处理多条数据时的表现有很大不同链式调用 .one()如果数据库中存在多条满足条件的记录它会直接抛出异常TooManyResultsException。this.getOne(wrapper)默认情况下底层 throwEx 为 false如果查出多条记录它不会报错而是会自动在 SQL 末尾加上 LIMIT 1只返回第一条记录。(注如果你希望 getOne 在查出多条时也抛出异常可以显式传入第二个参数this.getOne(wrapper, true))