Hibernate入门之基本数据查询
2009-05-11 15:21
246 查看
使用Hibernate进行数据查询是一件简单的事,Java程序设计人员可以使用对象操作的方式来进行数据查询,查询时使用一种类似SQL的HQL(Hibernate Query Language)来设定查询的条件,与SQL不同的是,HQL是具备对象导向的继承、多型等特性的语言。
直接使用范例来看看如何使用Hibernate进行数据库查询,在这之前,请先照之前介绍过的主题在数据库中新增几笔数据:
在Hibernate中新增资料
查询数据时,我们所使用的是Session的find()方法,并在当中指定HQL设定查询条件,查询的结果会装载在List对象中传回,您所需要的是将它们一一取出,一个最简单的例子如下:
find()中的"from User"即HQL,User指的是User类别,藉由映射文件,它将会查询USER表格中的数据,相当于SQL中的SELECT * FROM USER,实际上我们的User类别是位于onlyfun.caterpillar下,Hibernate会自动看看import中的package名称与类别名称是否符合,您也可以直接指定package名称,例如:
这个程序的运行结果可能是这样的:
上面所介绍的查询是最简单的,只是从数据表中查询所有的数据,Hibernate所查询得回的数据,是以对象的方式传回,以符合程序中操作的需要,我们也可以限定一些查询条件,并只传回我们指定的字段,例如:
在find()中的HQL示范了条件限定的查询,User as user为User类别取了别名,所以我们就可以使用user.name来指定表格传回字段,where相当于SQL中的WHERE子句,我们限定查询 age等于25的数据,这次查询的数据只有一个字段,而型态是String,所以传回的List内容都是String对象,一个运行的例子如下:
如果要传回两个以上的字段,也不是什么问题,直接来看个例子:
从上面的程序中不难看出,传回两个以上字段时,每一次ListIterator会以Object数组的方式传回一笔数据,我们只要指定数组索引,并转换为适当的型态,即可取得数据,一个查询的结果如下:
您也可以在HQL中使用一些函数来进行结果统计,例如:
一个查询的结果如下所示:
资料笔数: 4
平均年龄: 28.25
这边我们先介绍的是一些简单的查询动作,将来有机会的话,再介绍一些进阶的查询,如果您有想要先认识一些HQL,可以看看参考手册的第11章,当中对于HQL有详细的说明。
直接使用范例来看看如何使用Hibernate进行数据库查询,在这之前,请先照之前介绍过的主题在数据库中新增几笔数据:
在Hibernate中新增资料
查询数据时,我们所使用的是Session的find()方法,并在当中指定HQL设定查询条件,查询的结果会装载在List对象中传回,您所需要的是将它们一一取出,一个最简单的例子如下:
HibernateTest.java import onlyfun.caterpillar.*; import net.sf.hibernate.*; import net.sf.hibernate.cfg.*; import java.util.*; public class HibernateTest { public static void main(String[] args) throws HibernateException { SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); List users = session.find("from User"); session.close(); sessionFactory.close(); for (ListIterator iterator = users.listIterator(); iterator.hasNext(); ) { User user = (User) iterator.next(); System.out.println(user.getName() + "/n/tAge: " + user.getAge() + "/n/tSex: " + user.getSex()); } } } |
session.find("from onlyfun.caterpillar.User"); |
log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment). log4j:WARN Please initialize the log4j system properly. Hibernate: select user0_.user_id as user_id, user0_.name as name, user0_.sex as sex, user0_.age as age from USER user0_ caterpillar Age: 28 Sex: M momor Age: 25 Sex: F Bush Age: 25 Sex: M Becky Age: 35 Sex: F |
List names = session.find("select user.name from User as user where age = 25"); for (ListIterator iterator = names.listIterator(); iterator.hasNext(); ) { String name = (String) iterator.next(); System.out.println("name: " + name); } |
log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment). log4j:WARN Please initialize the log4j system properly. Hibernate: select user0_.name as x0_0_ from USER user0_ where (age=25 ) name: momor name: Bush |
List results = session.find("select user.name, user.age from User as user where sex = 'F'"); for (ListIterator iterator = results.listIterator(); iterator.hasNext(); ) { Object[] rows = (Object[]) iterator.next(); String name = (String) rows[0]; Integer age = (Integer) rows[1]; System.out.println("name: " + name + "/n/t" + age); } |
log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment). log4j:WARN Please initialize the log4j system properly. Hibernate: select user0_.name as x0_0_, user0_.age as x1_0_ from USER user0_ where (sex='F' ) name: momor 25 name: Becky 35 |
List results = session.find("select count(*), avg(user.age) from User as user"); ListIterator iterator = results.listIterator(); Object[] rows = (Object[]) iterator.next(); System.out.println("资料笔数: " + rows[0] + "/n平均年龄: " + rows[1]); |
log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment). log4j:WARN Please initialize the log4j system properly. Hibernate: select count(*) as x0_0_, avg(user0_.age) as x1_0_ from USER user0_ |
平均年龄: 28.25
这边我们先介绍的是一些简单的查询动作,将来有机会的话,再介绍一些进阶的查询,如果您有想要先认识一些HQL,可以看看参考手册的第11章,当中对于HQL有详细的说明。
相关文章推荐
- Hibernate入门05 - 基本数据查询
- Hibernate入门05 - 基本数据查询
- Hibernate框架的基本搭建(一个小的java project的测试向数据库中插入和查询数据的功能)
- hibernate入门--实现简单的数据查询
- J2EE入门视频教程第五讲——MySQL中的数据类型及命令行基本查询语句
- Hibernate基础:快速入门(7):查询数据
- java 入门 二(基本数据类型与引用数据类型的区别)
- Hibernate 框架下对数据的查询通用格式
- 1、数据结构笔记之一入门基本概念
- C# 对sharepoint 列表的一些基本操作,包括添加/删除/查询/上传文件给sharepoint list添加数据
- 关于Hibernate中如果一个实体类是 Set,怎么去查询数据
- hibernate 映射 column name not found 找不到字段 查询出来的数据是重复的
- mongodb入门-3数据类型--基本数据类型
- hibernate进阶(2) 基本数据类型
- Hibernate入门(9):数据过滤
- SQL查询有关 sql_variant 值的基本数据类型和其他信息
- Hibernate——HQL数据查询
- hibernate查询数据表char类型字段只返回一个字符
- R语言-数据分析-快速入门方便查询-excel表格形式学习笔记1
- 封装jdbc仿照hibernate访问数据库查询数据