mybatis分页插件使用

╰+哭是因爲堅強的太久メ 2022-05-13 13:22 447阅读 0赞

一、添加pom.xml依赖:

  1. <dependencies>
  2. <dependency>
  3. <groupId>com.github.pagehelper</groupId>
  4. <artifactId>pagehelper</artifactId>
  5. <version>4.1.3</version>
  6. </dependency>
  7. </dependencies>

二、添加mybatis-config.xml插件配置:

  1. <plugins>
  2. <!-- 分页查询插件 -->
  3. <plugin interceptor="com.github.pagehelper.PageHelper">
  4. <!-- 4.0.0以后版本可以不设置该参数,支持数据库类型Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库-->
  5. <property name="dialect" value="MariaDB" />
  6. <!-- 该参数默认为false -->
  7. <!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
  8. <!-- 和startPage中的pageNum效果一样 -->
  9. <property name="offsetAsPageNum" value="true" />
  10. <!-- 该参数默认为false -->
  11. <!-- 设置为true时,使用RowBounds分页会进行count查询 -->
  12. <property name="rowBoundsWithCount" value="true" />
  13. <!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->
  14. <!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型) -->
  15. <property name="pageSizeZero" value="true" />
  16. <!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
  17. <!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->
  18. <!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->
  19. <!-- <property name="reasonable" value="false" /> -->
  20. <!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
  21. <!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->
  22. <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默认值 -->
  23. <!-- 不理解该含义的前提下,不要随便复制该配置 -->
  24. <!-- <property name="params" value="pageNum=pageHelperStart;pageSize=pageHelperRows;" /> -->
  25. <!-- 支持通过Mapper接口参数来传递分页参数 -->
  26. <property name="supportMethodsArguments" value="false" />
  27. <!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
  28. <property name="returnPageInfo" value="none" />
  29. </plugin>
  30. </plugins>

三、UserMapper.xml中的SQL语句写法:

  1. <select id="selectByPrimaryKeyList" parameterType="java.lang.String" resultMap="BaseResultMap">
  2. select * from t_user where user_id = #{userId,jdbcType=VARCHAR}
  3. </select>

四、UserMapper.java类写法:

  1. package com.seesun.mapper;
  2. import java.util.List;
  3. import com.seesun.bean.UserBean;
  4. public interface UserMapper {
  5. List<UserBean> selectByPrimaryKeyList(String id);
  6. }

五、测试类:

  1. package com.seesun.judge;
  2. import org.junit.Test;
  3. import org.junit.runner.RunWith;
  4. import org.slf4j.Logger;
  5. import org.slf4j.LoggerFactory;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.test.context.ContextConfiguration;
  8. import com.github.pagehelper.PageHelper;
  9. import com.github.pagehelper.PageInfo;
  10. import com.seesun.mapper.UserMapper;
  11. import com.seesun.bean.UserBean;
  12. @RunWith(org.springframework.test.context.junit4.SpringJUnit4ClassRunner.class)
  13. @ContextConfiguration({ "/META-INF/spring/*.xml"}) //加载配置文件
  14. public class TestDemo {
  15. private Logger loggger = LoggerFactory.getLogger(TestDemo.class);
  16. @Autowired
  17. private UserMapper userMapper;
  18. @Test
  19. public void testUserInfo() {
  20. try {
  21. String id = "YaU4MWqvuGINMcs2FXD";
  22. PageInfo<UserBean> page = queryList(1, 5, id);
  23. System.out.println("总条目数:" + page.getTotal());
  24. for (UserBean entity : page.getList()) {
  25. loggger.info(entity.getUserAccount());
  26. }
  27. } catch (Exception e) {
  28. loggger.error(e.getMessage());
  29. }
  30. }
  31. public PageInfo<UserBean> queryList(Integer pangNum, Integer pageSize, String id){
  32. return PageHelper.startPage(pangNum, pageSize).doSelectPageInfo(() -> userMapper.selectByPrimaryKeyList(id));
  33. }
  34. }

注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除!


持续更新中…

如有对思路不清晰或有更好的解决思路,欢迎与本人交流,QQ群:273557553,个人微信:
你遇到的问题是小编创作灵感的来源!


发表评论

表情:
评论列表 (有 0 条评论,447人围观)

还没有评论,来说两句吧...

相关阅读

    相关 mybatis

    使用过mybatis的人都知道,mybatis本身就很小且简单,sql写在xml里,统一管理和优化。缺点当然也有,比如我们使用过程中,要使用到分页,如果用最原始的方式的话,1.

    相关 Mybatis

    1.        Mybatis分页插件 \- PageHelper说明 如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件。 该插件目前支持