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 的用户数量