【Mybatis】10 实现分页 & 分页插件

回顾SQL分页查询

 

也就是说,在查询结果的最后控制返回的起始位置&记录数量

参数1:返回的开始位置

参数2:要返回的记录数

但是,如果说是只写了一个参数,直接表示参数2处理

LIMIT  [start index],size;

实际开发不会只写一个参数,用户默认打开一定是从第一条开始的

即 0 ,显示的记录数

 

实现Mybatis的分页查询

参数的数据类型选型问题,到底怎么注入参数才算合适?

如果频繁使用,不如自己封装这样一个参数类,狂神则使用万用Map演示的

Map万能就没什么太大必要取写了,我这里则封装一个参数类好了

@Alias("limit")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LimitSqlParam {
    private Integer startIndex;
    private Integer perSize;
}

把分页的方法参数写成这个

    List<User> getUserByLimit(LimitSqlParam sqlParam);

 

Mapper的SQL配置

 

测试结果

 

使用RowBounds实现分页【补充】

SQL不需要参数注入,而是通过RowBounds对象实现,

这跟我的Limit参数类不是一个道理吗?

 

我们的SQL方法不需要参数实现

List<User> getUserByRowBounds();

 

然后SQL语句更不需要SQL参数

 

测试时实现注入

暂时不明白第二个参数的意义是?

这种方法是注入方法的全限定名 + RowBounds对象实现

其返回的集合泛型默认为Object,这不泛型.jpg

复制代码
    @Test
    public void rowBoundsTest(){
        logger.info("- - - - TESTING - - - -");
        SqlSession sqlSession = MybatisUtil.getSqlSession(true);

        RowBounds rowBounds = new RowBounds(3, 4);

        List<User> list = sqlSession.selectList("cn.dai.mapper.UserMapper.getUserByRowBounds", null, rowBounds);

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

        sqlSession.close();
    }
复制代码

 

分页插件

Mybatis Page Helper

https://pagehelper.github.io/

如何使用

https://pagehelper.github.io/docs/howtouse/

实际上是根据Mybatis官方提供的插件扩展实现的

不过详细还得仔细读文档才知道

 

posted @   emdzz  阅读(239)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示