美团一面:MyBatis 的 3 种分页,还有谁不会?
程序员的成长之路
共 4089字,需浏览 9分钟
· 2023-06-20
阅读本文大概需要 4 分钟。
来自:https://blog.csdn.net/weixin_43829443/article/details/119912221
一、Limit分页
limit ${startPos},${pageSize}
<if test="startPos!=null and pageSize!=null">
limit ${startPos},${pageSize}
if>
List getUserInfo1(Map ;map)
@Test
public void selectUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
//这里塞值
Mapparms = new HashMap<>();
parms.put("startPos","0");
parms.put("pageSize","5");
Listusers = mapper.getUserInfo1(parms);
for (User map: users){
System.out.println(map);
}
session.close();
}
limit 0,10; 0 代表从第0条数据开始 10 代表查10条数据 等到第二页的时候就是 limit 10,10;
二、RowBounds分页(不推荐使用)
offset:起始行数 limit:需要的数据行数
@Test
public void selectUserRowBounds() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
// Listusers = session.selectList("com.dy.mapper.UserMapper.getUserInfoRowBounds",null,new RowBounds(0, 5));
Listusers = mapper.getUserInfoRowBounds(new RowBounds(0,5));
for (User map: users){
System.out.println(map);
}
session.close();
}
List getUserInfoRowBounds(RowBounds rowBounds) ;
三、Mybatis_PageHelper分页插件
https://github.com/pagehelper/Mybatis-PageHelper
com.github.pagehelper
pagehelper
5.1.7
"com.github.pagehelper.PageInterceptor" />
//第一种,RowBounds方式的调用
Listlist = sqlSession.selectList("x.y.selectIf", null, new RowBounds(0, 10));
//第二种,Mapper接口方式的调用,推荐这种使用方式。
PageHelper.startPage(1, 10);
Listlist = userMapper.selectIf(1);
//第三种,Mapper接口方式的调用,推荐这种使用方式。
PageHelper.offsetPage(1, 10);
Listlist = userMapper.selectIf(1);
//第四种,参数方法调用
//存在以下 Mapper 接口方法,你不需要在 xml 处理后两个参数
public interface CountryMapper {
ListselectByPageNumSize( ;
@Param("user") User user,
@Param("pageNum") int pageNum,
@Param("pageSize") int pageSize)
}
//配置supportMethodsArguments=true
//在代码中直接调用:
Listlist = userMapper.selectByPageNumSize(user, 1, 10);
//第五种,参数对象
//如果 pageNum 和 pageSize 存在于 User 对象中,只要参数有值,也会被分页
//有如下 User 对象
public class User {
//其他fields
//下面两个参数名和 params 配置的名字一致
private Integer pageNum;
private Integer pageSize;
}
//存在以下 Mapper 接口方法,你不需要在 xml 处理后两个参数
public interface CountryMapper {
ListselectByPageNumSize(User user) ;
}
//当 user 中的 pageNum!= null && pageSize!= null 时,会自动分页
Listlist = userMapper.selectByPageNumSize(user);
//第六种,ISelect 接口方式
//jdk6,7用法,创建接口
Pagepage = PageHelper.startPage(1, 10).doSelectPage(new ISelect() {
@Override
public void doSelect() {
userMapper.selectGroupBy();
}
});
//jdk8 lambda用法
Pagepage = PageHelper.startPage(1, 10).doSelectPage(()-> userMapper.selectGroupBy());
//也可以直接返回PageInfo,注意doSelectPageInfo方法和doSelectPage
pageInfo = PageHelper.startPage(1, 10).doSelectPageInfo(new ISelect() {
@Override
public void doSelect() {
userMapper.selectGroupBy();
}
});
//对应的lambda用法
pageInfo = PageHelper.startPage(1, 10).doSelectPageInfo(() -> userMapper.selectGroupBy());
//count查询,返回一个查询语句的count数
long total = PageHelper.count(new ISelect() {
@Override
public void doSelect() {
userMapper.selectLike(user);
}
});
//lambda
total = PageHelper.count(()->userMapper.selectLike(user));
推荐阅读:
互联网初中高级大厂面试题(9个G) 内容包含Java基础、JavaWeb、MySQL性能优化、JVM、锁、百万并发、消息队列、高性能缓存、反射、Spring全家桶原理、微服务、Zookeeper......等技术栈!
⬇戳阅读原文领取! 朕已阅
评论
以数字化转型赋能新型工业化的行业路径:装备制造|以数字化转型赋能新型工业化系列谈(十)
编者按习近平总书记指出,“新时代新征程,以中国式现代化全面推进强国建设、民族复兴伟业,实现新型工业化是关键任务”。为贯彻落实习近平总书记对推进新型工业化作出的重要指示和全国新型工业化推进大会精神,在“赛迪问道数字转型”的研究基础上,赛迪研究院信软所数字化转型课题组聚焦“以数字化转型赋能新型工业化”主
工业互联网世界
0
中华人民共和国和法兰西共和国关于人工智能和全球治理的联合声明
中国邀请法国参加2024世界人工智能大会暨人工智能全球治理高级别会议。冲击万店,汉堡界能跑出下一个蜜雪冰城吗?应法兰西共和国总统埃马纽埃尔·马克龙邀请,中华人民共和国主席习近平于2024年5月5日至7日对法国进行国事访问。在两国建交60周年之际,两国元首重申共同致力于深化2023年4月5日至7日法兰
亿欧网
0
贾跃亭称将通过个人IP商业化赚钱还债;苹果推出史上最薄产品;特斯拉再裁员,多个大部门几乎团灭
苹果春季发布会:M4芯片如期而至,新款iPad Pro国行起售价8999北京时间周二(5月7日)晚,苹果公司在线上举办了Apple特别活动,俗称“春季新品发布会”。整体来看,苹果发布了iPad Pro、iPad Air、Apple Pencil Pro三款主要硬件产品。其中最重磅的当属新版iPad
亿欧网
0
中枪的怎么又是百度?
文 | 阑夕以前说到百度这家公司的槽点,主要还是「上有所好,下必甚焉」的问题,老板想要什么,底下的人就汇报什么,最后把老板骗出去丢人。但是百度公关副总裁接连几天的神操作,又给出了卧龙之外的凤雏答案,那就是老板好像也没做错什么,但经不住管理团队里有人偏要「造」。懈怠的错误和勤奋的愚蠢,就像是屎味的巧克
阑夕
7
低空经济20人|亿维特任文广:空中出行的梦想实现家
近日,亿维特(南京)航空科技有限公司自主研制的电动垂直起降飞机(eVTOL)ET9原型机成功完成首飞。本期“低空经济20人”系列邀请亿维特创始人、董事长任文广,分享ET9的技术特点及对先进空中交通(AAM)行业的思考和见解。(eVTOL,全称是electric Vertical Take-off a
亿欧网
0
接班张勇,46岁的她逆势翻盘
双手改变命运不是口号,而是真实发生的。冲击万店,汉堡界能跑出下一个蜜雪冰城吗?回到29年前,17岁的杨利娟不会想到,挖她跳槽的那家叫“海什么”的火锅店,有朝一日会成为中国最大的连锁火锅品牌。而由于家境困难早早辍学、背了一身债的她,日后会成为管理十几万员工的海底捞首席执行官。听上去,这是一部大女主“升
亿欧网
0
伴学周签 | 什么是阿里人常说的铁军精神 ?
每周一问,共同学习关于茅庐学堂茅庐学堂总结提炼了阿里24年战略落地、组织升级、企业管理和干部培养的实践精华,并结合8年来服务超过300家行业TOP企业的实践打磨,为成长型企业战略落地组织升级提供定制式陪伴咨询服务。想要深入了解茅庐学堂服务欢迎添加学长微信或致电15394275373
茅庐学堂
0