MyBatis-Plus的BaseMapper常用方法

MyBatis-Plus的BaseMapper接口提供了针对单表的常用CRUD方法,自定义Mapper可通过继承BaseMapper的方式获取这些方法。

插入相关

// 插入一条记录
int insert(T entity);

删除相关

// 根据 ID 删除
int deleteById(Serializable id);

// 根据 columnMap 条件,删除记录(columnMap 表字段map对象)
int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);

// 根据 entity 条件,删除记录
// queryWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)
int delete(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

// 删除(根据ID 批量删除)
// idList 主键ID列表(不能为 null 以及 empty)
int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);

修改相关

// 根据 ID 修改
int updateById(@Param(Constants.ENTITY) T entity);

// 根据 whereEntity 条件,更新记录
int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper);

查询相关

// 根据 ID 查询
T selectById(Serializable id);

// 查询(根据ID 批量查询)
List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);

// 查询(根据 columnMap 条件)
List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);

// 根据 entity 条件,查询一条记录
T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

// 根据 Wrapper 条件,查询总记录数
Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

// 根据 entity 条件,查询全部记录
List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

// 根据 Wrapper 条件,查询全部记录
List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

// 根据 Wrapper 条件,查询全部记录(只返回第一个字段的值)
List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

// 根据 entity 条件,查询全部记录(并翻页)
<E extends IPage<T>> E selectPage(E page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

// 根据 Wrapper 条件,查询全部记录(并翻页)
<E extends IPage<Map<String, Object>>> E selectMapsPage(E page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

常用方法

BaseMapper中比较常用的有以下方法:

int insert(T entity);
int deleteById(Serializable id);
int updateById(@Param(Constants.ENTITY) T entity);
T selectById(Serializable id);
List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
<E extends IPage<T>> E selectPage(E page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

queryWrapper 用于封装查询条件,为 null 时表示无条件查询。

需要注意的是,MyBatisPlus配置了分页拦截器,selectPage分页查询功能才能正常使用。

MyBatisPlus配置示例

@Configuration
public class MpConfig {
    /**
     * 给 MybatisPlus 配置分页拦截器
     */
    @Bean
    public MybatisPlusInterceptor mpInterceptor() {
        MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
        mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mpInterceptor;
    }
}

测试方法示例

@Test
public void testSelectPage() {
    IPage page = new Page(2, 2);
    userMapper.selectPage(page, null);
    System.out.println("当前页: "+page.getCurrent());
    System.out.println("每页大小: "+page.getSize());
    System.out.println("总页数: "+page.getPages());
    System.out.println("总记录数: "+page.getTotal());
    System.out.println("当前页记录: "+page.getRecords());
}

如果要查看MyBatisPlus日志,还需在SpringBoot配置文件(如application.yml)中添加以下配置

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐