Rumah >Java >javaTutorial >Apakah kaedah pelaksanaan halaman MyBatis di Jawa?

Apakah kaedah pelaksanaan halaman MyBatis di Jawa?

PHPz
PHPzke hadapan
2023-05-07 08:04:16739semak imbas

Kata Pengantar

Paging adalah halangan yang tidak dapat kita lalui dalam pembangunan! Apabila jumlah data anda besar, adalah tidak realistik untuk menyemak semua data sekaligus, jadi kami biasanya bertanya dalam halaman, yang mengurangkan tekanan pada pelayan dan meningkatkan kelajuan dan kecekapan! Ia juga mengurangkan tekanan pada pemaparan bahagian hadapan!

Nota: Memandangkan integer maksimum yang dibenarkan oleh Java ialah 2147483647, integer maksimum yang boleh digunakan mengikut had juga ialah 2147483647. Mendapatkan semula sejumlah besar data pada satu masa boleh menyebabkan limpahan memori , jadi berhati-hati apabila menanyakan penggunaan data besar!

1. Hadkan paging

Sintaks:

limit ${startPos},${pageSize}

Dalam projek sebenar, kami biasanya menambah pertimbangan batal, seperti berikut :

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

Kod lapisan perniagaan:

<select id="getUserInfo1" parameterType="map" resultType="dayu">
    select * from user
    <if test="startPos!=null and pageSize!=null">
        limit ${startPos},${pageSize}
    </if>
</select>
List<User> getUserInfo1(Map<String,Object> map);
@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();
}

Hasil pelaksanaan:

Apakah kaedah pelaksanaan halaman MyBatis di Jawa?

Input 0, 10:

Apakah kaedah pelaksanaan halaman MyBatis di Jawa?

Ringkasan:

  • had 0,10;

  • 0 bermakna bermula dari data ke-0

  • 10 bermaksud menyemak 10 keping data

  • Apabila anda mencapai halaman kedua, hadnya ialah 10,10;

2. RowBounds paging (tidak disyorkan)

RowBounds membantu kami menghilangkan kandungan had, kita hanya perlu memberi perhatian kepada paging pada lapisan perniagaan! Tidak perlu memasukkan data yang ditentukan!

Walau bagaimanapun, ini adalah paging logik, iaitu, pertanyaan SQL sebenarnya menanyakan semua data, yang hanya paging pada lapisan perniagaan Ia memerlukan lebih banyak memori, dan data tidak dikemas kini dalam masa, dan mungkin ada lag tertentu! Tidak disyorkan!

Objek RowBounds mempunyai 2 sifat, mengimbangi dan had.

  • offset:Bilangan baris permulaan

  • had: Bilangan baris data yang diperlukan

Oleh itu, data yang diambil ialah: bermula dari baris offset+1, ambil garis had

Kod lapisan perniagaan:

@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();
}
List<User> getUserInfoRowBounds(RowBounds rowBounds);
<select id="getUserInfoRowBounds" resultType="dayu">
   select * from user
</select>

Laksanakan dan lihat keputusan:

Apakah kaedah pelaksanaan halaman MyBatis di Jawa?

3. pakej:

<dependency>
   <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper</artifactId>
   <version>5.1.7</version>
</dependency>
Konfigurasikan fail konfigurasi teras MyBatis:

<plugins>
    <plugin interceptor="com.github.pagehelper.PageInterceptor" />
</plugins>
Kod lapisan perniagaan:

rreeeHasil pelaksanaan:

Apakah kaedah pelaksanaan halaman MyBatis di Jawa?Ringkasan:

PageHelper masih sangat berguna, dan ia juga mempunyai halaman fizikal!

Malah, kami biasanya lebih banyak menggunakan jenis kedua:

Panggilan kaedah antara muka Mapper

@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();
}
Sambungan:

@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();
}

Atas ialah kandungan terperinci Apakah kaedah pelaksanaan halaman MyBatis di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam