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!
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:
Input 0, 10:
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;
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:
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.7</version> </dependency>
<plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor" /> </plugins>
rreeeHasil pelaksanaan:
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(); }
@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!