日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

jdbctemplate分页mysql_jdbcTemplate实现分页功能

發布時間:2025/3/15 数据库 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jdbctemplate分页mysql_jdbcTemplate实现分页功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先看效果圖:

分頁參數類:

package com.yadou.model;

/**

* 分頁參數類

* Created by lv on 16-5-12.

*/

public class PageParam {

/**

* 起始頁碼

*/

private int page = 1;

/**

* 每頁顯示條數

*/

private int limit;

/**

* 默認為10條

*/

public static final int PAGE_SIZE = 10;

/**

* 排序字段

*/

private String sort;

/**

* asc or desc

*/

private String dir;

public int getPage() {

return page;

}

public void setPage(int page) {

this.page = page;

}

public String getSort() {

return sort;

}

public void setSort(String sort) {

this.sort = sort;

}

public String getDir() {

return dir;

}

public void setDir(String dir) {

this.dir = dir;

}

public int getLimit() {

return limit;

}

public void setLimit(int limit) {

this.limit = limit;

}

}

分頁工具類:

package com.yadou.util;

import com.yadou.model.PageParam;

import org.apache.logging.log4j.LogManager;

import org.apache.logging.log4j.Logger;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.jdbc.core.support.JdbcDaoSupport;

import java.util.List;

public class Pagination extends JdbcDaoSupport {

private static final Logger LOGGER = LogManager.getLogger(Pagination.class);

//一頁顯示的記錄數

private int pageSize;

//記錄總數

private int totalRows;

//總頁數

private int totalPages;

//當前頁碼

private int currentPage;

//起始行數

private int startIndex;

//結束行數

private int lastIndex;

//結果集存放List

private List resultList;

//JdbcTemplate jTemplate

private JdbcTemplate jTemplate;

/**

* 分頁構造函數

*

* @param sql 根據傳入的sql語句得到一些基本分頁信息

* @param params 參數列表

* @param pageParam 分頁參數對象

* @param jTemplate JdbcTemplate實例

*/

public Pagination(String sql, Object[] params, PageParam pageParam, JdbcTemplate jTemplate) {

if (jTemplate == null) {

throw new IllegalArgumentException("com.deity.ranking.util.Pagination.jTemplate is null,please initial it first. ");

} else if (sql == null || sql.equals("")) {

throw new IllegalArgumentException("com.deity.ranking.util.Pagination.sql is empty,please initial it first. ");

}

//設置每頁顯示記錄數

setPageSize(pageParam.getLimit());

//設置要顯示的頁數

setCurrentPage(pageParam.getPage());

//計算總記錄數

StringBuffer totalSQL = new StringBuffer(" SELECT count(*) FROM ( ");

totalSQL.append(sql);

totalSQL.append(" ) totalTable ");

//給JdbcTemplate賦值

setJdbcTemplate(jTemplate);

//總記錄數

setTotalRows(getJdbcTemplate().queryForObject(totalSQL.toString(), params, Integer.class));

//計算總頁數

setTotalPages();

//計算起始行數

setStartIndex();

//計算結束行數

setLastIndex();

//裝入結果集

setResultList(getJdbcTemplate().queryForList(getMySQLPageSQL(new StringBuilder(sql), pageParam), params));

}

/**

* 構造MySQL數據分頁SQL

*

* @param queryString

* @return

*/

public String getMySQLPageSQL(StringBuilder queryString, PageParam pageParam) {

String resultSql = null;

if (pageParam != null && pageParam.getSort() != null && pageParam.getDir() != null) {

queryString.append(" order by ").append(pageParam.getSort()).append(" ").append(pageParam.getDir());

}

if (0 != pageSize) {

resultSql = queryString.append(" limit ").append(startIndex).append(",").append(pageSize).toString();

} else {

resultSql = queryString.toString();

}

LOGGER.info("page sql:{}", resultSql);

return resultSql;

}

public int getCurrentPage() {

return currentPage;

}

public void setCurrentPage(int currentPage) {

//如果當前頁碼<1,則默認加載第一頁數據

if (currentPage < 0) {

this.currentPage = 1;

} else {

this.currentPage = currentPage;

}

}

public List getResultList() {

return resultList;

}

public void setResultList(List resultList) {

this.resultList = resultList;

}

public int getTotalPages() {

return totalPages;

}

//計算總頁數

public void setTotalPages() {

if (pageSize == 0) {

totalPages = 0;

} else {

if (totalRows % pageSize == 0) {

this.totalPages = totalRows / pageSize;

} else {

this.totalPages = (totalRows / pageSize) + 1;

}

}

}

public int getTotalRows() {

return totalRows;

}

public void setTotalRows(int totalRows) {

this.totalRows = totalRows;

}

public int getStartIndex() {

return startIndex;

}

public void setStartIndex() {

//如果總頁數>當前頁,則默認加載最后一頁

if (currentPage > totalPages) {

currentPage = totalPages;

}

this.startIndex = (currentPage - 1) * pageSize;

}

public int getLastIndex() {

return lastIndex;

}

public JdbcTemplate getJTemplate() {

return jTemplate;

}

public void setJTemplate(JdbcTemplate template) {

jTemplate = template;

}

public int getPageSize() {

return pageSize;

}

public void setPageSize(int pageSize) {

this.pageSize = pageSize;

}

//計算結束時候的索引

public void setLastIndex() {

LOGGER.debug("totalRows={}", totalRows);///

LOGGER.debug("pageSize={}", pageSize);///

if (pageSize != 0) {

if (totalRows < pageSize) {

this.lastIndex = totalRows;

} else if ((totalRows % pageSize == 0) || (totalRows % pageSize != 0 && currentPage < totalPages)) {

this.lastIndex = currentPage * pageSize;

} else if (totalRows % pageSize != 0 && currentPage == totalPages) {//最后一頁

this.lastIndex = totalRows;

}

}

}

}

程序中使用:

public Pagination find(BGoodsVO bGoodsVO, PageParam pageParam) {

List params = new ArrayList<>();

StringBuilder sqlBuilder = new StringBuilder("SELECT\n" +

"g.*, s.shop_name\n" +

"FROM\n" +

"b_goods g,\n" +

"b_shop s\n" +

"WHERE\n" +

"g.shopid = s.ID\n");

if (bGoodsVO != null) {

if (bGoodsVO.getState() != null) {

//狀態

sqlBuilder.append(" and g.state = ?");

params.add(bGoodsVO.getState());

}

}

return new Pagination(sqlBuilder.toString(), params.toArray(), pageParam, super.getJdbcTemplate());

}

總結

以上是生活随笔為你收集整理的jdbctemplate分页mysql_jdbcTemplate实现分页功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。