• Hibernate 查询数据库中的数据


    1.Criteria介绍

    Criteria与Session绑定,其生命周期跟随着Session结束而结束,使用Criteria时进行查询时,每次都要于执行时期动态建立物件,并加入各种查询条件,随着Session的回收,Criteria也跟着回收。

    org.hibernate.Criteria实际上是个条件附加的容器,如果想要设定查询条件,则要使用org.hibernate.criterion.Restrictions的各种静态方法传回org.hibernate.criterion.Criteria实例,传回的每个org.hibernate.criterion.Criteria实例代表着一个条件。

    2.Criterion介绍

    Criterion 是 Criteria 的查询条件。Criteria 提供了 add(Criterion criterion) 方法来添加查询条件。Criterion 的实例可以通过 Restrictions 工具类来创建,Restrictions 提供了大量的静态方法,如 eq (等于)、 ge (大于等于)、 between 等来方法的创建 Criterion 查询条件。除此之外, Restrictions 还提供了方法来创建 conjunction 和disjunction 实例,通过往该实例的 add(Criteria) 方法来增加查询条件形成一个查询条件集合。

    3.Restrictions的几个常用限定查询方法如下表所示:

    Restrictions.eq --> equal,等于.

    Restrictions.allEq --> 参数为Map对象,使用key/value进行多个等于的比对,相当于多个Restrictions.eq 的效果

    Restrictions.gt --> great-than > 大于

    Restrictions.ge --> great-equal >= 大于等于

    Restrictions.lt --> less-than, < 小于

    Restrictions.le --> less-equal <= 小于等于

    Restrictions.between --> 对应SQL的between子句

    Restrictions.like --> 对应SQL的LIKE子句

    Restrictions.in --> 对应SQL的in子句

    Restrictions.and --> and 关系

    Restrictions.or --> or 关系

    Restrictions.isNull --> 判断属性是否为空,为空则返回true  相当于SQL的 is null

    Restrictions.isNotNull --> 与isNull相反     相当于SQL的 is not null

    Restrictions.sqlRestriction --> SQL限定的查询

    Order.asc --> 根据传入的字段进行升序排序

    Order.desc --> 根据传入的字段进行降序排序

    MatchMode.EXACT --> 字符串精确匹配.相当于"like 'value'"

    MatchMode.ANYWHERE --> 字符串在中间匹配.相当于"like '%value%'"

    MatchMode.START --> 字符串在最前面的位置.相当于"like 'value%'"

    MatchMode.END --> 字符串在最后面的位置.相当于"like '%value'"

    4.实例应用

    (1)多个条件("与"的方式进行查询)

    //利用hibernate对数据库中的StudentEntity表进行查询,将查询结果放入一个集合返回
        public static List<StudentEntity> queryStudentByUserInput(String studentname, String realAddress, String riskrank){
            //1.创建一个session对象
            Session session1=HibernateTools.getSession();
            //2.通过session的createCriteria创建一个Criteria 对象
            Criteria criteria=session1.createCriteria(StudentEntity.class);
            //3. Criteria.add 增加约束(连续加入两个条件,达到"与"的效果),Restrictions.like()方法中的参数1为数据库表的实体类的成员变量,参数2为筛选内容,参数3为匹配方式
            criteria.add(Restrictions.like("name",studentname,MatchMode.ANYWHERE))
            .add(Restrictions.like("address","天",MatchMode.ANYWHERE));
            //4.调用list()方法返回查询结果的集合
            List<StudentEntity> studentinfolist=criteria.list();
            //开启一个新的事务Transaction
            session1.beginTransaction();
            //提交事务,此处才是真正与数据库交互的语句
            session1.getTransaction().commit();
            HibernateTools.closeSession();
            return studentinfolist;
        }

    (2)多个条件("或"的方式进行查询)

    //利用hibernate对数据库中的StudentEntity表进行查询,将查询结果放入一个集合返回
        public static List<StudentEntity> queryStudentByUserInput(String studentname, String realAddress, String riskrank){
            //1.创建一个session对象
            Session session1=HibernateTools.getSession();
            //2.通过session的createCriteria创建一个Criteria 对象
            Criteria criteria=session1.createCriteria(StudentEntity.class);
            //3. Criteria.add 增加约束(连续加入两个条件,达到"或"的效果)[筛选条件为:name属性中有"l"的,或address属性中有"天"或"金"]
            criteria.add(Restrictions.or(Restrictions.like("name", "l",MatchMode.ANYWHERE),
                    Restrictions.or(Restrictions.like("address", "天",MatchMode.ANYWHERE),Restrictions.like("address", "金",MatchMode.ANYWHERE))));
            //4.调用list()方法返回查询结果的集合
            List<StudentEntity> studentinfolist=criteria.list();
            //开启一个新的事务Transaction
            session1.beginTransaction();
            //提交事务,此处才是真正与数据库交互的语句
            session1.getTransaction().commit();
            HibernateTools.closeSession();
            return studentinfolist;
        }

     参考文献:https://my.oschina.net/u/2266102/blog/425601(极具参考价值)

  • 相关阅读:
    12306站点推出图片验证 反破解
    android自己定义控件之飞入飞出控件
    ORACLE 从一个实例迁移到另外一个实例实战记录
    通信协议:HTTP、TCP、UDP
    先打11.2.0.3.8这个PSU,后建库
    C# 多线程參数传递
    运维笔记10 (Linux软件的安装与管理(rpm,yum))
    为RecyclerView打造通用Adapter
    大话设计模式(四)单例模式
    Java代码质量监控工具Sonar安装
  • 原文地址:https://www.cnblogs.com/luckyplj/p/10711651.html
Copyright © 2020-2023  润新知