Mybatis分页使用(原生及插件两种方式)

文章介绍了两种在Mybatis中实现分页查询的方法。一是使用自定义的分页工具类PageSupport,通过设置总记录数、页面大小等参数进行计算和查询。二是引入PageHelper插件,通过startPage方法简化分页操作。
摘要由CSDN通过智能技术生成

1:原生方式

(1):建立分页工具类:内含总记录数,总页码数,当前页码数,每页最大容量。

package cn.smbms.utils;

/**
 * @author Louis
 * @date 2023/6/6 18:44
 * @Description 分页工具类
 */
public class PageSupport {
    //当前页码数
    private int currentPageNo = 1;
    //总容量
    private int totalCount = 0;
    //页面容量
    private int pageSize = 0;
    //总页数
    private int totalPageCount = 1;

    /**流程如下:我们去数据库内得到总记录数后,传入到totalCount属性的set方法内,保存总记录数的同时,一并换算出总页数*/

    public int getCurrentPageNo() {
        return currentPageNo;
    }

    public void setCurrentPageNo(int currentPageNo) {
        if (currentPageNo>0){
            this.currentPageNo = currentPageNo;
        }else{
            this.currentPageNo = 1;
        }
    }

    public int getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(int totalCount) {
        if (totalCount>0){
            this.totalCount = totalCount;
            //一并计算出总页数
        }
        setTotalPageCount();
    }

    public  int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        if (pageSize>0){
            this.pageSize = pageSize;
        }else{
            this.pageSize = 2;
        }

    }

    public int getTotalPageCount() {
        return totalPageCount;
    }

    public void setTotalPageCount() {
        if(this.totalCount%this.pageSize==0){
            this.totalPageCount = this.totalCount/this.pageSize;
        }else{
            this.totalPageCount = (this.totalCount/this.pageSize)+1;
        }
    }
}

(2):建立接口方法(入参)

  public List<User> getUserListByLimit(@Param("pageStart") Integer pageStart,@Param("pageSize")Integer pageSize);

(3):对应Mapper.xml文件建立sql语句

    <!--分页查询用户信息-->
    <select id="getUserListByLimit" resultType="User">
        SELECT * FROM smbms_user u
        LIMIT #{pageStart},#{pageSize}
    </select>

(4):test测试

    @Test
    public void getUserListByLimitTest(){
        try{
            //获取
            PageSupport pageSupport = new PageSupport();
            sqlSession = MybatisUtil.getSqlSession();
            //执行
            int totalCount = sqlSession.getMapper(UserMapper.class).findUserCount();
            pageSupport.setPageSize(pageSupport.getPageSize());
            pageSupport.setTotalCount(totalCount);
            logger.info("当前记录一共有: "+pageSupport.getTotalCount()+"条");
            logger.info("每页显示: "+pageSupport.getPageSize()+"行");
            logger.info("一共有: "+pageSupport.getTotalPageCount()+"页");
            pageSupport.setCurrentPageNo(4);
            logger.info("查询第: "+pageSupport.getCurrentPageNo()+"页,结果如下: ");
            List<User> userList = sqlSession.getMapper(UserMapper.class).getUserListByLimit((pageSupport.getCurrentPageNo()-1)* pageSupport.getPageSize(),pageSupport.getPageSize());
            //解析
            if (userList.size()>0){
                for (User user : userList){
                    System.out.println(user.toString());
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            MybatisUtil.closeSqlSession(sqlSession);
        }
    }

2:插件方式

(1):插件导入(Mybatis配置文件中声明)

    <!--4:插件标签-->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>

(2):建立接口方法

(3):对应Mapper.xml文件建立sql语句(同上)

(4):test测试

 @Test
    public void getUserListByLimitUtilTest(){
        SqlSession sqlSession = null;
        List<User> userList = new ArrayList<User>();
        Page<User> objects = null;
        try{
            sqlSession = MybatisUtil.getSqlSession();
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            //核心代码
            objects = PageHelper.startPage(1,3);
            userList = userMapper.getUserList();
            //查看数据
            logger.info("当前记录一共有: "+objects.getTotal()+"条");
            logger.info("每页显示: "+ objects.getPageSize()+"行");
            logger.info("一共有: "+objects.getPages()+"页");
            logger.info("查询第: "+objects.getPageNum()+"页,结果如下: ");
            if(userList.size()>0){
                userList.forEach(System.out::println);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            MybatisUtil.closeSqlSession(sqlSession);
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗着,享受着

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值