jdbctemplate分页mysql_Spring的JdbcTemplate实现分页

/*** 只查询一列数据类型对象。用于只有一行查询结果的数据

*@paramsql

*@paramparams

*@paramcla Integer.class,Float.class,Double.Class,Long.class,Boolean.class,Char.class,Byte.class,Short.class

*@return

*/

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

}returnresult;

}/*** 查询返回实体对象集合

*@paramsql sql语句

*@paramparams 填充sql问号占位符数

*@paramcla 实体对象类型

*@return

*/

public List queryForObjectList(String sql,Object[] params,finalClass cla){final List list=newArrayList();try{

jdbcTemplate.query(sql, params,newRowCallbackHandler(){public voidprocessRow(ResultSet rs) {try{

List columnNames=new ArrayList();

ResultSetMetaData meta=rs.getMetaData();int num=meta.getColumnCount();for(int i=0;i

columnNames.add(meta.getColumnLabel(i+1).toLowerCase().trim());

}

Method[] methods=cla.getMethods();

List fields=new ArrayList();for(int i=0;i

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

Object objval=rs.getObject(i+1);for(int n=0;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;

}returnlist;

}/*** 查询返回List>格式数据,每一个Map代表一行数据,列名为key

*@paramsql sql语句

*@paramparams 填充问号占位符数

*@return

*/

public List>queryForMaps(String sql,Object[] params){try{if(params!=null&&params.length>0){returnjdbcTemplate.queryForList(sql, params);

}returnjdbcTemplate.queryForList(sql);

}catch(Exception ex){

ex.printStackTrace();

}return null;

}/*** 查询分页(MySQL数据库)

*@paramsql 终执行查询的语句

*@paramparams 填充sql语句中的问号占位符数

*@parampage 想要第几页的数据

*@parampagerow 每页显示多少条数

*@paramcla 要封装成的实体元类型

*@returnpageList对象*/

public PageList queryByPageForMySQL(String sql, Object[] params, int page, intpagerow,Class cla) {

String rowsql="select count(*) from ("+sql+") gmtxtabs_"; //查询总行数sql

int pages = 0; //总页数

int rows=(Integer)queryOneColumnForSigetonRow(rowsql, params, Integer.class); //查询总行数//判断页数,如果是页大小的整数倍就为rows/pageRow如果不是整数倍就为rows/pageRow+1

if (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 =newPageList();

pl.setPage(page);//设置显示的当前页数

pl.setPages(pages); //设置总页数

pl.setList(list); //设置当前页数据

pl.setTotalRows(rows); //设置总记录数

returnpl;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值