Hibernate 多表查询分页核心代码
<div class="code_title">java 代码<div class="dp-highlighter"><div class="bar" />[*]/**
[*] * 多表分页,然后影射成JAVABEAN
[*] * @param sqlcount HSQL计算多表查询的总数
[*] * @param sqllist HSQL多表查询的语句
[*] * @return List
[*] * @throws InvocationTargetException
[*] * @throws IllegalAccessException
[*] * @throws InstantiationException
[*] * @throws IllegalArgumentException
[*] * @throws ClassNotFoundException
[*] * @throws NoSuchMethodException
[*] * @throws SecurityException
[*] * @throws DaoException
[*] */
[*] public List mutiTableList(String sqlcount,String sqllist,String classname,Class partypes[]) throws DataAccessException, HibernateException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException, ClassNotFoundException, SecurityException, NoSuchMethodException {
[*] HttpServletRequest httpRequest = BaseAction.getHttpRequest();
[*] System.out.println("执行次数"+(count++));
[*] List res = new ArrayList();//将用于存放保存的结果集合
[*] org.hibernate.ScrollableResults srs = null;
[*] Session session = this.getSession();
[*] int total = queryTotalCount(sqlcount);
[*] records.setTotalNum(total);
[*]<span />// records.setParam(condition);
[*] String pageSize = RequestUtil.getParam(httpRequest, "pageSize", String.valueOf(PagedList.DEFAULT_PAGE_SIZE));
[*] records.setPageSize(Integer.parseInt(pageSize));
[*] int totalPage = records.getTotalPage();
[*] RequestUtil.setParam(httpRequest, "pageSize", pageSize);
[*] // 用自定义的辅助类来取参数值,如果参数为空,则返回指定的默认值
[*] String page = RequestUtil.getParam(httpRequest, "page", "1");
[*] if (Integer.parseInt(page) > totalPage) {
[*] page = "" + totalPage;
[*] }
[*] // 设置请求页码
[*] records.setPage(Integer.parseInt(page));
[*] //下面创建一个匿名Query实例并调用它的scroll()方法返回以ScrollableResults形式组织的查询结果
[*] Query q = session.createQuery(sqllist);
[*] q.setFirstResult(records.getQueryStartNum()-1);
[*] q.setMaxResults(records.getQueryEndNum());
[*] srs = q.scroll();
[*] //将查询结果放入List保存
[*] while(srs.next()){
[*] Class cl=Class.forName(classname);
[*] Constructor cs = cl.getConstructor(partypes);
[*] Object ob[]=new Object;
[*] for(int i=0;i
[*] if (partypes == String.class){
[*] ob=srs.getString(i);
[*] }
[*] else if (partypes ==int.class){
[*] ob=srs.getInteger(i);
[*] }
[*] else if (partypes ==long.class){
[*] ob=srs.getLong(i);
[*] }
[*] else if (partypes ==short.class){
[*] ob=srs.getShort(i);
[*] }
[*] else if (partypes ==float.class){
[*] ob=srs.getFloat(i);
[*] }
[*] else if (partypes ==double.class){
[*] ob=srs.getDouble(i);
[*] }
[*] else if (partypes ==byte.class){
[*] ob=srs.getDouble(i);
[*] }
[*] else if (partypes ==char.class){
[*] ob=srs.getDouble(i);
[*] }
[*] else if (partypes ==boolean.class){
[*] ob=srs.getDouble(i);
[*] }
[*] else if (partypes ==Date.class){
[*] ob=srs.getDate(i);
[*] }
[*] }
[*] Object ob2 =cs.newInstance(ob);
[*] res.add(ob2);
[*] }
[*] records.setStart(records.getQueryStartNum());
[*] records.setSource(res);
[*] String url = httpRequest.getRequestURI();
[*] String query = CharUtil.IsoToGbk(httpRequest.getQueryString());
[*] records.setRequestURL(url + RequestUtil.getParamQueryString(query));
[*] //设置分页参数
[*] httpRequest.setAttribute("records", records);
[*] return records.getList();
[*] }
页:
[1]