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));