1. 查询整个映射对象所有字段
- Stringhql="fromUsers";
- Queryquery=session.createQuery(hql);
- Listusers=query.list();
- for(Usersuser:users){
- System.out.println(user.getName()+":"+user.getPasswd()+":"+user.getId());
- }
输出结果为:
name1 : password1 : 1
name2 : password2 : 2
name3 : password3 : 3
2.查询单个字段
- Stringhql="selectnamefromUsers";
- Queryquery=session.createQuery(hql);
- Listlist=query.list();
- for(Stringstr:list){
- System.out.println(str);
- }
输出结果为:
name1
name2
name3
- Stringhql="selectnamefromUsers";
- Queryquery=session.createQuery(hql);
- Listlist=query.list();
- for(Stringstr:list){
- System.out.println(str);
- }
- 输出结果为:
- name1
- name2
- name3
3.查询其中几个字段
- Stringhql="selectname,passwdfromUsers";
- Queryquery=session.createQuery(hql);
- Listlist=query.list();
- for(Object[]object:list){
- Stringname=(String)object[0];
- Stringpasswd=(String)object[1];
- System.out.println(name+":"+passwd);
- }
输出结果为:
name1 : password1
name2 : password2
name3 : password3
4.修改默认查询结果(query.list())不以Object[]数组形式返回,以List形式返回
- 引用
- Stringhql="selectnewlist(name,passwd)fromUsers";
- Queryquery=session.createQuery(hql);
- 的Object数组了,而是List集合了
- Listlist=query.list();
- for(Listuser:list){
- Stringname=(String)user.get(0);
- Stringpasswd=(String)user.get(1);
- System.out.println(name+":"+passwd);
- }
/**
输出结果为:
name1 : password1
name2 : password2
name3 : password3
*/
5.修改默认查询结果(query.list())不以Object[]数组形式返回,以Map形式返回
Java代码
- Stringhql="selectnewmap(name,passwd)fromUsers";
- Queryquery=session.createQuery(hql);
- Listlist=query.list();
- for(Mapuser:list){
- Stringname=(String)user.get("0");
- Stringpasswd=(String)user.get("1");
- System.out.println(name+":"+passwd);
- }
- Stringhql="selectnewmap(name,passwd)fromUsers";
- Queryquery=session.createQuery(hql);
- Listlist=query.list();
- for(Mapuser:list){
- Stringname=(String)user.get("0");
- Stringpasswd=(String)user.get("1");
- System.out.println(name+":"+passwd);
- }
/**
输出结果为:
name1 : password1
name2 : password2
name3 : password3
*/
6.修改默认查询结果(query.list())不以Object[]数组形式返回,以Set形式返回,但是因为Set里是不允许有重复的元素,所以:username和password的值不能相同。只需将hql改为:String hql = " select new set(name,passwd) from Users";
7.修改默认查询结果(query.list())不以Object[]数组形式返回,以自定义类型返回
自定义类:
- packagecom.domain;
- publicclassMyUser{
- privateStringusername;
- privateStringpassword;
- publicMyUser(Stringusername,Stringpassword){
- this.username=username;
- this.password=password;
- }
- publicStringgetUsername(){
- returnusername;
- }
- publicvoidsetUsername(Stringusername){
- this.username=username;
- }
- publicStringgetPassword(){
- returnpassword;
- }
- publicvoidsetPassword(Stringpassword){
- this.password=password;
- }
- }
- packagecom.domain;
- publicclassMyUser{
- privateStringusername;
- privateStringpassword;
- publicMyUser(Stringusername,Stringpassword){
- this.username=username;
- this.password=password;
- }
- publicStringgetUsername(){
- returnusername;
- }
- publicvoidsetUsername(Stringusername){
- this.username=username;
- }
- publicStringgetPassword(){
- returnpassword;
- }
- publicvoidsetPassword(Stringpassword){
- this.password=password;
- }
- }
- Stringhql="selectnewcom.domain.MyUser(name,passwd)fromUsers";
- Queryquery=session.createQuery(hql);
- ListmyUsers=query.list();
- for(MyUsermyUser:myUsers){
- Stringname=myUser.getUsername();
- Stringpasswd=myUser.getPassword();
- System.out.println(name+":"+passwd);
- }
/**
输出结果为:
name1 : password1
name2 : password2
name3 : password3
*/
//通过query.list()出来的list里存放的不再是默认的Object数组了,而是自定义的类MyUser,必须加包名,String hql = "from Users";中的Users类也是必须加包名的,但是因为再Users.hbm.xml里 auto-import默认值为true(所以auto-import属性也可以不写),自动导入了
String hql = " select new com.domain.MyUser(name,passwd) from Users";
Query query = session.createQuery(hql);
//默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是MyUser对象了
List myUsers = query.list();
for(MyUser myUser : myUsers){
String name = myUser.getUsername();
String passwd = myUser.getPassword();
System.out.println(name + " : " + passwd);
}
/**
输出结果为:
name1 : password1
name2 : password2
name3 : password3
*/
8:条件查询
- Stringhql="fromUserswherename=?andpasswd=?";
- Queryquery=session.createQuery(hql);
- query.setParameter(0,"name1",Hibernate.STRING);
- query.setParameter(1,"password1",Hibernate.STRING);
- Listlist=query.list();
- for(Usersusers:list){
- System.out.println(users.getId());
- }
- Stringhql="fromUserswherename=?andpasswd=?";
- Queryquery=session.createQuery(hql);
- query.setParameter(0,"name1",Hibernate.STRING);
- query.setParameter(1,"password1",Hibernate.STRING);
- Listlist=query.list();
- for(Usersusers:list){
- System.out.println(users.getId());
- }
- Stringhql="fromUserswherename=:usernameandpasswd=:password";
- Queryquery=session.createQuery(hql);
- query.setParameter("username","name1",Hibernate.STRING);
- query.setParameter("password","password1",Hibernate.STRING);
- Listlist=query.list();
- for(Usersusers:list){
- System.out.println(users.getId());
- }
- Stringhql="fromUserswherename=:usernameandpasswd=:password";
- Queryquery=session.createQuery(hql);
- query.setParameter("username","name1",Hibernate.STRING);
- query.setParameter("password","password1",Hibernate.STRING);
- Listlist=query.list();
- for(Usersusers:list){
- System.out.println(users.getId());
- }
- Stringhql="fromUserswherename=:usernameandpasswd=:password";
- Queryquery=session.createQuery(hql);
- MyUsermyUser=newMyUser("name1","password1");
- query.setProperties(myUser);
- Listlist=query.list();
- for(Usersusers:list){
- System.out.println(users.getId());
- }
分享到:
相关推荐
综上所述,Hibernate jar包汇总包含了实现ORM所需的各种组件和库,它们协同工作,为Java开发者提供了一个强大的工具,简化了数据库操作,提高了开发效率。在实际项目中,了解并熟练运用这些知识点,能够有效地管理和...
资源名称:Hibernate基础教程汇总资源目录:【】hibernate【】hibernate_312_中文参考文档【】hibernate乐观锁和悲观锁【】hibernate基础教程【】Hibernate注解详解实体类大全资源截图: 资源太大,传百度网盘了,...
这篇文章主要汇总了关于 Hibernate 的一些关键知识点,对于准备面试的 IT 专业人士来说非常有用。 1. **持久化**:持久化是将应用程序的数据存储在数据库中,使得数据即使在应用程序关闭后也能长期存在。在 ...
Hibernate面试题部分汇总集合Hibernate面试题部分汇总集合
在Java的持久化框架Hibernate中,分页查询是一项常见的需求,尤其在处理大量数据时,为了提高用户体验和系统性能,我们需要有效地获取特定范围内的记录。本文将深入探讨Hibernate如何实现分页查询,并分析其底层机制...
本篇文章将汇总Hibernate 3配置文件中的关键参数,帮助开发者更好地理解和配置Hibernate。 1. **SQL方言(Dialect)**:`hibernate.dialect` 是一个必不可少的配置项,它定义了Hibernate针对特定关系数据库使用的SQL...
### Hibernate基础汇总(一) #### ORM Mapping 概念解析 ORM(Object Relational Mapping),即对象关系映射,是一种程序技术,用于将关系数据库的数据映射到对象上。这一概念包含三个关键点: - **O:Object** ...
### Hibernate使用技巧详解 #### 一、两种配置文件选择及使用场景 - **A. `hibernate.cfg.xml`** - **特点**: 包含数据库连接信息、可用的映射文件等配置。 - **示例**: `Configuration config = new ...
【Hibernate常见面试题汇总】 1. **数据库查询优化** - **建立索引**:索引可以大大提高查询速度,特别是针对频繁查询的列。 - **减少表间关联**:尽量减少JOIN操作,多表查询可能导致性能下降。 - **优化SQL**...
本篇文章将详细汇总Hibernate3的主要配置参数。 1. **Hibernate JDBC属性**: - `hibernate.connection.driver_class`:指定JDBC驱动类,例如`org.postgresql.Driver`用于PostgreSQL数据库。 - `hibernate....
8. **Criteria API和HQL**: Hibernate提供了HQL(Hibernate Query Language)和Criteria API两种查询语言,它们允许开发者以面向对象的方式来编写查询,比直接写SQL更加灵活和方便。 9. **缓存机制**: Hibernate...
资源名称:Hibernate框架技术文档资料汇总资源目录:【】EJB3.0实例教程【】HeadFirstHibernate【】Hibernate In Action【】Hibernate【】hibernate【】Hibernate【】Hibernate3.1.2中文文档【】Hibernate3.2官方...
- `find()`方法提供了基于HQL(Hibernate查询语言)或者SQL的查询功能。它可以接收一个查询字符串和参数,返回一个结果列表,可以是单个对象,List,Set等。这种方法比较灵活,支持复杂的查询条件和关联操作。 3. ...
Hibernate 提供了一种将Java对象模型与关系数据库之间的映射机制,使得开发者可以使用面向对象的方式来操作数据库,而无需关心底层SQL语句。理解ORM的概念是学习Hibernate的第一步。 2. **Hibernate配置**: 在...
6. HQL与Criteria查询:介绍Hibernate特有的面向对象的查询语言HQL,以及Criteria API,它们提供了更直观的查询方式。 7. 查询优化:讨论如何优化查询性能,包括懒加载、缓存策略、查询计划等。 8. 关联映射:详述一...
【SSH面试题汇总】主要涉及的是Struts、Spring和Hibernate这三个流行Java EE框架的相关知识,以及MVC设计模式的理解。MVC(Model-View-Controller)模式是软件工程中的一种架构模式,它将应用程序分为三个核心组件:...
本篇主要探讨的是Hibernate对数据库查询中聚合函数的应用,这些功能使我们能够高效地处理数据统计和汇总任务。在学习过程中,我们经常会遇到诸如求和(SUM)、平均值(AVG)、最大值(MAX)、最小值(MIN)以及计数...
2. **Hibernate查询方式**: - 导航对象图检索:通过已加载对象的关联关系获取其他对象。 - OID查询:使用Session的get()和load()方法,通过对象的唯一标识(OID)检索对象。 - HQL(Hibernate Query Language)...
标题和描述均聚焦于“Hibernate查询详解”,这一主题在IT领域尤其是Java开发中至关重要,因为Hibernate作为一款流行的Java持久层框架,提供了丰富的查询机制,帮助开发者高效地与数据库交互。以下将深入探讨...
hibernate 面试 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以...