1. 程式人生 > >SSM框架實現分頁,返回分頁的JSON資料

SSM框架實現分頁,返回分頁的JSON資料

先看一下返回的JSON資料:

{
    "pagNum": 1,
    "pageSize": 5,
    "totalRecord": 12,
    "totalPage": 3,
    "startIndex": 0,
    "dateList": [
        {
            "employee_id": 2,
            "employee_account": "44",
            "username": "44",
            "password": "44",
            "age": 44,
            "address
": "0000", "departmentname": "生產技術部" }, { "employee_id": 3, "employee_account": "44", "username": "44", "password": "44", "age": 44, "address": "0000", "departmentname": "生產技術部" }, { "employee_id
": 4, "employee_account": "897", "username": "張紅", "password": "0989", "age": 45, "address": "河北省石家莊市公園路45號", "departmentname": "系統服務部" }, { "employee_id": 6, "employee_account": "6767", "username
": "龍飛", "password": "9889789", "age": 24, "address": "江蘇省南京市人民路88號", "departmentname": "廣告部" }, { "employee_id": 10, "employee_account": "11111111", "username": "測試一", "password": "1111111", "age": 11111, "address": "四川成都市", "departmentname": "廣告部" } ]
, "start": 1, "end": 3 }

所用到的幾個類:
* Employee.java:實體類
* Page.java:分頁類
* EmployeeDao.java:持久層介面
* EmployeeMapping.xml:資料庫對映檔案
* EmployeeService.java:服務層介面
* EmployeeServiceImpl.java:服務層介面實現類
* EmployeeController.java:控制器類

起主要作用的是Page類:

    private int pagNum;// 當前的頁數
    private int pageSize;// 每頁顯示數量,limit函式第二個引數
    private int totalRecord;// 總記錄數
    private int totalPage;// 總頁數
    private int startIndex;// 開始位置,limit函式第一個引數
    private List<T> dateList;
    private int start;
    private int end;

    public Page() {
    }

    public Page(int pagNum, int pageSize, int totalRecord) {
        this.pagNum = pagNum;
        this.pageSize = pageSize;
        this.totalRecord = totalRecord;
        // 計算總頁數
        if (totalRecord % pageSize == 0) {
            this.totalPage = totalRecord / pageSize;
        } else {
            this.totalPage = (totalRecord / pageSize) + 1;
        }
        // 確定limit函式的第一個引數的值
        this.startIndex = pagNum * pageSize;
        this.start = 1;
        this.end = 5;
        if (totalPage <= 5) {
            this.end = this.totalPage;
        } else {// pagNum=6;start=4;end=8
            this.start = pagNum - 2;
            this.end = pagNum + 2;
        }
        if (start < 0) {
            this.start = 1;
            this.end = 5;
        }
        // 舉個例子:一共有10頁,現在就在第10頁,那麼根據上面的邏輯end=12,錯誤;則end=this.totalPage;且下面導航欄還是要出現5個,則start=end-5
        if (end > this.totalPage) {
            this.end = totalPage;
            this.start = end - 5;
        }
    }

從資料庫獲取相關資訊:

  • dao介面:
public interface EmployeeDao {
    //獲取資料的總條數,即totalRecord
    int getEmployeeTotal();
    //獲取指定的資料
    List<Employee> getAllEmployee(Page<Employee> page);
}
  • mapping檔案:
<?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="com.example.oa.dao.EmployeeDao">
    <select id="getEmployeeTotal" resultType="java.lang.Integer">
        SELECT COUNT(1) FROM
        employee
    </select>
    <select id="getAllEmployee"
        resultType="com.example.oa.domain.Employee"
        parameterType="com.example.oa.domain.Page">
        SELECT
        e.employee_id,
        e.employee_account,
        e.username,
        e.`password`,
        e.age,
        e.address,
        d.departmentname
        FROM
        employee e,
        department d
        WHERE
        e.departmentid = d.departmentid LIMIT
        #{startIndex},#{pageSize}
    </select>
</mapper>
  • service層介面:
public interface EmployeeService {
    //返回分頁資料和主題資訊
    Page<Employee> getEmployee(Page<Employee> page);
}
  • service實現類:
@Service
public class EmployeeServiceImpl implements EmployeeService {
    @Autowired
    private EmployeeDao employeeDao;
    private Logger log = Logger.getLogger(EmployeeServiceImpl.class);

    @Override
    public Page<Employee> getEmployee(Page<Employee> page) {
        //獲取總條數,即totalRecord
        int total = employeeDao.getEmployeeTotal();
        Page<Employee> allpage = new Page<Employee>(page.getPagNum(), page.getPageSize(), total);
        log.info("allpage:" + allpage.toString());
        //將獲取到的集合資料,新增到page中的datalist引數中
        allpage.setDateList(employeeDao.getAllEmployee(allpage));
        //返回所有的分頁引數和資料
        return allpage;
    }

}
  • 控制層:
@Controller
@RequestMapping(value = "/employeeController")
public class EmployeeController {
    @Autowired
    private EmployeeService employeeService;

    @RequestMapping(value = "/getAll")
    @ResponseBody
    public Page<Employee> getAll(Page<Employee> page) {
        Page<Employee> page1 = employeeService.getEmployee(page);
        return page1;
    }
}
  • 資料表的話,自己建一張表就行了(以下是我的SQL)
CREATE TABLE `employee` (
  `employee_id` int(11) NOT NULL AUTO_INCREMENT,
  `employee_account` varchar(255) NOT NULL,
  `username` varchar(50) NOT NULL,
  `password` varchar(100) NOT NULL,
  `age` int(11) DEFAULT NULL,
  `address` varchar(255) DEFAULT NULL,
  `departmentid` int(11) DEFAULT NULL,
  `role` int(3) NOT NULL,
  PRIMARY KEY (`employee_id`),
  KEY `departmentid` (`departmentid`) USING BTREE,
  CONSTRAINT `employee_ibfk_1` FOREIGN KEY (`departmentid`) REFERENCES `department` (`departmentid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8 COMMENT='員工表';

至此,SSM框架的分頁功能實現完成。完整程式碼以上傳到碼雲,有需要請下載:Paging

參考博文:

相關推薦

SSM框架實現返回JSON資料

先看一下返回的JSON資料: { "pagNum": 1, "pageSize": 5, "totalRecord": 12, "totalPage": 3,

SSM框架整合PageHelper外掛實現功能

本文簡單的介紹瞭如何運用PageHelper外掛實現分頁功能。 一、在 pom.xml 中新增如下依賴: 從下面的地址中檢視最新版本的 jar 包 <!-- 新增分佈外掛的包pageh

SSM框架實現查詢

BookDaoMapper.java /** * 根據多條件(圖書分類,圖書名稱,是否借閱)動態查詢圖書資訊 * * @param bookType * 圖書分類 * @param bookName * 圖書名稱 *

ssm框架實現條件、查詢【親測】

0.用到了jquery、AJAX(前端)、ssm框架 1. input輸入框和查詢按鈕 <input id="queryText" type="text" placeholder="請輸入查詢條件">   <button id

ssm框架實現(limit)

pojo層新建類PageBean package com.qut.pojo; import java.util.List; public class PageBean<T>{

SSM框架——實現和搜尋

分頁是JAVA WEB專案常用的功能,昨天在Spring MVC中實現了簡單的分頁操作和搜尋分頁,在此記錄一下。使用的框架為(MyBatis+SpringMVC+Spring)。         首先我們需要一個分頁的工具類: 1.分頁 import java.

MiniUI前臺實現源碼

MiniUI 假分頁背景對於數據較少,無需後臺分頁的需求,可使用以下解決方案方案MiniUI提供了監聽事件,特別方便即可實現。源碼mini.parse(); var grid = mini.get("datagridTable"); // 獲取所有數據和總記錄數 { tot

ssm框架】使用PageHelper外掛進行

通常我們要實現分頁,都需要傳入一個當前頁,要讀的資料個數,經過計算之後,將需要的值填入接在sql語句limit關鍵字的後面。然而使用PageHelper之後我們並不需要對sql新增什麼limit,直接按查詢全部去寫sql語句即可。只要在查詢之前呼叫PageHelper.startPage(pag

js實現蕨類植物葉子葉子形圖形

doc ren pat fill ret () and .get AS 分形圖形很是奇妙,這裏展示的是蕨類植物葉子的分形圖形。 這裏使用Canvas 通過描點的方式來繪制圖形,先說一下原理: 先來個方程: 或許看完這個覺得很懵逼,這裏就不說這個方程怎麽計算了。由這個方程

SSM框架整合Apache Shiro實現安全登入驗證和許可權驗證功能

第一部分 Apache Shiro的簡介  1、什麼是 apache shiro : Apache Shiro是一個功能強大且易於使用的Java安全框架,提供了認證,授權,加密,和會話管理 如同 spring security 一樣都是是一個許可權安全框架,但是與Spri

hibernate 通用查詢的泛型類

寫在泛型dao層的實現類裡,可以達到寫一次,然後繼承這個實現類,傳入各自的型別就可以達到很高的複用效果,增加開發效率 也可以作為查詢的分頁,自己動態構造查詢的語句,然後對應好傳入的引數,動態構造查詢語句的時候StringBuffer,直接用string型別效率低。 向上具體

mybatis邏輯導航

mybatis是非常優秀的半orm框架,比hibernate更容易控制,效能也很好,但mybatis官方並沒提供分頁功能,需要自己實現,下面提供一種物理分頁的實現思路: (基於sping、spring mvc、mybatis的整合,將PO) 1. 編寫一個Pagina

ssm框架實現execl上傳並插入資料庫功能

從前端最後到資料庫,分為頁面(jsp),Controller、service、mapper 。 比較簡單但是使用的方法,沒有封裝成工具類感覺太麻煩。用到了poi解析execl,給出pom.xml<!-- 匯入execl jar包 --> <depen

JQuery AJAX 下一上一【總結了一天啊乾貨】

網上的分頁基本有問題,自己總結下:程式碼如下<script type="text/javascript"> var pagesi = "2";//每頁行數 var totalPage = "0";//總頁數 var currentPage = "1";//當前頁

SSM框架實現第一個echarts的例子及一個調用百度開發者工具的例子

response char ons enc styles ping 地理編碼 nco swa   過年後的第一篇Blog,說實話年後的自己好慵懶,一直處於半睡半醒狀態 ̄□ ̄||。年後工作上用了好多新東西,像Spring Boot,Swagger,Jenkins,Maven,

Java使用SSM框架實現登錄頁面的驗證碼功能

def ssa bar double trac ext tst setattr info 最終效果展示: 代碼展示: 1、前端登錄頁面代碼展示 <div class="form-group"> <div class="input-ico

Java使用SSM框架實現登錄頁面記住密碼功能

turn 頁面 賦值 ++ mage login ring 實現 member 最終效果展示: 1、登錄頁面JSP代碼 <label class="checkbox"> <input type="checkbox" name="remembe

對學習成績進行評級90以上A;80以上90以下B;以此類推

namespace put using src NPU size mes name info #include "pch.h"#include <iostream>using namespace std;int main(){ float score; int

ssm框架實現簡單互動

                                     ssm框架實現簡單互動 今天簡單

SSM框架實現修改操作

利用SSM框架在頁面內的表單中實現編輯修改的主要步驟總結如下: 1.我們想要修改某個資料,首先應該知道我們需要獲取想要資料在資料庫中id的值,因為我們進行的刪改查的等操作都是通過查詢id的進行的。 2.在這裡,我用的是AJAX的方法對頁面和JAVA之間進行資料傳遞。運用的方法