您好,登錄后才能下訂單哦!
這篇“SSM如何實現分頁查詢功能”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“SSM如何實現分頁查詢功能”文章吧。
具體如下:
1. 首先創建一個分頁的實體類
public class Flexigrid { //符合條件總記錄數 private int total; //當前查詢的第幾頁數據 private int page; //總頁數 private int totalPage; //每頁查詢結果結束序號 @JSONField(serialize=false) private int rowEnd; //每頁查詢結果開始序號 @JSONField(serialize=false) private int rowStart; //每頁結果數 private int rp; //查詢條件 @JSONField(serialize=false) private Object obj; //返回結果 @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) private List<?> rows; //......其他get、set方法 public int getTotalPage() { if(rp == 0) return 1; // 提取信息行數 int total = this.total; this.totalPage = total / rp; int mod = total % this.rp; if (mod != 0) this.totalPage += 1; return totalPage; } }
2. Controller ,student對象接收參數,并將對象作為查詢參數存入Flexigrid對象中。
@Controller@RequestMapping("/student")public class StudentController { @RequestMapping(value = "/page") @ResponseBody public Flexigrid page(@RequestBody Student student) { Flexigrid flex = new Flexigrid(); flex.setObj(student); // 設置查詢參數 flex.setPage(student.getPageNo()); //查詢的第幾頁數據 flex.setRp(student.getPageSize()); //每頁結果數 flex.setRowStart((flex.getPage() - 1) * flex.getRp()); //查詢結果開始序號 flex.setRowEnd(flex.getPage() * flex.getRp()); //查詢結果結束序號 List list = studentService.page(flex); //查詢的結果集 int total = studentService.total(flex); //符合查詢條件的總記錄數 flex.setTotal(total); flex.setRows(list); flex.setObj(null); //將查詢條件置為空 return flex; } }
3. service 提供page 和total方法
@Service@Transactional(readOnly = true)public class StudentService { /** * 查詢分頁數據 * @param flex 包含查詢條件以及分頁數據 * @return */ public List page(Flexigrid flex) { return studentDao.page(flex); } /** * 獲取查詢信息總數量 * @param flex 包含查詢條件以及分頁數據 * @return */ public Integer total(Flexigrid flex) { return studentDao.total(flex); } }
4. dao層定義接口
@MyBatisDaopublic interface StudentDao{ /** * 查詢分頁數據 * @param flex 包含查詢條件以及分頁數據 * @return */ List<Student> page(Flexigrid flex); /** * 獲取查詢信息總數量 * @param flex 包含查詢條件以及分頁數據 * @return */ Integer total(Flexigrid flex); }
5. 創建映射文件。
namespace屬性值改為上面定義接口的類的全名稱。
每一個接口方法對應一個sql,且sql-id需要與接口方法名稱保持一致。
接口方法的請求參數對應sql的parameterType屬性。
編寫sql-id為page、total的sql 語句。
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><!-- 學生信息 mapper --><!-- namespace指向dao接口 --><mapper namespace="com.dao.StudentDao" > <!-- 信息個數提取 --> <select id="total" resultType="int" parameterType="com.entity.Flexigrid"> SELECT COUNT(t.ID) FROM T_STUDENT t <where> <if test="obj != null"> <if test="obj.id != null"> AND t.ID=#{obj.id} </if> <if test="obj.studentName != null"> AND t.STUDENT_NAME like '%${obj.studentName}%' </if> </if> </where> </select> <!-- 信息分頁 --> <select id="page" resultType="com.entity.Student" parameterType="com.entity.Flexigrid"> SELECT * FROM (SELECT A.*, rownum r FROM ( SELECT t.id FROM T_STUDENT t <where> <if test="obj != null"> <if test="obj.id != null"> AND t.ID=#{obj.id} </if> <if test="obj.studentName != null"> AND t.STUDENT_NAME like '%${obj.studentName}%' </if> </if> </where> ORDER BY t.STUDENT_NAME <![CDATA[ ) A WHERE rownum <=#{rowEnd} )B WHERE r > #{rowStart} ]]> </select></mapper>
以上就是關于“SSM如何實現分頁查詢功能”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。