spring roo 开发meavn项目(三)分页读取数据示例
2016-07-22 15:21
495 查看
读取表格数据中经常会用到分页功能,前端传入页码,每页显示条数,从数据库中取出相应条数据,返回到service层,进行处理。
这里新建了一个数据分页的类,用于存储分页相关参数和查询出的数据
在DAO层查询数据,这里以Inventor类的查询为例
public static PageUtil searchInventor(String universityid, int pageSize, int pageNumber) {
String sqlstr = " ";
String sqlcount = "SELECT count(*) ";
String sql = "SELECT Inventor ";
sqlstr = "from Inventor Inventor where Inventor.university='" + universityid + "'";
PageUtil pu = new PageUtil();
pu.setPageSize(pageSize);
pu.setPageNumber(pageNumber);
int total = entityManager().createQuery(sqlcount + sqlstr, Long.class).getSingleResult().intValue();
TypedQuery<Inventor> inventorQuery = entityManager().createQuery(sql + sqlstr, Inventor.class);
inventorQuery.setFirstResult(pu.getPageSize() * (pu.getPageNumber() - 1)).setMaxResults(pu.getPageSize());
pu.setPageTotal(total);
pu.setRows(inventorQuery.getResultList());
return pu;
}
返回结果导service层后,通过PageUtil取出数据进行处理后,将组装的map传回前前端
/**
* description: 根据条件查询发明人
*
* @author xc
*/
public Map<String, Object> searchInventor(String universityid, int pageSize, int pageNumber) {
PageUtil<Inventor> pu = Inventor.searchInventor(universityid, pageSize, pageNumber);
Map<String, Object> map = new HashMap<String, Object>();
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd");
List<Map<String, Object>> inventorlist = new ArrayList<Map<String, Object>>();
for (Inventor inventor : pu.getRows()) {
Map<String, Object> inventorMap = new HashMap<String, Object>();
inventorMap.put("inventorid", inventor.getInventorid().toString());
inventorMap.put("jobnumber",inventor.getJobnumber());
inventorMap.put("namecn", inventor.getNamecn());
inventorMap.put("nameen", inventor.getNameen());
inventorMap.put("addresscn", inventor.getAddresscn());
inventorMap.put("registertime", dateFormatter.format(inventor.getRegistertime()));
inventorlist.add(inventorMap);
}
map.put("rows", inventorlist);
map.put("total", pu.getPageTotal());
return map;
}
这里新建了一个数据分页的类,用于存储分页相关参数和查询出的数据
package com.collegepatent.util; import java.util.List; /** * 分页专用类 * * @author xc * */ public class PageUtil<T> { private int pageSize; private int pageNumber; private int pageTotal; private List<T> rows; public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPageNumber() { return pageNumber; } public void setPageNumber(int pageNumber) { this.pageNumber = pageNumber; } public int getPageTotal() { return pageTotal; } public void setPageTotal(int pageTotal) { this.pageTotal = pageTotal; } public List<T> getRows() { return rows; } public void setRows(List<T> rows) { this.rows = rows; } }
在DAO层查询数据,这里以Inventor类的查询为例
public static PageUtil searchInventor(String universityid, int pageSize, int pageNumber) {
String sqlstr = " ";
String sqlcount = "SELECT count(*) ";
String sql = "SELECT Inventor ";
sqlstr = "from Inventor Inventor where Inventor.university='" + universityid + "'";
PageUtil pu = new PageUtil();
pu.setPageSize(pageSize);
pu.setPageNumber(pageNumber);
int total = entityManager().createQuery(sqlcount + sqlstr, Long.class).getSingleResult().intValue();
TypedQuery<Inventor> inventorQuery = entityManager().createQuery(sql + sqlstr, Inventor.class);
inventorQuery.setFirstResult(pu.getPageSize() * (pu.getPageNumber() - 1)).setMaxResults(pu.getPageSize());
pu.setPageTotal(total);
pu.setRows(inventorQuery.getResultList());
return pu;
}
返回结果导service层后,通过PageUtil取出数据进行处理后,将组装的map传回前前端
/**
* description: 根据条件查询发明人
*
* @author xc
*/
public Map<String, Object> searchInventor(String universityid, int pageSize, int pageNumber) {
PageUtil<Inventor> pu = Inventor.searchInventor(universityid, pageSize, pageNumber);
Map<String, Object> map = new HashMap<String, Object>();
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd");
List<Map<String, Object>> inventorlist = new ArrayList<Map<String, Object>>();
for (Inventor inventor : pu.getRows()) {
Map<String, Object> inventorMap = new HashMap<String, Object>();
inventorMap.put("inventorid", inventor.getInventorid().toString());
inventorMap.put("jobnumber",inventor.getJobnumber());
inventorMap.put("namecn", inventor.getNamecn());
inventorMap.put("nameen", inventor.getNameen());
inventorMap.put("addresscn", inventor.getAddresscn());
inventorMap.put("registertime", dateFormatter.format(inventor.getRegistertime()));
inventorlist.add(inventorMap);
}
map.put("rows", inventorlist);
map.put("total", pu.getPageTotal());
return map;
}
相关文章推荐
- java学习之UDP
- 使用SAX解析将xml的文件内容结构保存到java对象中
- java BigDecimal详解(转载)
- java学习之socket
- Java 动态生成jpg图片
- 几种任务调度的 Java 实现方法与比较
- 《Java源码分析》:Stack
- java基础:位运算的魅力
- [JDK1.7源码阅读]ArrayList
- Java 递归求和
- 正则表达式之密码效验(检验密码是含有小写字母、大写字母、数字、特殊符号的两种及以上)
- Java并发编程:深入剖析ThreadLocal
- java 打印ssl日志
- Activiti(六)SSH项目实战
- eclipse配置以指定的jdk启动
- Spring 配置JNDI连接池
- 基于Servlet+JSP+JavaBean开发
- Spring包的方法WebUtils.getParametersStartingWith(request,String)
- Java并发
- springMVC+spring+MyBatis+websocket技术整合