Spring的JdbcTemplate实现分页
PageList.java实体类
/*** 封装分页对象 **/ public class PageList {private int page; //当前页private int totalRows; //总行数private int pages; //总页数private List list=new ArrayList();public int getPage() {return page;}public void setPage(int page) {this.page = page;}public int getPages() {return pages;}public void setPages(int pages) {this.pages = pages;}public List getList() {if(list==null){list=new ArrayList();}return list;}public void setList(List list) {this.list = list;}public int getTotalRows() {return totalRows;}public void setTotalRows(int totalRows) {this.totalRows = totalRows;} }
dao层
/*** 只查询一列数据类型对象。用于只有一行查询结果的数据* @param sql* @param params* @param cla Integer.class,Float.class,Double.Class,Long.class,Boolean.class,Char.class,Byte.class,Short.class* @return*/public Object queryOneColumnForSigetonRow(String sql,Object[] params,Class cla){Object result=null;try{if(params==null||params.length>0){result=jdbcTemplate.queryForObject(sql,params,cla);}else{result=jdbcTemplate.queryForObject(sql,cla);}}catch(Exception ex){ex.printStackTrace();}return result;}/*** 查询返回实体对象集合* @param sql sql语句* @param params 填充sql问号占位符数* @param cla 实体对象类型* @return*/public List queryForObjectList(String sql,Object[] params,final Class cla){final List list=new ArrayList();try{jdbcTemplate.query(sql, params, new RowCallbackHandler(){public void processRow(ResultSet rs) {try{List<String> columnNames=new ArrayList<String>();ResultSetMetaData meta=rs.getMetaData();int num=meta.getColumnCount();for(int i=0;i<num;i++){columnNames.add(meta.getColumnLabel(i+1).toLowerCase().trim());}Method[] methods=cla.getMethods();List<String> fields=new ArrayList<String>();for(int i=0;i<methods.length;i++){if(methods[i].getName().trim().startsWith("set")){String f=methods[i].getName().trim().substring(3);f=(f.charAt(0)+"").toLowerCase().trim()+f.substring(1);fields.add(f);}}do{Object obj=null;try{obj=cla.getConstructor().newInstance();}catch(Exception ex){ex.printStackTrace();}for(int i=0;i<num;i++){Object objval=rs.getObject(i+1);for(int n=0;n<fields.size();n++){String fieldName=fields.get(n).trim();if(columnNames.get(i).equals(fieldName.toLowerCase().trim())){BeanUtils.copyProperty(obj, fieldName, objval);break;}}}list.add(obj);}while(rs.next());}catch(Exception ex){ex.printStackTrace();}}});}catch(Exception ex){ex.printStackTrace();}if(list.size()<=0){return null;}return list;}/*** 查询返回List<Map<String,Object>>格式数据,每一个Map代表一行数据,列名为key* @param sql sql语句* @param params 填充问号占位符数* @return*/public List<Map<String,Object>> queryForMaps(String sql,Object[] params){try{if(params!=null&¶ms.length>0){return jdbcTemplate.queryForList(sql, params);}return jdbcTemplate.queryForList(sql);}catch(Exception ex){ex.printStackTrace();}return null;}/*** 查询分页(MySQL数据库)* @param sql 终执行查询的语句* @param params 填充sql语句中的问号占位符数* @param page 想要第几页的数据* @param pagerow 每页显示多少条数* @param cla 要封装成的实体元类型* @return pageList对象*/public PageList queryByPageForMySQL(String sql, Object[] params, int page, int pagerow,Class cla) {String rowsql="select count(*) from ("+sql+") gmtxtabs_"; //查询总行数sqlint pages = 0; //总页数int rows=(Integer)queryOneColumnForSigetonRow(rowsql, params, Integer.class); //查询总行数//判断页数,如果是页大小的整数倍就为rows/pageRow如果不是整数倍就为rows/pageRow+1if (rows % pagerow == 0) {pages = rows / pagerow;} else {pages = rows / pagerow + 1;}//查询第page页的数据sql语句if(page<=1){sql+=" limit 0,"+pagerow;}else{sql+=" limit "+((page-1)*pagerow)+","+pagerow;}//查询第page页数据List list=null;if(cla!=null){list=queryForObjectList(sql, params, cla);}else{list=queryForMaps(sql, params);}//返回分页格式数据PageList pl =new PageList();pl.setPage(page); //设置显示的当前页数pl.setPages(pages); //设置总页数pl.setList(list); //设置当前页数据pl.setTotalRows(rows); //设置总记录数return pl;}
service层
controller层
if(null==pageNo){pageNo = 1;}if(null==pageSize){pageSize = 30;}PageList list = service.getAllNotice(unitid, pageNo, pageSize);
转载于:https://www.cnblogs.com/aeolian/p/9228907.html
Spring的JdbcTemplate实现分页相关推荐
- Spring的jdbcTemplate 与原始jdbc 整合c3p0的DBUtils 及Hibernate 对比 Spring配置文件生成约束的菜单方法...
以User为操作对象 package com.swift.jdbc;public class User {private Long user_id; private String user_code; ...
- Spring利用JDBCTemplate实现批量插入和返回id
1.先介绍一下java.sql.Connection接口提供的三个在执行插入语句后可取的自动生成的主键的方法: //第一个是 PreparedStatement prepareStatement(St ...
- spring教程--JdbcTemplate详解
Spring的JdbcTemplate JdbcTemplate模板与DbUtils工具类比较类似. 1 Spring对持久层技术支持: JDBC:org.springframework.jdbc.c ...
- spring data jpa实现分页查询功能
spring data jpa实现分页查询功能 HTML代码部分: // 收派标准信息表格 $('#grid').datagrid( {iconCls : 'icon-forward',fit : t ...
- springboot 分页查询参数_10. Spring Boot 中的分页查询
在Spring Boot中使用分页查询主要依赖了org.springframework.data.domain.*包下面的及格分页类的功能.使用分页查询常见有两种方式,一种是直接在程序中写死分页的参数 ...
- 使用Spring Data JPA进行分页和排序
通过代码示例学习使用Spring Data JPA进行分页和排序 . 了解如何使用Springs PagingAndSortingRepository接口获取分页和排序结果. 1概述 在处理大量数据时 ...
- Spring框架 JdbcTemplate类 @Junit单元测试,可以让方法独立执行 如:@Test
1 package cn.zmh.PingCe; 2 3 import org.junit.Test; 4 import org.springframework.jdbc.core.BeanPrope ...
- Spring之JDBCTemplate
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.Spring对不同的持久化支持: Spring为各种支持的持久化技术,都提供了简单操作的模板和回 ...
- Spring Boot集成pagehelper分页插件
Spring Boot集成pagehelper分页插件 1.在pom.xml中添加pagehelper依赖 2.修改配置文件 3.修改Controller里面的查询方法 4.返回分页信息 1. 修改U ...
- Spring 学习 day3 : AOP,Spring中JdbcTemplate的使用
1.AOP 1.1 什么是AOP 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方 式和运行期动态代理实现程序功能的统一维护的一种技术. ...
最新文章
- 通过SolrJ 4.9管理Solr core
- Gradle构建脚本概要之构建块
- mac 系统下nvm管理node安装遇到的问题
- GMapbook中文版上线
- 史上最气人的数学家:文理双全智商还高,说话只说半句,解题只解半个,调戏人调戏了三百年还不够......
- Flowable学习笔记(一、入门)
- mysql order by 索引名字_MySQL如何利用索引优化ORDER BY排序语句
- 三大最被低估的安全技术 用户数量决定一切
- url 解析一个url里面的参数,获取地址栏参数信息
- Linux学习总结(24)——Linux查找文件命令
- windows 安装 pip工具
- [转载] numpy.inf
- Java面试锦囊送给你!大厂门槛随便跨!
- 通信原理实践(四)——模拟通信系统性能分析
- java swing窗口放置屏幕中央问题思考
- matplotlib 中设置图形大小
- 微信支付中证书的存放目录及其路径写法
- VS2019 MFC在静态库运行时出现的LNK2005和LNK1169问题
- ubuntu 20.04 firefox视频打不开问题
- java编写数独计算器
热门文章
- Atitit word ppt excel convert txt bp 等文档转换纯文本问题最佳实践.docx Atitit word ppt excel等文档转换txt问题最佳实践 目录 1.
- Atitit json array to csv 目录 1. Lib	1 1.1. Apache csv lib	1 1.2. Org.json.jar cdl模式	1 2. other	1 2
- Atititi 软件界面gui开发之道 attilax著
- paip.版本控制CVS-SVN-TFS总结
- PAIP.手机sms短信,联系人的同步与备份.txt
- 盘点国内外私募基金业绩报酬计提方式
- 基金公司十大非货规模逆袭(2010-2020)
- 天弘基金:中国的BlackRock?
- 云南公安云计算平台项目获中国优秀云计算开源案例特等奖
- 原创 | 职场二十年(一)电话风波