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;
    }

    }

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

    结果演示:

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

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

  • 相关阅读:
    Highcharts 柱图 每个柱子外围的白色边框
    进阶ES6 点滴认知
    layer 问题 汇总
    iframe 常见问题 解析
    【腾讯开源】前端预处理器语言图形编译工具 Koala使用指南
    ruby环境sass编译中文出现Syntax error: Invalid GBK character错误解决方法
    Sass 混合宏、继承、占位符 详解
    git 命令篇
    git 继续前进篇
    zh-cn en-uk、zh-tw表示语言(文化)代码与国家地区对照表(最全的各国地区对照表)
  • 原文地址:https://www.cnblogs.com/mannixiang/p/6610138.html
Copyright © 2011-2022 走看看