当前位置: 首页 > 知识库问答 >
问题:

java - mybatisPlus中如何将分页插件应用于自定义查询方法?

公西翼
2023-10-25

我想要通过在MybatisPlus的BaseMapper的子类接口上增加查询实体的方法,这个方法的查询条件通过注解来定义,可能会比较复杂和使用到脚本,比如

    @Select("<script>" +            "SELECT * FROM t_my_table WHERE deleted=false AND uuid IN " +            "<foreach collection='collection' item='item' separator=','>" +            "#{item}" +            "</foreach>" +            "</script>")    List<MyEntity> selectByUuid(List<String> uuid);

我想让这个方法通过myBatisPlus的分页插件进行自动分页,需要对方法进行什么改动呢?除了需要改动方法的返回值为IPage<MyEntity>类型,然后传参肯定需要有IPage<MyEntity>类型的传参,有这些就足够了吗?
换句话解释我的疑问就是,mybatisPlus的分页插件是通过什么方式识别可以分页的方法并自动填充IPage对象的呢?

共有1个答案

施凡
2023-10-25

MybatisPlus 的分页插件是在 SQL 查询执行之前自动注入的,它通过解析你的查询方法(例如,通过注解)来获取分页信息,并在查询中加入分页语句。

对于你的情况,你的查询方法已经返回 List<MyEntity> 类型的数据,如果要使用 MybatisPlus 的分页插件进行自动分页,你需要将返回类型更改为 IPage<MyEntity>。同时,你需要在查询方法中加入分页参数。具体如下:

public interface MyMapper extends BaseMapper<MyEntity> {    @Select("<script>" +            "SELECT * FROM t_my_table WHERE deleted=false AND uuid IN " +            "<foreach collection='collection' item='item' separator=','>" +            "#{item}" +            "</foreach>" +            "</script>")    IPage<MyEntity> selectByUuid(List<String> uuid, Pagination pagination);}

在上面的代码中,我们在查询方法中加入了一个 Pagination 类型的参数。Pagination 参数包含了分页信息,例如当前页数和每页显示的数量。

然后,你需要在调用这个查询方法时传入 Pagination 参数。例如:

MyMapper mapper = sqlSession.getMapper(MyMapper.class);Pagination pagination = new Pagination(page, size); // page 为当前页数,size 为每页显示的数量IPage<MyEntity> result = mapper.selectByUuid(uuids, pagination);

MybatisPlus 的分页插件在执行查询时会自动处理分页语句的注入,所以你不需要担心分页的实现细节。你只需要关注你的查询方法和如何调用它们即可。

 类似资料:
  • 问题内容: 我有连接3个表的SQL查询,一个表只是将其他两个表连接起来的多对多表。我使用Spring JDBCResultSetExtractor将ResultSet转换成我的Objects,看起来像这样: ResultSetExtractor实现如下所示: 无需分页即可正常工作。 但是,我需要对这些结果进行分页。我通常的做法是将其添加到查询中,例如: 但是,由于此查询具有联接,因此当我限制结果数

  • 上一页下一页都是第一页的内容

  • 我的存储库如下所示: 如何将分页添加到不使用JPA默认“findAll”查询的自定义查询? 如何让Spring将其转换为页面或可分页对象? 因此,在我的AppController中,我可以这样使用它: Page=heroService。findAllHeroByGroupName(pageNum); 请注意,返回一个列表,而不是页面对象。

  • 我已经创建了一个包含多个分类法的自定义查询,在此基础上,我使用进行分页。分类法是通过下拉选择表单来选择的,使用可以过滤帖子,这只是一个临时解决方案,但目前效果良好,值得注意。 分页工作正常,当选择分类术语时,帖子可以正确显示,但是当我离开第一页,比如说我进入第2页,在下拉选择器中选择不同的分类术语时,URL会保留当前页码,并向其中添加选择器ID。我想实现的是,当我在选择器中单击不同的分类法时,新选

  • 本文向大家介绍Django如何自定义分页,包括了Django如何自定义分页的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Django自定义分页的具体代码,供大家参考,具体内容如下 稳扎稳打版 book.html 封装保存版 封装保存版 封装版使用指南 封装版对应的HTML参考 效果图如下:  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 问题内容: 我有一个页面,它执行一个自定义查询,该查询已保存在数据库中的某个位置。我需要能够在gridview上启用分页。 例如,查询保存在数据库中的方式如下: 这将返回10,000行。 使用下面的方法,我使它返回10行。 这是绑定网格的代码 问题在于查询本身返回10行,因此gridview将永远不会显示寻呼机。 问题答案: 此代码在aspx页面 在此,将在.cs页中使用的方法。该方法用于跟踪pa