php用sql语句查询怎么分页查询语句,实现用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 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 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());

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值