初学Hibernate之Query扩展
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扩展的更多相关文章
- Hibernate中Query.list()方法报IllegalArgumentException异常
最近在使用Hibernate开发项目,在写好hql语句,并初始化Query对象,执行Query.list()方法时,应用报IllegalArgumentException异常.经网上查询,现已经基本决 ...
- 初学Hibernate
Hibernate 是完全ORM的,只需要对 对象 进行操作,生成底层SQL语句 优势:1.可以简化开发 2.性能好(原生的Hibernate性能很差,要使用它,需要进行优化),优化方式:一级缓存.二 ...
- 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 ...
- hibernate中Query的list和iterator区别(续)
打开cache后query的list和iterator方法区别 将query 的cache打开的话,缓存的是query本身,以hql 生成的 sql ,再加上参数,分页等信息做为key值,而不是que ...
- Hibernate使用Query进行查询
错误结果如下 Exception in thread "main" org.hibernate.hql.internal.ast.QuerySyntaxException: new ...
- 【Hibernate】---Query、Criteria、SQLQuery
一.核心配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-con ...
- hibernate 中 query.list()的优化
2018年3月15日 今天做项目遇到一个需求,问题是在调用query.list()的时候,因为数据也多大概700条左右,查询一次需要30s+,这简直是不能忍,于是开始考虑怎么优化. 1.因为是单表查 ...
- Hibernate查询 Query Language
1,Native SQL ->HQL->EJBQL->QBC(Query By Cretira)->QBE(Query By Example) 此排列是根据可实现功能大小排序.
- Hibernate之Query接口的uniqueResult()方法
如果查询返回多个值用list()方法 public void testQuery(){ Configuration config = new Configuration().configure(); ...
随机推荐
- [Elixir009]像GenServer一样用behaviour来规范接口
1.Behaviour介绍 Erlang/Elixir的Behaviour类似于其它语言中的接口(interfaces),本质就是在指定behaviours的模块中强制要求导出一些指定的函数,否则编译 ...
- 线程变量(ThreadLocal)的使用和测试
ThreadLocal可以定义线程范围的变量,也可以称之为线程局部变量.与一般的变量的区别在于,生命周期是在线程范围内的. 也就是说某个类的某个对象(为清晰描述,以下称A对象)里面有个ThreadLo ...
- git流程及操作
一.git认识 git是什么?Git是目前世界上最先进的分布式版本控制系统 二.git安装 三.git创建本地库 1.首先选择e盘新建一个文件夹如douban 2.点击鼠标右键,执行Git Bash ...
- 在 WinForm 中使用 Direct2D
在 C# 的 WinForm 应用中,界面的绘制使用的是 GDI+.不过在一些特别的应用中,可能需要用硬件加速来提高绘制的效率.下面就来介绍两种在 WinForm 应用中嵌入 Direct2D 的方法 ...
- windows7下修改hosts文件无效解决办法
通常会为了开发方便.或者屏蔽掉一些恶意网站,我们会在hosts(c:\windows\system32\drivers\etc\hosts)文件中进行相应的域名指向,例:
- CodeIgniter框架中关于URL(index.php)的那些事
最近,在做自己的个人网站时,采用了轻量级的php框架CodeIgniter.乍一看上去,代码清晰简洁,MVC模型非常容易维护.开发时我采用的工具是Netbeans IDE 8.0,当然,本文的内容和开 ...
- c++实现简单计算器
帮一个同学写的,非计算机类专业,应付交差,也没什么功能,两个数的加减乘除运算,以及三角函数的运算.要求用到模板.运算符重载和异常处理. 一直以来都是用的java,没怎么用过c++,就当是复习了一下c+ ...
- Windows下apache php wordpress配置
2. Use notepad to open httpd.conf config file. Make use the line "LoadModule rewrite_module mod ...
- 记录nginx 搭建集群环境踏过的坑
因为生产环境做了负载均衡,为了尽可能跟线上环境一致,所以想在本地也搭集群,这样测试更靠谱.首先就想到nginx 这货,搭个简单的web 服务器实在太简单了. nginx 这玩意11年简单玩过,那是版本 ...
- SQL温故系列两篇(二)
.Sql 插入语句得到自动生成的递增的ID值 Insert into Table(name,des,num) values(’ltp’,’thisisbest’,10); Select @@ident ...