zoukankan      html  css  js  c++  java
  • 批量查询Criteria(查询所有、条件、分页、统计(聚合函数)、排序、Criteria 和与DetachedCriteria)

    1、查询所有的学生信息:

    public static void testSel() {
                Session session = HibernateUtils.openSession();
                Transaction transaction = session.beginTransaction();
                Criteria criteria=session.createCriteria(Student.class);
                List<Student>list= criteria.list();
                System.out.println(list);
                transaction.commit();
                session.close();
            }

     2、条件查询:

    运算符与对应的英文缩写:

    > gt  >=ge  <lt  <=le  ==eq

    !=ne  in:in  between and::between

    like:like  is not null:isNotNull  

    or:or  and:and

    (1)eq的运用:

    public static void testSel() {
                Session session = HibernateUtils.openSession();
                Transaction transaction = session.beginTransaction();
                Criteria criteria=session.createCriteria(Student.class);
                criteria.add(Restrictions.eq("sex",""));
                List<Student>list= criteria.list();
                System.out.println(list);
                transaction.commit();
                sessio

     (2)like的运用:

    public static void testSel() {
                Session session = HibernateUtils.openSession();
                Transaction transaction = session.beginTransaction();
                Criteria criteria=session.createCriteria(Student.class);
                criteria.add(Restrictions.like("sname","许__"));
                List<Student>list= criteria.list();
                System.out.println(list);
                transaction.commit();
                session.close();
            }

     3、分页查询:

    需要事先设置起始位置和查询的数量。

    public static void testSel() {
                Session session = HibernateUtils.openSession();
                Transaction transaction = session.beginTransaction();
                Criteria criteria=session.createCriteria(Student.class);
                criteria.add(Restrictions.eq("sex",""));
                criteria.setFirstResult(1);
                criteria.setMaxResults(2);
                List<Student>list= criteria.list();
                System.out.println(list);
                transaction.commit();
                session.close();
            }

    4、总记录数的获取:

     public static void testSel() {
                Session session = HibernateUtils.openSession();
                Transaction transaction = session.beginTransaction();
                Criteria criteria=session.createCriteria(Student.class);
                criteria.setProjection(Projections.rowCount());//聚合函数获得总行数
                Long rowNum= (Long) criteria.uniqueResult();
                System.out.println(rowNum);
                List<Student>list= criteria.list();
                System.out.println(list);
                transaction.commit();
                session.close();
            }

     5、排序:

    升序:

    public static void testSel() {
            Session session = HibernateUtils.openSession();
            Transaction transaction = session.beginTransaction();
            Criteria criteria=session.createCriteria(Student.class);
            criteria.addOrder(Order.asc("studentno"));
            List<Student>list= criteria.list();
            System.out.println(list);
            transaction.commit();
            session.close();
        }

     降序:

     public static void testSel() {
            Session session = HibernateUtils.openSession();
            Transaction transaction = session.beginTransaction();
            Criteria criteria=session.createCriteria(Student.class);
            criteria.addOrder(Order.desc("studentno"));
            List<Student>list= criteria.list();
            System.out.println(list);
            transaction.commit();
            session.close();
        }

     5、Criteria 和 DetachedCriteria的区别

    Criteria 和 DetachedCriteria 的主要区别在于创建的形式不一样, Criteria 是在线的,所以它是由 Hibernate Session 进行创建的;而 DetachedCriteria 是离线的,创建时无需Session。

    例如下面的条件查询代码写在servlet中,没有与session进行连接:

     String cust_name = request.getParameter("cust_name");
            DetachedCriteria dc = DetachedCriteria.forClass(Customer.class);
            if(cust_name!=null && !"".equals(cust_name)){
                dc.add(Restrictions.like("cust_name", "%"+cust_name+"%"));
            }
  • 相关阅读:
    centos PIL 安装
    apache virtualhost 针对ip开放访问
    基础练习 矩形面积交 (分类讨论)
    UVa 10163 Storage Keepers (二分 + DP)
    UVaLive 5009 Error Curves (三分)
    UVa 11542 Square (高斯消元)
    UVa 10828 Back to Kernighan-Ritchie (数学期望 + 高斯消元)
    基础练习 回形取数 (循环 + Java 输入输出外挂)
    UVaLive 3704 Cellular Automaton (循环矩阵 + 矩阵快速幂)
    勇敢的妞妞 (状压 + 搜索)
  • 原文地址:https://www.cnblogs.com/zhai1997/p/11829304.html
Copyright © 2011-2022 走看看