初学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(); ...
随机推荐
- Oracle11G 卸载步骤
(之前因为不知道偶电脑是因为安装了oracle后,才导致的长达两周的开机速度要足足10分钟,以前只有一分钟不到!可以想象oracle的服务启动的强大,知道后,偶果断立即卸载掉!) 一.在oracle1 ...
- C# 利用QRCode生成二维码图片
网上生成二维码的组件是真多,可是真正好用的,并且生成速度很快的没几个,QRCode就是我在众多中找到的,它的生成速度快.但是网上关于它的使用说明,真的太少了,大都是千篇一律的复制粘贴.这是本要用它做了 ...
- 简谈Java的join()方法
join()是Thread类的一个方法.根据jdk文档的定义: public final void join()throws InterruptedException: Waits for this ...
- 一款Android开源的下拉刷新动画
无意间在GitHub看到的,就Down了下来.但是作者是用AndroidStudio开发的,这边移动Eclipse供小伙伴们下载使用. 截图 这么好的东西因为字数不够不让分享,得了,贴段代码吧 pac ...
- MySql系列:中文写入数据库出现错误java.sql.SQLException: Incorrect string value: '\xE5\xxxx' for column 'xxxx' at row 1及其解决方法
在将kft-activiti-demo的数据库连接改为mysql之后,可以正常登陆,但是在新建请假流程的时候出现如下错误: Caused by: java.sql.SQLException: In ...
- 20135202闫佳歆--week 8 进程的切换和系统的一般执行过程--学习笔记
此为个人笔记存档 week 8 进程的切换和系统的一般执行过程 一.进程调度与进程切换 1.不同的进程有不同的调度需求 第一种分类: I/O密集型(I/O-bound) 频繁的进行I/O 通常会花费很 ...
- 实验5 简单嵌入式WEB服务器实验 实验报告 20135303 20135326
北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级: 1353 姓名:20135303 魏昊卿 学号:2013532 ...
- 『.Net』微软家的女儿们
在博客园看到了 一篇文章 <.NET4.0框架退休日期逐渐临近> 写下了这篇文章 —— 记录我和 .Net Framework 的 那些日子. 微软 家有几个 女儿. 2008年,我遇到他 ...
- SpringMVC实现Restful风格的WebService
1.环境 JDK7 MyEclipse2014 tomcat8 maven 3.3.3 spring4.1.4 2.创建maven工程 使用MyEclipse创建maven工程的方式可以参考这篇博文( ...
- angular的编辑器tinymce
angular的插件的确挺少的, 编辑器更是少, ui-tinymce是angular-ui推荐的一款编辑器(GIT: https://github.com/angular-ui/ui-tinymce ...