Hibernate之QBC查询与本地SQL查询
2015-11-11 22:34
225 查看
1. QBC查询:
QBC 查询就是通过使用Hibernate提供的QueryByCriteria API 来查询对象,这种API封装了SQL语句的动态拼装,对查询提供了更加面向对象的功能接口
QBC查询示例(接HQL查询,使用上一篇相同的环境):
2. 本地SQL查询:
本地SQL查询来完善HQL不能涵盖所有的查询特性
QBC 查询就是通过使用Hibernate提供的QueryByCriteria API 来查询对象,这种API封装了SQL语句的动态拼装,对查询提供了更加面向对象的功能接口
QBC查询示例(接HQL查询,使用上一篇相同的环境):
@Test public void testQBC(){ //1. 创建一个Criteria 对象 Criteria criteria=session.createCriteria(Employee.class); //2. 添加查询条件 :在QBC中,查询条件使用Criterion来表示 // Criterion 可以通过Restrictions的静态方法得到 criteria.add(Restrictions.eq("email", "name4@qq.com")); criteria.add(Restrictions.between("salary", 3000F, 10000F)); //3. 执行查询 Employee emp=(Employee) criteria.uniqueResult(); System.out.println(emp.getName()); System.out.println(emp.getDept().getName()); }
@Test public void testQBC3(){ Criteria criteria=session.createCriteria(Employee.class); // 添加排序 criteria.addOrder(Order.asc("salary")); criteria.addOrder(Order.desc("email")); // 添加分页 int pageSize=5; int pageNo=3; criteria.setFirstResult((pageNo-1)*pageSize) .setMaxResults(pageSize) .list(); } @Test public void testQBC2(){ Criteria criteria=session.createCriteria(Employee.class); // 统计查询 使用Projection表示,可以由Projections的静态方法得到 criteria.setProjection(Projections.max("salary")); System.out.println(criteria.uniqueResult()); } @Test public void testQBC1(){ Criteria criteria=session.createCriteria(Employee.class); //1 AND:使用Conjunction表示 // Conjunction 本身就是一个 Criterion对象 // 且其中还可以添加Criterion对象 Conjunction conjunction=Restrictions.conjunction(); conjunction.add(Restrictions.isNotNull("email")); conjunction.add(Restrictions.eq("salary", 6000F)); //2 OR: 使用Disjunction表示 Disjunction disjunction=Restrictions.disjunction(); disjunction.add(Restrictions.eq("name", "name6")); disjunction.add(Restrictions.like("email", "name")); criteria.add(disjunction); criteria.add(conjunction); Employee emp=(Employee) criteria.uniqueResult(); System.out.println(emp.getName()); System.out.println(emp.getDept().getName()); }其它关于QBC查询用法,参考Hibernate的操作手册:hibernate-release-4.2.5.Final\documentation\manual\en-US\html_single\index.html
2. 本地SQL查询:
本地SQL查询来完善HQL不能涵盖所有的查询特性
@Test public void testNativeSQL(){ String sql="insert into department values(?,?)"; Query query=session.createSQLQuery(sql); query.setInteger(0, 9) .setString(1, "umendme") .executeUpdate(); }同样本地sql查询相关内容也参看操作手册
相关文章推荐
- mysql中的升序和降序以及一个字段升序和一个字段降序
- 常用的sql查询语句
- mysql 中不会使用索引的几种情况
- 数据库管理与PL/SQL编程
- SQL Server 2016里TempDb的提升
- Plist 数据库的使用方法
- MySQL 5.7 zip版 安装过程
- Oracle 删除重复数据只留一条
- Mysql千万级别数据优化方案(单表)
- TimesTen 模拟锁表操作
- oracle rac查看磁盘组使用情况
- MySQL文件位置管理
- 基本开题的感觉是了-MySQL继续继续(自定义函数&存储过程)
- BigInsights -- 基于 Hadoop 的数据分析平台【基于db2数据库】
- mac中使用redis cluster 配置出现的问题
- sqlserver2008r2实现镜像
- sqlserver2008r2实现镜像
- mysql之触发器的使用
- 使用redis-cli定时执行指定命令
- 数据库表与表连接的方式(内连接、外连接[左连接、右连接、全连接]、交叉连接)