1、简单查询
MP既可以根据ID查询某条记录,也可以通过多个id批量查询,完成了动态sql的foreach的功能。
@Test
public void testSelect1() {
User user = userMapper.selectById(1);//单个查询
List<User> users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));//查询id为1,2,3的记录
}
2、条件查询
通过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);
}
3、分页查询
3.1添加分页插件
MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能。
配置类中添加@Bean配置
3.3.x及以下版本用此写法
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
3.4.0及以上用新写法
@Bean
public MybatisPlusInterceptor MybatisPlusInterceptor() {
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
//乐观锁
mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
//分页配置
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return mybatisPlusInterceptor;
}
3.2测试selectPage分页
测试:最终通过page对象获取相关数据
@Test
public void testSelectPage() {
Page<User> page = new Page(1,3);
Page<User> userPage = userMapper.selectPage(page, null);
//返回对象得到分页所有数据
long pages = userPage.getPages(); //总页数
long current = userPage.getCurrent(); //当前页
List<User> records = userPage.getRecords(); //查询数据集合
long total = userPage.getTotal(); //总记录数
boolean hasNext = userPage.hasNext(); //下一页
boolean hasPrevious = userPage.hasPrevious(); //上一页
System.out.println("总页数为:"+pages);
System.out.println("当前页为第:"+current+"页");
System.out.println(records);
System.out.println("总记录数为:"+total);
System.out.println(hasNext?"有下一页":"无下一页");
System.out.println(hasPrevious?"有上一页":"无上一页");
}
当前数据库如上图,有7条记录,测试一下能否查询成功吧
由日志可见,我们成功查询到了七条数据,并且打印出了第一页的三条数据,分页查询成功。