Mybatis学习笔记--实现分页

本文章涉及环境版本:

  • mysql 5.7
  • Mybatis 3.5.x
  • Maven 3.6.x
  • JDK 1.8

项目代码仓库:
https://github.com/Gang-bb/Study-Record/tree/main/bzhan-mybatis-study
需要clone整个bzhan-mybatis-study项目
(整体是一个maven多module工程)
该文章对应:《bzhan-mybatis-study04 》module项目

思考:为什么要分页?

  • 减少数据的处理量

1. limit分页

语法:SELECT * from user limit startIndex,pageSize;

mybatis代码实现:

  1. UserMapper接口中添加
List<User> getUserListByLimit(Map map);
  1. UserMapper.xml文件中添加查询语句
<select id="getUserListByLimit" parameterType="map" resultType="User">
    SELECT * from user limit #{startIndex},#{pageSize};
</select>
  1. 测试
 @Test
    public void testLimit(){
        SqlSession sqlSession = null;
        try {
            //1. 获取sqlsession对象
            sqlSession = MybatisUtil.openSession();
            
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            Map map = new HashMap();
            map.put("startIndex", 0);
            map.put("pageSize", 2);
            List<User> userList = userMapper.getUserListByLimit(map);


            for (User user: userList){
                System.out.println(user);
            }
        } finally {
            //3. 关闭sqlsession
            sqlSession.close();

        }
    }
  1. 结果

在这里插入图片描述

2. RowBounds分页

  1. UserMapper接口中添加
List<User> getUserRowBounds();
  1. UserMapper.xml文件中添加查询语句
<select id="getUserRowBounds" resultType="User">
    select * from user
</select>
  1. 测试
@Test
public void testRowBounds(){
    SqlSession sqlSession = null;
    try {
        //1. 获取sqlsession对象
        sqlSession = MybatisUtil.openSession();

        //RowBounds实现
        RowBounds rowBounds = new RowBounds(0, 2);

        //通过Java代码层面实现分页
        List<User> userList = sqlSession.selectList("getUserRowBounds",null,rowBounds);


        for (User user: userList){
            System.out.println(user);
        }
    } finally {
        //3. 关闭sqlsession
        sqlSession.close();

    }
}
  1. 结果

在这里插入图片描述

3. 分页插件–Mybatis-pagehelper

https://pagehelper.github.io/

看文档即可。很详细!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值