初学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(); ...
随机推荐
- usb驱动开发7之接口描述符
前面struct usb_interface里表示接口设置的struct usb_host_interface被有意的飘过了,咱们在这节主要讲讲这个结构体,同样在include/linux/usb.h ...
- Apache Thrift
Baidu Thrift Google Thrift Apache Thrift - 可伸缩的跨语言服务开发框架
- Dottrace跟踪代码执行时间
当自己程序遇到性能问题,比如请求反应缓慢,怎么分析是哪里出了问题呢?dottrace可以帮助.net程序跟踪出代码里每个方法的执行时间,这样让我们更清晰的看出是哪里执行时间过长,然后再分析应该怎样解决 ...
- SQLServer 语句-创建索引
语法:CREATE [索引类型] INDEX 索引名称ON 表名(列名)WITH FILLFACTOR = 填充因子值0~100GO /*实例*/USE 库名GOIF EXISTS (SELECT * ...
- 如何清洗 Git Repo 代码仓库
git prune 如何清洗 Git Repo 代码仓库 在腾讯云上创建您的SQL Cluster>>> » 相信不少团队的代码仓库 Git Repo 变得越来越大. ...
- UISwitch和UIActivity的使用
- (void)viewDidLoad{ [super viewDidLoad]; //创建一个开关控件,苹果给它固定的size(79*27),frame更改size无效 //继承于 ...
- 20145215《Java程序设计》第5周学习总结
20145215<Java程序设计>第五周学习总结 教材学习内容总结 异常处理 语法与继承架构 异常就是程序在运行时出现不正常情况,异常的由来是因为Java把出现的问题封装成了对象,换句话 ...
- (转)Python实例手册
原文地址:http://hi.baidu.com/quanzhou722/item/cf4471f8e23d3149932af2a7 实在是太好的资料了,不得不转 python实例手册 #encodi ...
- ModernUI教程:使用预定义的页面布局
Modern UI for WPF自带了一组页面布局.Modern UI page是继承自control控件的,Page通过是通过ModernWindow.MenuLinkGroups属性来引用显示在 ...
- Visual Studio命令窗口
命令”窗口用于直接在 Visual Studio 集成开发环境 (IDE) 中执行命令或别名.可以执行菜单命令和不在任何菜单上显示的命令.若要显示“命令”窗口,请从“视图”菜单中选择“其他窗口”,再选 ...