zoukankan      html  css  js  c++  java
  • hibernate框架学习之数据查询(QBC)

    lQBC(Query By Criteria)是一种Hibernate中使用面向对象的格式进行查询的计数

    lQBC查询方式步骤

    •获取Session对象

    •初始化Criteria对象(使用Session对象创建)

    •由Session对象创建

    •传入要查询的数据模型类

    •添加各种查询条件

    •执行查询返回结果(返回单条数据或集合数据)


    lQBC查询格式非常简单,更符合编程人员的习惯

    image

    •Criteria对象用于由Session对象创建,传入要查询的PO类

    •Criteria c = s.createCriteria(TeacherModel.class);


    lQBC的查询结果与HQL相同分为两种

    •查询结果为多条数据使用list方法获取集合

    •查询结果为单一数据使用uniqueResult方法获取对象


    分页查询

    lQBC查询中的分页格式与HQL中使用的分页格式完全相同,通过方法设定参数完成

    •setFirstResult(int);

    •setMaxResults(int);


    QBC——查询结果排序

    lQBC查询结果排序相对于HQL简化很多

    image

    •为Criteria对象创建的查询结果排序只需要为其添加排序规则

    •c.addOrder(排序规则);

    •排序规则是Order对象的常量,传入对象中排序的属性

    •c.addOrder(Order.desc("age"));

    •Order.desc(String)是排序规则,age是排序字段

    •排序规则可以设定多个,由添加顺序决定主副排序顺序


    QBC——条件查询(重点)

    lQBC条件查询是QBC查询中最强大的功能,由于格式由SQL语句转化为对象化操作,因此需要掌握转化后的对应关系与书写规则

    lQBC将所有的查询条件封装成面向对象的操作,从格式上初期接受起来比较困难


    QBC——条件查询规则

    image


    QBC——条件查询规则

    lHQL与QBC条件运算符对应关系

    image

    image


    QBC——条件查询示例

    l查询年龄小于30岁的学生

    •c.add(Restrictions.lt("age", 30));

    l查询年龄不小于30岁的学生

    •c.add(Restrictions.not(Restrictions.lt("age", 30)));

    •c.add(Restrictions.ge("age", 30));

    l查询年龄小于35岁,职业技能中包含“剑”的学生

    •c.add(Restrictions.and(Restrictions.lt("age", 45), Restrictions.like("skill", "%剑%")));


    QBC——多表关联查询

    l查询教师“李若亮的所有学生”

    image

    •无法查找到teacher.teacherName属性

    l使用别名引用teacher.teacherName对象图导航

    image

    •使用别名t表示StudentModel类中的被关联的属性teacher,然后进行对象图导航格式进行条件设置

    别名的定义是为了关联到对应的对象


    HQL与QBC比较

    l当业务十分简单时,推荐使用HQL查询

    l当进行复杂条件查询时,推荐使用QBC查询

    l如果考虑到业务分层时的耦合度降低,抛弃离线查询DetachedCriteria,改用Model传参,扔可使用Criteria进行查询

    l基于性能考虑,在必须使用Hibernate时,HQL从各个方面,包括复杂条件查询,整体性能优于QBC查询,可以考虑抛弃Criteria查询模式

  • 相关阅读:
    python多线程多进程
    python单元测试unittest
    python学习笔记(一):python简介和入门
    今天的收获!!!
    Python django
    React router
    30分钟掌握ES6/ES2015核心内容
    webpack+React.js
    我喜欢的两个js类实现方式 现在再加上一个 极简主义法
    js实现的笛卡尔乘积-商品发布
  • 原文地址:https://www.cnblogs.com/xyhero/p/9351755.html
Copyright © 2011-2022 走看看