zoukankan      html  css  js  c++  java
  • Hibernate里面如何使用DetachedCriteriaCriteria 实现多条件分页查询

    WEB层:

    // 获取分页的请求参数
    String start = request.getParameter("start");
    String page = request.getParameter("page");
    String limit = request.getParameter("limit");

    //获取请求表单的值,然后根据值是否为空,构件离线查询条件。
    String tb_zzid = request.getParameter("tb_zzid");
    String zc_xmbh = request.getParameter("zc_xmbh");
    String zy_xmbh = request.getParameter("zy_xmbh");
    String zc_zcly = request.getParameter("zc_zcly");

    DetachedCriteria criteria=DetachedCriteria.forClass(Zyzc.class);

    if(tb_zzid !=null && !"".equals(tb_zzid))
    {
    criteria.add(Restrictions.like("tb_zzid", tb_zzid, MatchMode.ANYWHERE));
    }
    if(zc_xmbh !=null && !"".equals(zc_xmbh))
    {
    criteria.add(Restrictions.like("zc_xmbh", zc_xmbh, MatchMode.ANYWHERE));
    }
    if(zy_xmbh !=null && !"".equals(zy_xmbh))
    {
    criteria.add(Restrictions.like("zy_xmbh", zy_xmbh, MatchMode.ANYWHERE));
    }
    if(zc_zcly !=null && !"".equals(zc_zcly))
    {
    criteria.add(Restrictions.like("zc_zcly", zc_zcly, MatchMode.ANYWHERE));
    }

    --------------------------------

    然后就可以调用service层的方法

    //获取根据离线条件查询的记录;

    es.getZyzcsByConditonPage( criteria,Integer.parseInt(page), Integer.parseInt(limit))

    //获取根据离线条件查询的记录总数;

    es.getZyzcCountByCondition(criteria)

    ---------------------------------------------------------------------------------------------------------

    SERVICE层:

    //调用DAO层方法
    public long getZyzcCountByCondition(DetachedCriteria criteria) {
    // TODO Auto-generated method stub
    try
    {
    return zyzcDao.findCountByCondition(criteria);
    }
    catch (Exception e)
    {
    e.printStackTrace();
    throw new ElecException("获取发电记录列表出错");
    }
    }

    //调用DAO方法获取记录总数
    public List<Zyzc> getZyzcsByConditonPage(DetachedCriteria criteria, int pageNo, int pageSize)
    {

    List<Zyzc> result = new ArrayList<Zyzc>();
    try
    {
    List el = zyzcDao.findByConditionPage(criteria, pageNo, pageSize);
    for (Object o : el)
    {
    Zyzc e = (Zyzc)o;
    result.add(e);
    }
    return result;
    }
    catch (Exception e)
    {
    e.printStackTrace();
    throw new ElecException("获取发电记录列表出错");
    }
    }

    --------------------------------------------------------------------

    DAO层:

    //继承hibernate4公共基础类,获取session,然后执行离线查询;

    public class ZyzcDAOImpl extends BaseDaoHibernate4<Zyzc> implements ZyzcDAO
    {

    public List findByConditionPage(DetachedCriteria criteria, int pageNo,int pageSize)
    {
    Criteria c =criteria.getExecutableCriteria(getSessionFactory().getCurrentSession());
    // 执行分页,并返回查询结果
    return c.setProjection(null)
    .setFirstResult((pageNo - 1) * pageSize)
    .setMaxResults(pageSize)
    .list();
    }

    // 获取查询记录结果总数,用于分页;
    public long findCountByCondition(DetachedCriteria criteria)
    {
    Criteria c =criteria.getExecutableCriteria(getSessionFactory().getCurrentSession());
    c.setProjection(Projections.rowCount());
    Long totalNum =(Long) c.uniqueResult();
    return totalNum;
    }

    }

    ----------------------------------------------

    结果演示:

    未设置任何条件时,显示记录总数量;

    设置条件后,显示查询结果总数。

  • 相关阅读:
    sql STUFF用法
    关于原型链
    原生js事件绑定
    http常见7种请求
    关于linux的一些常用的指令
    flex布局详解
    html5 新增元素以及css3新特性
    css浮动以及清除
    css 浮动
    计算机网络
  • 原文地址:https://www.cnblogs.com/mannixiang/p/6610138.html
Copyright © 2011-2022 走看看