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>
经验分享 程序员 微信小程序 职场和发展