实现用SQL语句分页查询操作hibernate


@RequestMapping(value = "/FeedPager.cqzk")
    @ResponseBody
    public String url_sa1(HttpServletRequest request, BootPage page)
            throws ServletException, IOException, RuntimeException {
        @SuppressWarnings("unchecked")
        BootPage pager = feedBackDao.getBySQLPage("select Feedback.id,Feedback.title,Feedback.content," +
                "Feedback.creattime,Rms_User.user_name from t_Feedback Feedback,Rms_User where Feedback.userId = Rms_User.user_id ", page, null);
        System.out.println((JSONArray.fromObject(pager)).getString(0).toString());
        System.out.println((JSONArray.fromObject(pager)).getString(0).toString());
        return (JSONArray.fromObject(pager)).getString(0).toString();
    }
public BootPage getBySQLPage(String hql,BootPage pager,Map<String, Object> condition){
        if (pager == null) {
            throw new IllegalArgumentException("分页 不能为空!");
        }
        //如果不通过ALIAS_TO_ENTITY_MAP转换,就没有字段头。如name:hujingtao,就只有hujingtao。不便于取出
        Query q = sessionFactory.getCurrentSession().createSQLQuery(hql).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);;
        q.setFirstResult(pager.getOffset());
        q.setMaxResults(pager.getLimit());
        if(condition!=null){
            Iterator<?> iter = condition.keySet().iterator();
            while (iter.hasNext()) {
                String paramName = (String) iter.next();
                Object paramValue = condition.get(paramName);
                q.setParameter(paramName, paramValue);
            }
        }
        pager.setRows(q.list());
        pager.setTotal(this.countAllSQL(hql,condition));
        return pager;
        
    }
    protected Long countAllSQL(String hql, Map<String, Object> condition) {
        if (hql == null) {
            return 0l;
        }
        String sql = " select count(*) total from ( " + hql + " ) as temp ";        
        Query q = sessionFactory.getCurrentSession().createSQLQuery(sql);
        if(condition!=null){
            Iterator<?> iter = condition.keySet().iterator();
            while (iter.hasNext()) {
                String paramName = (String) iter.next();
                Object paramValue = condition.get(paramName);
                q.setParameter(paramName, paramValue);
            }
        }
        //返回的是Integer对象  需要转换
        return  new Long(((Integer) q.uniqueResult()).intValue());
    }


转载于:https://my.oschina.net/u/2340612/blog/395307

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值