查询
通过Id批量查询和单一查询
//多个id批量查询
@Test
public void testSelect1() {
List<User> users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));
userMapper.selectById(1);
System.out.println(users);
}
简单的条件查询
不常使用,我们一般使用wrapper操作。
通过map封装查询条件
注意:map中的key对应数据库中的列名。如:数据库user_id,实体类是userId,这时map的key需要填写user_id
//简单条件查询
@Test
public void testSelect2() {
Map<String, Object> columnMap = new HashMap<>();
columnMap.put("name","Jack");
columnMap.put("age",20);
List<User> users = userMapper.selectByMap(columnMap);
System.out.println(users);
}
分页
selectPage使用
- 第一步导入MybatisPlus的分页插件:MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能
- 在Mp配置类中注册分页插件
/**
* 分页查询插件
*
* @return
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
- 创建Page对象,传入两个参数(当前页数,每页显示几条数据)
- 调用mapper的selectPage方法传入参数,获取对应的数据。
/**
* 分页查询,首先引入分页查询插件
*/
@Test
void contextLoad6() {
// 开启分页,创建分页对象
Page<User> page = new Page<>(1, 3);
// 获取分页数据,null代表查询无条件
Page<User> userPage = userMapper.selectPage(page, null);
// 测试分页数据
List<User> records = userPage.getRecords();
// 获取总页数
long pages = userPage.getPages();
// 获取当前页
long current = userPage.getCurrent();
System.out.println(records);
System.out.println(pages);
System.out.println(current);
}
selectMapsPage使用
投影我们制定想要的列,其他的管
当指定了特定的查询列时,希望分页结果列表只返回被查询的列,而不是很多null值 测试selectMapsPage分页:结果集是Map
@Test
public void testSelectMapsPage() {
//Page不需要泛型
Page<Map<String, Object>> page = newPage<>(1, 5);
Page<Map<String, Object>> pageParam = userMapper.selectMapsPage(page, null);
List<Map<String, Object>> records = pageParam.getRecords();
records.forEach(System.out::println);
System.out.println(pageParam.getCurrent());
System.out.println(pageParam.getPages());
System.out.println(pageParam.getSize());
System.out.println(pageParam.getTotal());
System.out.println(pageParam.hasNext());
System.out.println(pageParam.hasPrevious());
}