hibernateCriteria的使用.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
在Java的持久化框架Hibernate中,Criteria API是一种用于构建动态查询的强大工具,它允许开发者以编程方式构建查询,而不是直接写SQL语句。下面将详细解释Criteria API的使用及其相关概念。 1. Query By Example (QBE) QBE是通过提供一个对象实例作为模板来执行查询的方法。例如,在给定的代码片段中: ```java Student s = new Student(); s.setGiftOrToy("2"); Criteria cri = session.createCriteria(Student.class); cri.add(Example.create(s)); List<Student> list = cri.list(); ``` 这里,`Example.create(s)`会根据`s`对象的属性生成查询条件,查询所有`giftortoy`字段为"2"的学生对象。 2. Query By Criteria (QBC) QBC是Criteria API的核心,它使用`Criteria`、`Criterion`、`Order`和`Restrictions`类来构建查询。以下是一个示例: ```java Criteria cri = session.createCriteria(JdItemSerialnumber.class); Criterion cron = Restrictions.like("customer", name); cri.add(cron); List<JdItemSerialnumber> list = cri.list(); ``` 这里的`Restrictions.like()`方法用于创建一个包含指定模式匹配的条件,如查找`customer`字段包含`name`的记录。 3. 比较运算符 Criteria API提供了多种比较运算符,如等于(`eq()`)、不等于(`not()`)、大于(`gt()`)等,以及逻辑操作符(`and()`、`or()`、`not()`)。这些运算符可以帮助我们构建复杂的查询条件。例如: ```java cri.add(Restrictions.eq("property", value)); cri.add(Restrictions.not(Restrictions.in("property", valueList))); ``` 4. HQL Hibernate Query Language(HQL)是Hibernate的面向对象的查询语言,类似于SQL,但操作对象和属性而非表和列。以下是一个HQL示例: ```java String hql = "select s.name, avg(s.age) from Student s group by s.name"; Query query = session.createQuery(hql); List<Object[]> list = query.list(); ``` 此查询将返回每个学生名字及对应的平均年龄。 5. 本地SQL查询 当需要执行特定于数据库的SQL语句时,可以使用`session.createSQLQuery()`。例如: ```java SQLQuery sq = session.createSQLQuery(sql); sq.addEntity(Student.class); List<Student> list = sq.list(); ``` 这段代码将执行指定的SQL查询,并将结果映射到`Student`实体。 6. Criteria API的其他方法 Criteria API还提供了其他功能,如限制结果集大小(`setMaxResults()`),按特定顺序排序(`addOrder(Order)`),以及添加多个查询条件(`createCriteria()`和`createAlias()`)。 总结来说,Hibernate Criteria API提供了一种灵活且类型安全的方式来构建动态查询,可以适应各种复杂的查询需求。通过组合不同的`Criterion`,我们可以构建出满足各种业务逻辑的查询条件,同时保持代码的可读性和可维护性。这使得Hibernate成为Java开发中处理数据库交互的强大工具。
剩余19页未读,继续阅读
- 粉丝: 1w+
- 资源: 6万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 章节1:Python入门视频
- 无需样板的 Python 类.zip
- ESP32 : 32-bit MCU & 2.4 GHz Wi-Fi & BT/BLE SoCs
- 博物馆文博资源库-JAVA-基于springBoot博物馆文博资源库系统设计与实现
- 旅游网站-JAVA-springboot+vue的桂林旅游网站系统设计与实现
- 小说网站-JAVA-基于springBoot“西贝”小说网站的设计与实现
- 游戏分享网站-JAVA-基于springBoot“腾达”游戏分享网站的设计与实现
- 学习交流-JAVA-基于springBoot“非学勿扰”学习交流平台设计与实现
- EDAfloorplanning
- 所有课程均提供 Python 复习部分.zip