Java学习总结--060 MyBatis下的分页实现

这篇博客总结了在Java中使用MyBatis进行分页实现的两种方法:通过`limit`和`RowBounds`。详细介绍了如何编写DAO接口、Mapper映射文件以及测试代码。文中提到`RowBounds`实际上是封装了`limit`,`limit`是在SQL层面完成分页,而`RowBounds`则在代码层面实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. mysql的分页语句

select * from user limit #{startIndex},#{pageSize};
# startIndex : 起始位置 ,默认是0开始
# pageSize :页面大小
# 如何计算出当前页面
currentPage = (currentPage-1)* pageSize  

2.使用limit实现分页【##】

1) 编写dao接口
//查询全部用户实现分页
List<User> selectUserByLimit(Map<String,Integer> map);
2) 编写对应mapper映射文件的方法

【参数我们可以使用map封装,方便参数传递】

<select id="selectUserByLimit" parameterType="Map" resultType="User">
    select * from mybatis.user limit #{startIndex},#{pageSize}
</select>
3)测试

【模拟分页数据:currentPage,pageSize】

@Test
public void selectUserByLimit(){

    //创建sqlSession
    SqlSessionFactory sqlSessionFactory = MyBatisUtils.getSqlSessionFactory();
    SqlSession sqlSession = sqlSessionFactory.openSession();

    //准备数据
    int currentPage = 2;//当前是第几页
    int pageSize = 2; //页面大小

    Map<String, Integer> map = new HashMap<String, Integer>();
    map.put("startIndex",(currentPage-1)*pageSize);
    map.put("pageSize",pageSize);

    //测试
    UserDao mapper = sqlSession.getMapper(UserDao.class);
    List<User> users = mapper.selectUserByLimit(map);

    for (User user : users) {
        System.out.println(user);
    }
    sqlSession.close();//关闭连接
}

3. 使用RowBounds实现分页(了解)

1)写接口
//查询全部用户实现分页使用RowBounds
List<User> selectUserByRowBounds();
2)写Mapper映射文件
<select id="selectUserByRowBounds" resultType="User">
    select * from mybatis.user
</select>
3)编写测试代码
@Test
public void selectUserByRowBounds(){
    //创建sqlSession
    SqlSessionFactory sqlSessionFactory = MyBatisUtils.getSqlSessionFactory();
    SqlSession sqlSession = sqlSessionFactory.openSession();

    int currentPage = 2; //当前页
    int pageSize = 2; //页面大小

    RowBounds rowBounds = new RowBounds((currentPage - 1) * pageSize, pageSize);

    //注意点;使用RowBounds就不能使用getMapper了
    //selectList: 接收一个List
    //selectMap: 接收一个Map
    //selectOne : 接收只有一个对象的时候

    List<User> users = sqlSession.selectList("com.kuang.dao.UserDao.selectUserByRowBounds", null, rowBounds);

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

limit 和 rowBounds区别

  • rowBounds 本质就是封装了limit
  • limit 是在SQL层面实现分页
  • rowBounds 在代码层面实现分页
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值