jdbctemplate分页mysql_jdbcTemplate实现分页功能

先看效果图:

10b3a522b3d4f4d5e8e8b99f99e8227f.png

5d7a812887c1919d6b741706a3f319c6.png

分页参数类:

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

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值