Mybatis-Plus的分页查询和条件分页查询使用
MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能
1、简单的的分页
a、 selectPage分页查询 返回对应的List集会对象数据
public List<A> getPage(page,rows) {
Page<User> page = new Page<>(page,rows);
List<A> list = userMapper.selectPage(page, null);
page.getRecords().forEach(System.out::println);
System.out.println(page.getCurrent()); //当前页
System.out.println(page.getPages()); //总页数
System.out.println(page.getSize()); //每页显示的条数
System.out.println(page.getTotal()); //总记录数
System.out.println(page.hasNext()); //下一页
System.out.println(page.hasPrevious());//上一页
return list
}
b、 selectMapsPage分页:结果集是Map
publicMap<String, Object> getPage(page,rows) {
Page<User> page = new Page<>(page,rows);
IPage<Map<String, Object>> mapIPage = userMapper.selectMapsPage(page, null);
page.getRecords().forEach(System.out::println);
System.out.println(page.getCurrent()); //当前页
System.out.println(page.getPages()); //总页数
System.out.println(page.getSize()); //每页显示的条数
System.out.println(page.getTotal()); //总记录数
System.out.println(page.hasNext()); //下一页
System.out.println(page.hasPrevious());//上一页
return mapIPage
}
2、条件查询
a、 直接使用mybatis-plus 提供条件查询语句 进行条件分页查询
public List<A> getPage(page,rows) {
//条件
LambdaQueryWrapper<User> wrapper = wrappers.lambdaQuery();
wrapper.eq(A::getAge , 10);
wrapper.like(A::getUsername , "k");
Page<User> page = new Page<>(page,rows);
List<A> list = aMapper.selectPage(page, wrapper );
page.getRecords().forEach(System.out::println);
System.out.println(page.getCurrent()); //当前页
System.out.println(page.getPages()); //总页数
System.out.println(page.getSize()); //每页显示的条数
System.out.println(page.getTotal()); //总记录数
System.out.println(page.hasNext()); //下一页
System.out.println(page.hasPrevious());//上一页
return list
}
b、直接使用原生的sql语句进行 条件分页查询
controller层 OR serverImpl 层
public List<A> getPage(int page,int rows,int age,String name) {
Page<User> page = new Page<>(page,rows);
//条件
Ipage<A> a = aMapper.getA(page, age , name);
a.getRecords().forEach(System.out::println);
System.out.println(page.getCurrent()); //当前页
System.out.println(page.getPages()); //总页数
System.out.println(page.getSize()); //每页显示的条数
System.out.println(page.getTotal()); //总记录数
System.out.println(page.hasNext()); //下一页
System.out.println(page.hasPrevious());//上一页
return list
}
mapper层
@Mapper
public interface AMapper extends BaseMapper<A> {
IPage<A> getA(Page<A> page, @Param("age") int age, @Param("name") String name);
}
xml原生sql
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mapper.A">
<!-- 通用查询结果列 -->
<select id="getA" resultType="A">
SELECT *
FROM a_user
WHERE age = #{age}
<if test="name!=null and name!=">
and namelike CONCAT(%,#{name},%)
</if>
ORDER BY age DESC
</select>
</mapper>
