最后
Java架构学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。
还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
List getUserInfo1(Map<String,Object> map);
@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 对象中,只要参数有值,也会被分页
//有如下 User 对象
public class User {
//其他fields
//下面两个参数名和 params 配置的名字一致
private Integer pageNum;
private Integer pageSize;
}
//存在以下 Mapper 接口方法,你不需要在 xml 处理后两个参数
public interface CountryMapper {
List selectByPageNumSize(User user);
}
//当 user 中的 pageNum!= null && pageSize!= null 时,会自动分页
List list = userMapper.selectByPageNumSize(user);
//第六种,ISelect 接口方式
//jdk6,7用法,创建接口
Page page = PageHelper.startPage(1, 10).doSelectPage(new ISelect() {
@Override
public void doSelect() {
userMapper.selectGroupBy();
}
});
//jdk8 lambda用法
Page page = PageHelper.startPage(1, 10).doSelectPage(()-> userMapper.selectGroupBy());
//也可以直接返回PageInfo,注意doSelectPageInfo方法和doSelectPage
pageInfo = PageHelper.startPage(1, 10).doSelectPageInfo(new ISelect() {
@Override
public void doSelect() {
最后
按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。
学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。
“道路是曲折的,前途是光明的!”
a的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。
学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。
“道路是曲折的,前途是光明的!”
[外链图片转存中…(img-ubIyYcw8-1714866278372)]
[外链图片转存中…(img-cB2cq3GN-1714866278373)]