MyBatis-Plus 的内置方法

MyBatis-Plus 里能直接使用的内置方法(也就是不用自己写 SQL,就能调用的增删改查方法)。

这些方法主要来自 BaseMapper<T> 和 IService<T> / ServiceImpl<T> 。

1. BaseMapper<T> 常用方法

Mapper 继承 BaseMapper<T> 后,就自动有这些方法:

方法 作用
int insert(T entity) 插入一条记录
int deleteById(Serializable id) 根据主键 ID 删除
int deleteByMap(Map<String,Object> columnMap) 根据字段条件删除
int delete(Wrapper<T> wrapper) 根据条件删除
int updateById(T entity) 根据 ID 修改
int update(T entity, Wrapper<T> wrapper) 根据条件修改
T selectById(Serializable id) 根据 ID 查询
List<T> selectBatchIds(Collection<? extends Serializable> idList) 批量 ID 查询
List<T> selectByMap(Map<String,Object> columnMap) 根据字段条件查询
T selectOne(Wrapper<T> wrapper) 查询单条记录
List<T> selectList(Wrapper<T> wrapper) 查询列表
List<Map<String,Object>> selectMaps(Wrapper<T> wrapper) 查询返回 Map
List<Object> selectObjs(Wrapper<T> wrapper) 查询返回 Object 列表
Integer selectCount(Wrapper<T> wrapper) 查询数量
IPage<T> selectPage(IPage<T> page, Wrapper<T> wrapper) 分页查询
IPage<Map<String,Object>> selectMapsPage(IPage<T> page, Wrapper<T> wrapper) 分页 + Map 查询

2. IService<T> 常用方法

如果 Service 继承 IService<T>(通常配合 ServiceImpl 使用),还能多一些更方便的方法:

方法 作用
boolean save(T entity) 插入
boolean saveBatch(Collection<T> entityList) 批量插入
boolean saveOrUpdate(T entity) 插入或更新
boolean saveOrUpdateBatch(Collection<T> entityList) 批量插入或更新
boolean removeById(Serializable id) 根据 ID 删除
boolean removeByMap(Map<String,Object> columnMap) 根据条件删除
boolean remove(Wrapper<T> wrapper) 根据条件删除
boolean removeBatchByIds(Collection<? extends Serializable> idList) 批量删除
boolean updateById(T entity) 根据 ID 更新
boolean update(T entity, Wrapper<T> updateWrapper) 条件更新
boolean updateBatchById(Collection<T> entityList) 批量更新
T getById(Serializable id) 根据 ID 查询
Collection<T> listByIds(Collection<? extends Serializable> idList) 批量 ID 查询
Collection<T> listByMap(Map<String,Object> columnMap) Map 条件查询
T getOne(Wrapper<T> queryWrapper) 查询单条
T getOne(Wrapper<T> queryWrapper, boolean throwEx) 查询单条(控制是否抛异常)
Map<String,Object> getMap(Wrapper<T> queryWrapper) 返回 Map
long count(Wrapper<T> queryWrapper) 查询数量
List<T> list(Wrapper<T> queryWrapper) 条件查询列表
List<T> list() 查询所有
List<Map<String,Object>> listMaps(Wrapper<T> queryWrapper) 查询 Map 列表
List<Object> listObjs(Wrapper<T> queryWrapper) 查询对象集合
IPage<T> page(IPage<T> page, Wrapper<T> queryWrapper) 分页查询
IPage<Map<String,Object>> pageMaps(IPage<T> page, Wrapper<T> queryWrapper) 分页 + Map 查询
List<T> listBatchByIds(Collection<? extends Serializable> idList) 批量查询

3. 举个例子

比如你有 FileRecordMapper extends BaseMapper<FileRecord>,你就可以直接用:

plain 复制代码
// 插入
fileRecordMapper.insert(file);

// 删除
fileRecordMapper.deleteById(1);

// 条件查询
List<FileRecord> files = fileRecordMapper.selectList(
    Wrappers.<FileRecord>lambdaQuery()
        .le(FileRecord::getExpireAt, LocalDateTime.now())
        .eq(FileRecord::getDeleted, false)
);

如果你在 Service 里继承 ServiceImpl<FileRecordMapper, FileRecord>,还能这样用:

plain 复制代码
// 插入
fileRecordService.save(file);

// 根据条件查询
List<FileRecord> list = fileRecordService.list(
    Wrappers.<FileRecord>lambdaQuery().eq(FileRecord::getDeleted, false)
);

// 分页
IPage<FileRecord> page = fileRecordService.page(new Page<>(1, 10));
相关推荐
Mikko715 分钟前
用 Java 复刻了高中时在塞班上玩的「熔岩矿车」:纯 Swing、零依赖、没有一张图片,一个 jar 双击就能玩
java·游戏开发·swing
知了学历孙老师16 分钟前
小自考的校考和统考,出题方和难度差在哪
java·大数据·前端
Java爱好狂.35 分钟前
Java初学者如何一周速通SpringBoot!
java·spring boot·后端·spring·高并发·架构师·java面试
秋饼1 小时前
LLM API密钥动态轮换实战:Spring Vault + Spring AI + 多Provider路由
java·ai·技术分享·后端开发
zyseo82 小时前
谷歌SEO 准首页词挖掘脚本:找出排在第 8-20 名的隐藏流量
大数据·数据库·人工智能
福兮说3 小时前
JSON 格式正确,数据就可靠吗?我用一份自编配置检查类型与空值
java·前端·json
xiaogai_gai4 小时前
仅查询策略实战:从金蝶云·星空旗舰版定时拉取收料通知单
大数据·数据库·python
紧跟先前的步伐4 小时前
Go AI Agent 实战 03|Token、上下文窗口与模型调用成本
java·人工智能·golang
数据工匠老o5 小时前
异构数据库DDL同步:260条链路的结构变更自动适配方案
数据库·架构
const_qiu5 小时前
第四章 00:开篇 —— 从「会聊天」到「记得住、会干活、能协作」
java·开发语言·人工智能·python