1、hql参数化查询,不明确值类型的用setParameter方法;明确查询结果为一条记录的用uniqueResult方法查询

注意,参数化查询中方法setString 或 setParameter如果使用索引方式赋值,索引值从0开始,区别JDBC

public void func1(){
Session session=HibernateUtils.getSession();
session.beginTransaction();
String hql="from Customer where name=:name";
Query query=session.createQuery(hql);
//传参数
//query.setString("name", "Tom");或者下面
  query.setParameter("name", "Tom");
//List<Customer>cusList=query.list();
//如果明确知道查询结果就一条记录,则用下面方法
  Customer customer=(Customer) query.uniqueResult();
session.getTransaction().commit();
session.close();
//System.out.println(cusList.get(0).getName());
  System.out.println(customer.getName());
}

2、hql分页查询

public void func2(){
Session session=HibernateUtils.getSession();
session.beginTransaction();
Query query=session.createQuery("from Customer");
//设置起始行索引
query.setFirstResult(1);
//设置最多返回记录数量
query.setMaxResults(2);
List<Customer>cusList=query.list();
session.getTransaction().commit();
session.close();
System.out.println(cusList.get(0).getName()+","+cusList.get(0).getId());
System.out.println(cusList.get(1).getName()+","+cusList.get(1).getId()); }

3、qbc分页查询

public void func1(){
Session session=HibernateUtils.getSession();
session.beginTransaction(); Criteria criteria=session.createCriteria(Customer.class);
//设置起始行索引
criteria.setFirstResult(1);
//设置最多返回记录数量
criteria.setMaxResults(2);
List<Customer>cusList=criteria.list(); System.out.println(cusList.get(0).getName()+","+cusList.get(0).getId());
System.out.println(cusList.get(1).getName()+","+cusList.get(1).getId());
session.getTransaction().commit();
session.close();
}

4、qbc条件查询

public void func2(){
Session session=HibernateUtils.getSession();
session.beginTransaction();
Criteria criteria=session.createCriteria(Customer.class);
//设置查询条件,name等于Tom的
criteria.add(Restrictions.eq("name", "Tom"));
//已明确查询结果为一条记录
Customer customer=(Customer) criteria.uniqueResult(); session.getTransaction().commit();
session.close();
System.out.println(customer.getName());
}

5、qbc复杂条件查询

public void func3(){
Session session=HibernateUtils.getSession();
session.beginTransaction();
Criteria criteria=session.createCriteria(Customer.class);
//设置查询条件,name等于Tom的
criteria.add(Restrictions.eq("name", "Jack")).add(Restrictions.or(Restrictions.gt("id", 3), Restrictions.eq("city", "上海")));
List<Customer> cusList=criteria.list(); session.getTransaction().commit();
session.close();
for (int i = 0; i < cusList.size(); i++) {
System.out.println(cusList.get(i).getId());
}
}

初学Hibernate之Query扩展的更多相关文章

  1. Hibernate中Query.list()方法报IllegalArgumentException异常

    最近在使用Hibernate开发项目,在写好hql语句,并初始化Query对象,执行Query.list()方法时,应用报IllegalArgumentException异常.经网上查询,现已经基本决 ...

  2. 初学Hibernate

    Hibernate 是完全ORM的,只需要对 对象 进行操作,生成底层SQL语句 优势:1.可以简化开发 2.性能好(原生的Hibernate性能很差,要使用它,需要进行优化),优化方式:一级缓存.二 ...

  3. Pitfalls of the Hibernate Second-Level / Query Caches--reference

    This post will go through how to setup the Hibernate Second-Level and Query caches, how they work an ...

  4. hibernate中Query的list和iterator区别(续)

    打开cache后query的list和iterator方法区别 将query 的cache打开的话,缓存的是query本身,以hql 生成的 sql ,再加上参数,分页等信息做为key值,而不是que ...

  5. Hibernate使用Query进行查询

    错误结果如下 Exception in thread "main" org.hibernate.hql.internal.ast.QuerySyntaxException: new ...

  6. 【Hibernate】---Query、Criteria、SQLQuery

    一.核心配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-con ...

  7. hibernate 中 query.list()的优化

    2018年3月15日  今天做项目遇到一个需求,问题是在调用query.list()的时候,因为数据也多大概700条左右,查询一次需要30s+,这简直是不能忍,于是开始考虑怎么优化. 1.因为是单表查 ...

  8. Hibernate查询 Query Language

    1,Native SQL ->HQL->EJBQL->QBC(Query By Cretira)->QBE(Query By Example) 此排列是根据可实现功能大小排序.

  9. Hibernate之Query接口的uniqueResult()方法

    如果查询返回多个值用list()方法 public void testQuery(){ Configuration config = new Configuration().configure(); ...

随机推荐

  1. UWP 解压 GZIP

    准备工作: 通过 NUGET 安装 Microsoft.Bcl.Compression ; 使用命名空间 using System.IO.Compression ; public static asy ...

  2. 矩形覆盖-我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

    class Solution { public: int rectCover(int number) { ; ; ; ||number==) ; ) ; ;i<number+;i++){ res ...

  3. 学习心得:《十个利用矩阵乘法解决的经典题目》from Matrix67

    本文来自:http://www.matrix67.com/blog/archives/tag/poj大牛的博文学习学习 节选如下部分:矩阵乘法的两个重要性质:一,矩阵乘法不满足交换律:二,矩阵乘法满足 ...

  4. MySQL基础 - 外键和约束

    在工作中经常会遇到不少不同的观点,比如对于数据库来说那就是是否要设置外键,设置外键的理由自然不必多说,而不设置外键的理由多半为设置外键影响性能,但就目前工作来讲,还没有涉及到因为外键而引发的数据库瓶颈 ...

  5. Android调用基于.net的WebService

    在实际开发项目中,有时候会为Android开发团队提供一些接口,一般是以asmx文件的方式来承载.而公布出去的数据一般上都是标准的json数据.但是在实际过程中,发现Android团队那边并不是通过将 ...

  6. GEOS库在windows中的编译和测试(vs2012)

    版本:vs2012, geos3.5 一.下载和编译 这类的文章比较,不再具体细说,可以参考 http://blog.csdn.net/wangqinghao/article/details/8201 ...

  7. Edittext焦点处理

    <LinearLayout android:focusable="true" android:layout_width="0dp" android:lay ...

  8. 20135220谈愈敏Linux Book_3

    第3章 进程管理 进程是Unix操作系统抽象概念中最基本的一种,进程管理是操作系统的心脏所在. 3.1 进程 进程:处于执行期的程序以及相关的资源的总称. 线程:在进程中活动的对象,拥有独立的程序计数 ...

  9. WP8.1&Win10幸运大转盘源码分享

    先AD一下我的群:Win10开发者群:53078485 最近在写一个APP,其中需要一个转盘动画的源码,找了很多但是都没有找到,无奈只好自己来写,写完效果自己还是比较满意的,分享出来,有需要的童鞋可以 ...

  10. $self $index $first $last parent() outerParent()

    index5.html <html><head> <title>$self $index $first $last parent() outerParent()&l ...