Mybatis之limit、RowBounds和分页插件实现分页(学习笔记10)

本文介绍了在MyBatis中使用limit和RowBounds两种方式实现分页查询,包括SQL语句编写、mapper.xml配置和测试类的使用。同时提到了RowBounds的使用方法以及分页插件PageHelper的简要应用。
摘要由CSDN通过智能技术生成

一、limit实现分页:

limit 的sql语句

SELECT * FROM `user`
LIMIT m,n; //从m开始,到n结束

SELECT * FROM `user`
LIMIT n;   //从0开始到n结束

1、创建抽象方法

  //分页查询
    List<User> getLimitUser(Map<String,Integer> map);

2、配置mapper.xml文件

<!--因为实体类中的属性和数据库中的表列不一样所以需要创建相应的resultMap映射-->
    <resultMap id="abc" type="User">
        <result property="password" column="pwd"/>
    </resultMap>

    <select id="getLimitUser" parameterType="map" resultMap="abc">
        select * from mybatis1.user limit #{m},#{n};
    </select>

3、创建测试类

  @Test
    public void testLimit(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        
        
        //map要是忘记了看前面的学习笔记
        Map<String,Integer> map = new HashMap<String,Integer>();
        map.put("m",0);
        map.put("n",5);

        logger.info(map);

        List<User> userList = mapper.getLimitUser(map);

        for (User user : userList) {
            System.out.println(user);
        }


        sqlSession.close();

    }

二、RowBounds实现分页

同样的三个步骤:抽象类 —》mapper.xml—》测试类

实体类:这里的实体类不用传参数

 //RowBounds分页查询
    List<User> getRowBoundsUser();

mapper.xml:这里的sql语句就是查询全部的语句,因为RowBounds的分页功能是通过java代码来实现的

<select id="getRowBoundsUser" resultMap="abc">
        select * from mybatis1.user;
    </select>

测试类:主要区别就在于这里通过RowBounds来实现分页用到的是SqlSession 提供的数据库执行 SQL 命令的方法(现在不怎么用了)

  @Test
    public void testgetRowBoundsUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        
        //通过SqlSession的方法查询数据
        List<User> userList = sqlSession.selectList("com.li.dao.UserMapper.getRowBoundsUser");
        
        for (User user : userList) {
            System.out.println(user);
        }


        sqlSession.close();

    }

RowBounds类:

public class RowBounds {
    public static final int NO_ROW_OFFSET = 0;
    public static final int NO_ROW_LIMIT = 2147483647;
    public static final org.apache.ibatis.session.RowBounds DEFAULT;
    private final int offset;
    private final int limit;

    public RowBounds() { /* compiled code */ }

    public RowBounds(int offset, int limit) { /* compiled code */ }

    public int getOffset() { /* compiled code */ }

    public int getLimit() { /* compiled code */ }
}

分页实现是用到了sqlSession里selectList的重载,这个方法需要三个参数,第二个参数我们没有直接为空就行

@Test
    public void testgetRowBoundsUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        //创建一个RowBounds,用到它的构造方法实现分页,两个参数一个是分页头,一个是分页尾
        RowBounds rowBounds = new RowBounds(0,2);

        //通过SqlSession的方法查询数据
        List<User> userList = sqlSession.selectList("com.li.dao.UserMapper.getRowBoundsUser",null,rowBounds);

        for (User user : userList) {
            System.out.println(user);
        }


        sqlSession.close();

    }

分页插件:MyBatis 分页插件 PageHelper

需要用到的时候按照官网文档操作即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一年找不到工作就去厂里大螺丝

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

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

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

打赏作者

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

抵扣说明:

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

余额充值