Home > Java > javaTutorial > body text

What are the paging implementation methods of MyBatis in Java?

PHPz
Release: 2023-05-07 08:04:16
forward
724 people have browsed it

Preface

Paging is a hurdle we cannot get around in development! When the amount of your data is large, it is unrealistic to check all the data at once, so we usually query in pages, which reduces the pressure on the server and improves speed and efficiency! It also reduces the pressure on front-end rendering!

Note: Since the maximum integer allowed by java is 2147483647, the maximum integer that limit can use is also 2147483647. Retrieving a large amount of data at one time may cause memory overflow, so be careful when querying big data. use!

1. Limit paging

Syntax:

limit ${startPos},${pageSize}
Copy after login

In actual projects, we usually add a judgment of empty or null, as follows :

<if test="startPos!=null and pageSize!=null">
    limit ${startPos},${pageSize}
</if>
Copy after login

Business layer code:

<select id="getUserInfo1" parameterType="map" resultType="dayu">
    select * from user
    <if test="startPos!=null and pageSize!=null">
        limit ${startPos},${pageSize}
    </if>
</select>
Copy after login
List<User> getUserInfo1(Map<String,Object> map);
Copy after login
@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<User> users = mapper.getUserInfo1(parms);
     for (User map: users){
         System.out.println(map);
    }
     session.close();
}
Copy after login

Execution result:

What are the paging implementation methods of MyBatis in Java?

Input 0, when 10:

What are the paging implementation methods of MyBatis in Java?

Summary:

  • limit 0,10;

  • 0 means starting from the 0th piece of data

  • 10 means checking 10 pieces of data

  • When you reach the second page, the limit is 10,10;

2. RowBounds paging (not recommended)

RowBounds helps us omit the limit content, we only need to pay attention to paging at the business layer! No need to pass in specified data!

However, this belongs to logical paging, that is, the SQL query actually queries all the data, which is only paging at the business layer. It takes up more memory, and the data is not updated in time, and there may be a certain lag! Not recommended!

RowBounds object has 2 properties, offset and limit.

  • offset:Starting number of rows

  • ##limit:Number of required data rows

Therefore, the data taken out is: starting from the offset 1 line, take the limit line

Business layer code:

@Test
public void selectUserRowBounds() {
    SqlSession session = MybatisUtils.getSession();
    UserMapper mapper = session.getMapper(UserMapper.class);
    // List<User> users = session.selectList("com.dy.mapper.UserMapper.getUserInfoRowBounds",null,new RowBounds(0, 5));
    List<User> users = mapper.getUserInfoRowBounds(new RowBounds(0,5));
    for (User map: users){
        System.out.println(map);
    }
    session.close();
}
Copy after login
List<User> getUserInfoRowBounds(RowBounds rowBounds);
Copy after login
<select id="getUserInfoRowBounds" resultType="dayu">
   select * from user
</select>
Copy after login

Execute and check the results:

What are the paging implementation methods of MyBatis in Java?

3. Mybatis_PageHelper paging plug-in

Introduce the jar package:

<dependency>
   <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper</artifactId>
   <version>5.1.7</version>
</dependency>
Copy after login

Configure MyBatis core configuration file:

<plugins>
    <plugin interceptor="com.github.pagehelper.PageInterceptor" />
</plugins>
Copy after login

Business layer code:

@Test
public void selectUserPageHelper() {
    SqlSession session = MybatisUtils.getSession();
    UserMapper mapper = session.getMapper(UserMapper.class);
    //第二种,Mapper接口方式的调用,推荐这种使用方式。
    PageHelper.startPage(1, 3);
    List<User> list = mapper.getUserInfo();
    //用PageInfo将包装起来
    PageInfo page = new PageInfo(list);
    for (User map: list){
        System.out.println(map);
    }
    System.out.println("page:---"+page);
    session.close();
}
Copy after login
Copy after login

Execution result:

What are the paging implementation methods of MyBatis in Java?

Summary:

PageHelper is still very easy to use, and it is also a physical paging!

In fact, we generally use the second type more: Mapper interface method call

@Test
public void selectUserPageHelper() {
    SqlSession session = MybatisUtils.getSession();
    UserMapper mapper = session.getMapper(UserMapper.class);
    //第二种,Mapper接口方式的调用,推荐这种使用方式。
    PageHelper.startPage(1, 3);
    List<User> list = mapper.getUserInfo();
    //用PageInfo将包装起来
    PageInfo page = new PageInfo(list);
    for (User map: list){
        System.out.println(map);
    }
    System.out.println("page:---"+page);
    session.close();
}
Copy after login
Copy after login

Extension:

//获取第1页,10条内容,默认查询总数count
PageHelper.startPage(1, 10);
List<User> list = userMapper.selectAll();
//用PageInfo对结果进行包装
PageInfo page = new PageInfo(list);
//测试PageInfo全部属性
//PageInfo包含了非常全面的分页属性
assertEquals(1, page.getPageNum());
assertEquals(10, page.getPageSize());
assertEquals(1, page.getStartRow());
assertEquals(10, page.getEndRow());
assertEquals(183, page.getTotal());
assertEquals(19, page.getPages());
assertEquals(1, page.getFirstPage());
assertEquals(8, page.getLastPage());
assertEquals(true, page.isFirstPage());
assertEquals(false, page.isLastPage());
assertEquals(false, page.isHasPreviousPage());
assertEquals(true, page.isHasNextPage());
Copy after login

The above is the detailed content of What are the paging implementation methods of MyBatis in Java?. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:yisu.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template