@Test
public void selectUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
//这里塞值
Map<String,Object> parms = new HashMap<>();
parms.put(“startPos”,“0”);
parms.put(“pageSize”,“5”);
List users = mapper.getUserInfo1(parms);
for (User map: users){
System.out.println(map);
}
session.close();
}
执行结果:
传入0,10时:
总结:
-
limit 0,10;
-
0 代表从第0条数据开始
-
10 代表查10条数据
-
等到第二页的时候就是 limit 10,10;
-
以此类推!
这些内容其实就时MySQL中的内容,不作再详细讲解了。
3
RowBounds分页(不推荐使用)
-
RowBounds帮我们省略了limit的内容,我们只需要在业务层关注分页即可!无须再传入指定数据!
-
但是,这个属于逻辑分页,即实际上sql查询的是所有的数据,在业务层进行了分页而已,比较占用内存,而且数据更新不及时,可能会有一定的滞后性!不推荐使用!
-
RowBounds对象有2个属性,offset和limit。
-
offset:起始行数
-
limit:需要的数据行数
-
因此,取出来的数据就是:从第offset+1行开始,取limit行
- 业务层代码:
@Test
public void selectUserRowBounds() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
// List users = session.selectList(“com.dy.mapper.UserMapper.getUserInfoRowBounds”,null,new RowBounds(0, 5));
List users = mapper.getUserInfoRowBounds(new RowBounds(0,5));
for (User map: users){
System.out.println(map);
}
session.close();
}
List getUserInfoRowBounds(RowBounds rowBounds);
select * from user
执行查看结果:
4
Mybatis_PageHelper分页插件
官方GitHub地址
官方地址:https://github.com/pagehelper/Mybatis-PageHelper
引入jar包
com.github.pagehelper
pagehelper
5.1.7
配置MyBatis核心配置文件
业务层代码
@Test
public void selectUserPageHelper() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
//第二种,Mapper接口方式的调用,推荐这种使用方式。
PageHelper.startPage(1, 3);
List list = mapper.getUserInfo();
//用PageInfo将包装起来
PageInfo page = new PageInfo(list);
for (User map: list){
System.out.println(map);
}
System.out.println(“page:—”+page);
session.close();
}
执行结果
总结
PageHelper还是很好用的,也是物理分页!
实际上我们一般用第二种比较多:Mapper接口方式的调用
//第一种,RowBounds方式的调用
List list = sqlSession.selectList(“x.y.selectIf”, null, new RowBounds(0, 10));
//第二种,Mapper接口方式的调用,推荐这种使用方式。
PageHelper.startPage(1, 10);
List list = userMapper.selectIf(1);
//第三种,Mapper接口方式的调用,推荐这种使用方式。
PageHelper.offsetPage(1, 10);
List list = userMapper.selectIf(1);
//第四种,参数方法调用
//存在以下 Mapper 接口方法,你不需要在 xml 处理后两个参数
public interface CountryMapper {
List selectByPageNumSize(
@Param(“user”) User user,
@Param(“pageNum”) int pageNum,
@Param(“pageSize”) int pageSize);
}
//配置supportMethodsArguments=true
//在代码中直接调用:
List list = userMapper.selectByPageNumSize(user, 1, 10);
//第五种,参数对象
//如果 pageNum 和 pageSize 存在于 User 对象中,只要参数有值,也会被分页
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://img-blog.csdnimg.cn/img_convert/fbb6ad2fa3d34e891efb1b528d4fd7e0.jpeg)
最后
由于篇幅限制,小编在此截出几张知识讲解的图解
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
由于篇幅限制,小编在此截出几张知识讲解的图解
[外链图片转存中…(img-HqaJB1IN-1712649488217)]
[外链图片转存中…(img-IbGrQyRx-1712649488218)]
[外链图片转存中…(img-Gk1rSYZn-1712649488218)]
[外链图片转存中…(img-eCRrGNOB-1712649488218)]
[外链图片转存中…(img-l0JF1MmN-1712649488218)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!