1. QBC查询:

    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查询相关内容也参看操作手册

Hibernate之QBC查询与本地SQL查询的更多相关文章

  1. Hibernate的四种查询方式(主键查询,HQL查询,Criteria查询,本地sql查询)和修改和添加

    Hibernate的添加,修改,查询(三种查询方式)的方法: 案例演示: 1:第一步,导包,老生常谈了都是,省略: 2:第二步,创建数据库和数据表,表结构如下所示: 3:第三步创建实体类User.ja ...

  2. Hibernate之QBC检索和本地SQL检索

    QBC查询就是通过使用Hibernate提供的Query By Criteria API来查询对象,这种API封装了SQL语句的动态拼装,对查询提供了更加面向对象的功能接口 本地SQL查询来完善HQL ...

  3. Hibernate(十五):QBC检索、本地SQL检索和HQL删除

    QBC检索 QBC查询就是通过使用Hibernate提供的Query By Criteria API来查询对象,这种API封装了SQL语句的动态拼装,对查询提供了更加面向对象的功能接口. 1)通过Cr ...

  4. [原创]java WEB学习笔记92:Hibernate学习之路-- -QBC 检索和本地 SQL 检索:基本的QBC 查询,带 AND 和 OR 的QBC,统计查询,排序,分页

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  5. hibernate将本地SQL查询结果封装成对象

    hibernate将本地SQL查询结果封装成对象 不知道大家有没有碰过这种情况,迫于很多情况只能用native SQL来查询(如:复杂统计等),然而使用native查询后,结果会被放到object里, ...

  6. hibernate框架学习之数据查询(本地SQL)

    本地SQL查询方式 lHibernate框架支持使用原生态SQL语句进行操作数据库 l查询对象SQLQuery由Session获取 •SQLQuery sq = s.createSQLQuery(&q ...

  7. 本地SQL查询

    -------------------siwuxie095 本地 SQL 查询 1.简单介绍 采用 HQL 或 QBC 查询时,Hibernate 生成标准的 SQL 语句, 适用于所有的数据库平台, ...

  8. QBC检索和本地SQL检索

    细说QBC:QBC(Query By Criteria) 查询:这种方式比较面向对象方式,因为是面向对象,所以查询时参数名就是所查询的类的属性名并不是数据库的表的列名重点是有三个描述条件的对象:Res ...

  9. 【T-SQL基础】01.单表查询-几道sql查询题

    概述: 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础 ...

随机推荐

  1. 使用HttpClient发送HTTPS请求以及配置Tomcat支持SSL

    这里使用的是HttpComponents-Client-4.1.2 package com.jadyer.util; import java.io.File; import java.io.FileI ...

  2. typeof和GetType的区别

    http://stackoverflow.com/questions/4537945/what-is-the-difference-of-getting-type-by-using-gettype-a ...

  3. struct TABLE

    struct TABLE { TABLE() {} /* Remove gcc warning */ TABLE_SHARE *s; handler *file; TABLE *next, *prev ...

  4. sql字符串函数(转)

    计算字符串长度 len()用来计算字符串的长度 select sname ,len(sname) from student 字符串转换为大.小写 lower() 用来将一个字符串转换为小写,upper ...

  5. Zxing 扫二维码

    1 http://blog.csdn.net/xiaanming/article/details/10163203 2 我会把一个可以运行的Demo云盘:http://pan.baidu.com/s/ ...

  6. POJ 3084 Panic Room (最小割建模)

    [题意]理解了半天--大意就是,有一些房间,初始时某些房间之间有一些门,并且这些门是打开的,也就是可以来回走动的,但是这些门是确切属于某个房间的,也就是说如果要锁门,则只有在那个房间里才能锁. 现在一 ...

  7. linux + ffmpeg + eclipse 调试

    使用linux + ffmpeg + eclipse调试步骤OS : ubuntu 12.04Eclipse : 3.7.2 为Eclipse安装cdt插件,使其支持c/c++ 导入ffmpeg项目 ...

  8. Linux编译安装Darwin Streaming Server 6.0.3

    买回来VPS后就一直想在上面搭建一个流媒体服务,在网上搜索了很多资料,大部分都是介绍Linux中安装Darwin Streaming Server 5.5.5版本,因为这个版本提供了针对linux的安 ...

  9. shell中for循环总结

    关于shell中的for循环用法很多,一直想总结一下,今天网上看到上一篇关于for循环用法的总结,感觉很全面,所以就转过来研究研究,嘿嘿... 1. for((i=1;i<=10;i++));d ...

  10. 《C++ Primer 4th》读书笔记 第7章-函数

    原创文章,转载请注明出处:http://www.cnblogs.com/DayByDay/p/3912413.html