天天看點

Mybatis實作分頁的三種方式

文章目錄

        • 1、Limit實作分頁
        • 2、RowBounds分頁(不建議使用)
        • 3、MyBatis分頁插件PageHelper(了解即可)

1、Limit實作分頁

  • sql語句
    SELECT * from user limit startIndex,pageSize
               
  • 簡單示例:
    • user表
      Mybatis實作分頁的三種方式
    • 查詢一:從第一行資料【 startIndex:0】開始,查詢兩行【pageSize:2】資料
      Mybatis實作分頁的三種方式
    • 查詢二:從第三行資料【 startIndex:2】開始,查詢兩行【pageSize:2】資料
      Mybatis實作分頁的三種方式
    • 查詢三:隻有一個參數表示從第一行資料開始,查詢三行【pageSize:3】資料
      Mybatis實作分頁的三種方式
  • 使用Mybatis實作分頁,核心SQL
    • 接口
      public interface UserMapper {
          //分頁
          List<User> getUserByLimit(Map<String,Integer> map);
      }
                 
    • Mapper.xml
      <!--分頁-->
      <select id="getUserByLimit" parameterType="map" resultType="包名.User">
          select * from user limit #{startIndex},#{pageSize};
      </select>
                 
    • 測試
      public class UserMapperTest {
          @Test
          public void getUserByLimit() {
              SqlSession sqlSession = MybatisUtils.getSqlSession();
              UserMapper mapper = sqlSession.getMapper(UserMapper.class);
              HashMap<String, Integer> map = new HashMap<>();
              map.put("startIndex", 0);
              map.put("pageSize", 2);
      
              List<User> userList = mapper.getUserByLimit(map);
              for (User user : userList) {
                  System.out.println(user);
              }
      
              sqlSession.close();
          }
      }
                 
    • 測試結果
      Mybatis實作分頁的三種方式

2、RowBounds分頁(不建議使用)

  • 不使用SQL實作分頁,通過java代碼層面實作分頁
    • 接口
      //分頁2:RowBounds
      List<User> getUserByRowBounds();
                 
    • Mapper.xml
      <!--分頁:RowBounds-->
      <select id="getUserByRowBounds" resultMap="UserMap">
          select * from user
      </select>
                 
    • 測試
      @Test
      //分頁2:RowBounds
      public void getUserByRowBounds(){
          SqlSession sqlSession = MybatisUtils.getSqlSession();
      
          //RowBounds實作
          RowBounds rowBounds = new RowBounds(0, 2);
      
          //通過java代碼層面實作分頁
          List<User> userList = sqlSession.selectList("com.ping.dao.UserMapper.getUserByRowBounds",null,rowBounds);
      
          for (User user : userList) {
              System.out.println(user);
          }
          sqlSession.close();
      }
                 
    • 測試結果
      Mybatis實作分頁的三種方式

3、MyBatis分頁插件PageHelper(了解即可)

詳細文檔:https://pagehelper.github.io/