BaseMapper
是 MyBatis-Plus 提供的一个核心接口,目的是简化 MyBatis 中常见的增、删、改、查操作。
通过继承 BaseMapper
,可以直接使用该接口提供的通用方法,而不需要编写繁琐的 SQL 语句。
public interface TUserRoleRelMapper extends BaseMapper<TUserRoleRel> {
}
对于一些复杂的查询或自定义 SQL 语句,可以通过 @Select
、@Update
等注解来实现,或者通过 Wrapper
构建复杂查询。
增(Insert)
方法 | 描述 |
---|
insert(T entity) | 插入一条数据,字段值为 null 的字段会插入为 NULL ,除非字段有默认值。 |
insertBatch(List entityList) | 批量插入多条数据。 |
BaseMapper<User> userMapper;
userMapper.insert(new User("John", 30)); // 插入一条数据
删(Delete)
方法 | 描述 |
---|
deleteById(Serializable id) | 根据 ID 删除记录 |
deleteBatchIds(Collection<? extends Serializable> idList) | 批量删除记录,通过 ID 列表进行删除 |
delete(QueryWrapper<T> queryWrapper) | 根据条件删除记录。QueryWrapper 用于构建删除条件 |
userMapper.deleteById(1L); // 根据 ID 删除
改(Update)
方法 | 描述 |
---|
updateById(T entity) | 根据 ID 更新一条记录,null 字段不会被更新。 |
update(T entity, Wrapper<T> updateWrapper) | 根据条件更新记录,Wrapper 用于构建更新条件。 |
updateBatchById(List<T> entityList) | 批量更新记录。 |
User user = new User();
user.setId(1L);
user.setName("Jane");
userMapper.updateById(user); // 根据 ID 更新用户信息
查(Select)
方法 | 描述 |
---|
selectById(Serializable id) | 根据 ID 查询记录 |
selectOne(Wrapper<T> queryWrapper) | 根据条件查询一条记录,查询到多条记录会抛出异常 |
selectList(Wrapper<T> queryWrapper) | 根据条件查询多条记录,Wrapper 用于构建查询条件 |
selectBatchIds(Collection<? extends Serializable> idList) | 批量查询多条记录,根据 ID 列表查询 |
selectMaps(Wrapper<T> queryWrapper) | 根据条件查询返回 Map 类型结果,键是字段名,值是字段值 |
User user = userMapper.selectById(1L); // 根据 ID 查询
List<User> users = userMapper.selectList(new QueryWrapper<User>().eq("age", 30)); // 查询年龄为 30 的用户
List<User> users = userMapper.selectBatchIds(Arrays.asList(1L, 2L, 3L)); // 批量查询
分页查询
方法 | 描述 |
---|
selectPage(Page<T> page, Wrapper<T> queryWrapper) | 分页查询,返回 IPage 对象,包含分页信息和查询结果 |
Page<T> | 用于分页查询,传入当前页和每页条数 |
// 创建分页对象,当前页为 1,每页 10 条
Page<User> page = new Page<>(1, 10);
// 创建查询条件
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 30); // 查询 age 为 30 的用户
// 执行分页查询
IPage<User> userPage = userMapper.selectPage(page, queryWrapper);
// 输出查询结果
userPage.getRecords().forEach(System.out::println);
简单查询(数量,是否存在)
方法 | 描述 |
---|
exists(Wrapper<T> queryWrapper) | 判断是否存在符合条件的记录 |
selectCount(Wrapper<T> queryWrapper) | 查询符合条件的记录数 |
int count = userMapper.selectCount(new QueryWrapper<User>().eq("age", 30)); // 查询年龄为 30 的用户数量