JPA entityManager 实现 分页查询
来源:互联网 发布:mysql 添加字符串 编辑:程序博客网 时间:2024/05/18 12:30
@Overridepublic PageModel queryForPager(int pageNumber, int pageSize,Class entityClass, String condition, String sort,HttpServletRequest request, Object... params) {EntityManager entityManager = getEntityManager(request,1);String schemaName = entityManager.getProperties().get("id")+"";PageModel page = new PageModel();String sqllist = SqlHelper.generateSelectSqlForPager(pageNumber,pageSize, entityClass, condition, sort,schemaName);String sqlcount = SqlHelper.generateSelectSqlForCount(entityClass,condition);if(params instanceof Object[]){sqllist = formatSql(sqllist,params);sqlcount = formatSql(sqlcount,params);}Query createNativeQuery = entityManager.createNativeQuery(SqlParserUtil.sqlParserForSelect(sqllist, schemaName));List resultList = createNativeQuery.getResultList();Query createNativeQuery2 = entityManager.createNativeQuery(SqlParserUtil.sqlParserForSelect(sqlcount, schemaName));List resultList2 = createNativeQuery2.getResultList();page.setList(resultList);page.setTotalRows(resultList2.size());page.setPageSize(pageSize);page.setPageNumber(pageNumber);page.setTotalPages((int) Math.ceil((double) page.getTotalRows()/ (double) pageSize));return page;}/* * 参数转换 */private String formatSql(String sql, Object[] params) {Object[] arr = params;int i =0;while(sql.contains("?")){sql = sql.replaceFirst("\\?", "'"+arr[i]+"'");;i++;}if(i!=arr.length){throw new RuntimeException("参数与替换参数 数目不相等");}return sql;}@Overridepublic PageModel queryForPagerSQL(int pageNumber, int pageSize,Class entityClass, String condition, String sort, String sql,String sql1, HttpServletRequest request,Object... params) {EntityManager entityManager = getEntityManager(request,1);String schemaName = entityManager.getProperties().get("id")+"";PageModel page = new PageModel();String sqllist = sql + " where " + condition + " order by " + sort +" limit " + ((pageNumber - 1) * pageSize) + "," + pageSize;sqllist = SqlParserUtil.sqlParserForSelect(sqllist, schemaName);sqllist = "select (@i:=@i+1)AS i,t.* from ("+sqllist+") as t,(SELECT @i:=0) AS it";String sqlcount = sql1 + " where " + condition;if(params instanceof Object[]){sqllist = formatSql(sqllist,params);sqlcount = formatSql(sqlcount, params);}Query createNativeQuery = entityManager.createNativeQuery(sqllist);List resultList = createNativeQuery.getResultList();Query createNativeQuery2 = entityManager.createNativeQuery(SqlParserUtil.sqlParserForSelect(sqlcount, schemaName));List resultList2 = createNativeQuery2.getResultList();page.setList(resultList);page.setTotalRows(resultList2.size());page.setPageSize(pageSize);page.setPageNumber(pageNumber);page.setTotalPages((int) Math.ceil((double) page.getTotalRows()/ (double) pageSize));return page;}@Overridepublic PageModel queryForPagerSQLGroup(int pageNumber, int pageSize,Class entityClass, String condition, String sort, String sql,String sql1, HttpServletRequest request, Object... params) {EntityManager entityManager = getEntityManager(request,1);String schemaName = entityManager.getProperties().get("id")+"";PageModel page = new PageModel();String sqllist = sql + " where " + condition + " order by " + sort +" limit " + ((pageNumber - 1) * pageSize) + "," + pageSize;sqllist = SqlParserUtil.sqlParserForSelect(sqllist, schemaName);int a=((pageNumber - 1) * pageSize);sqllist = "select (@i:=@i+1)AS i,t.* from ("+sqllist+") as t,(SELECT @i:="+a+") AS it";String sqlcount = sql1 + " where " + condition;sqlcount="Select Count(*) from ("+sqlcount+") t ";if(params instanceof Object[]){sqllist = formatSql(sqllist,params);sqlcount = formatSql(sqlcount, params);}Query createNativeQuery = entityManager.createNativeQuery(sqllist);List resultList = createNativeQuery.getResultList();Query createNativeQuery2 = entityManager.createNativeQuery(SqlParserUtil.sqlParserForSelect(sqlcount, schemaName));List resultList2 = createNativeQuery2.getResultList();page.setList(resultList);page.setTotalRows(resultList2.size());page.setPageSize(pageSize);page.setPageNumber(pageNumber);page.setTotalPages((int) Math.ceil((double) page.getTotalRows()/ (double) pageSize));return page;}
阅读全文
1 0
- JPA entityManager 实现 分页查询
- Spring Data Jpa实现分页查询
- JPA-EntityManager
- jpa 分页和查询
- JPA 分页查询Pageable
- jpa hibernate分页查询
- SpringData JPA分页查询
- SpringBoot+Jpa实现增删改查以及分页查询
- JPA实现分页
- JPA实现分页
- JPA EntityManager详解
- JPA EntityManager详解
- jpa entityManager 配置
- JPA EntityManager详解(一)
- JPA EntityManager详解(二)
- EJB之JPA(EntityManager)
- JPA EntityManager详解(二)
- JPA中的EntityManager
- 设置Tomcat的UTF-8编码
- docker搭建私有仓库以及使用
- Linux网络编程-TCP
- 从Properties.Resources里的byte生成word文件
- 07 用URL正则实现文章链接跳转
- JPA entityManager 实现 分页查询
- 彩票预测以及EXCEL历史数据匹配正确(纯js)
- bzoj3626: [LNOI2014]LCA
- 个人记录jdk各版本之间的一些区别
- 【知识总结】显示/隐藏状态栏和导航栏
- 用shell中用jq解析json遇到compile error
- Microsoft Word 2010
- package.json.lock 文件
- 伪共享,并发编程无声的性能杀手