Mybatis-Plus 扩展查询及分页查询

扩展查询

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

// 查询(根据ID 批量查询)
List selectBatchIds(@Param(Constants.COLLECTION) Collection idList);
// 根据 entity 条件,查询全部记录
List selectList(@Param(Constants.WRAPPER) Wrapper queryWrapper);
// 查询(根据 columnMap 条件)
List selectByMap(@Param(Constants.COLUMN_MAP) Map columnMap);
// 根据 Wrapper 条件,查询全部记录
List> selectMaps(@Param(Constants.WRAPPER) Wrapper queryWrapper);
// 根据 Wrapper 条件,查询全部记录。注意: 只返回第一个字段的值
List selectObjs(@Param(Constants.WRAPPER) Wrapper queryWrapper);

// 根据 entity 条件,查询全部记录(并翻页)
IPage selectPage(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper);
// 根据 Wrapper 条件,查询全部记录(并翻页)
IPage> selectMapsPage(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper);
// 根据 Wrapper 条件,查询总记录数
Integer selectCount(@Param(Constants.WRAPPER) Wrapper queryWrapper);
 
  

 

参数说明
类型 参数名 描述
Serializable id 主键ID
Wrapper queryWrapper 实体对象封装操作类(可以为 null)
Collection idList 主键ID列表(不能为 null 以及 empty)
Map columnMap 表字段 map 对象
IPage page 分页查询条件(可以为 RowBounds.DEFAULT)
// 测试查询
@Test
void test1() {
    User user = userMapper.selectById(1L);
    System.out.println(user);
}

// 测试批量查询
@Test
void test2() {
    List users = userMapper.selectBatchIds(Arrays.asList(1L,2L,3L));
    users.forEach(System.out::println);
}

// 条件查询 map
@Test
void test3() {
    HashMap map = new HashMap<>();
    map.put("name","Tom");
    map.put("age","28");
    List users = userMapper.selectByMap(map);
    users.forEach(System.out::println);
}

分页查询

第一步:配置拦截器组件即可 ( MybatisPlusConfig.java )

// 分页插件
@Bean
public PaginationInterceptor paginationInterceptor() {
    PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
    // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
    // paginationInterceptor.setOverflow(false);
    // 设置最大单页限制数量,默认 500 条,-1 不受限制
    // paginationInterceptor.setLimit(500);
    // 开启 count 的 join 优化,只针对部分 left join
    //paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
    return paginationInterceptor;
}

第二步:直接使用 Page 对象

// 测试分页查询
   @Test
   void testPage() {
       // 参数一:当前页  参数二:页面大小
       Page page = new Page<>(2, 3);
       userMapper.selectPage(page, null);
       page.getRecords().forEach(System.out::println);
   }

结果:

 JsqlParserCountOptimize sql=SELECT  id,name,age,email,version,creat_time,update_time  FROM user
==>  Preparing: SELECT COUNT(1) FROM user 
==> Parameters: 
<==    Columns: COUNT(1)
<== Row: 5 ==>  Preparing: SELECT id,name,age,email,version,creat_time,update_time FROM user LIMIT 3,3 
==> Parameters: 
<==    Columns: id, name, age, email, version, creat_time, update_time
<==        Row: 4, Sandy, 21, [email protected], 1, null, null
<==        Row: 5, Billie, 111, [email protected], 1, null, 2020-03-23 00:41:24.458000
<==      Total: 2
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@38d525aa]
User(id=4, name=Sandy, age=21, [email protected], version=1, creatTime=null, updateTime=null)
User(id=5, name=Billie, age=111, [email protected], version=1, creatTime=null, updateTime=Mon Mar 23 00:41:24 CST 2020)

 

你可能感兴趣的:(Mybatis-Plus)