`

hibernate 查询方式汇总

    博客分类:
  • SSH
 
阅读更多




1. 查询整个映射对象所有字段

Java代码 收藏代码
  1. //直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段
  2. Stringhql="fromUsers";
  3. Queryquery=session.createQuery(hql);
  4. Listusers=query.list();
  5. for(Usersuser:users){
  6. System.out.println(user.getName()+":"+user.getPasswd()+":"+user.getId());
  7. }



输出结果为:
name1 : password1 : 1
name2 : password2 : 2
name3 : password3 : 3

2.查询单个字段

Java代码 收藏代码
  1. //查询单个字段
  2. Stringhql="selectnamefromUsers";
  3. Queryquery=session.createQuery(hql);
  4. Listlist=query.list();
  5. for(Stringstr:list){
  6. System.out.println(str);
  7. }



输出结果为:
name1
name2
name3

Java代码 收藏代码
  1. //查询单个字段
  2. Stringhql="selectnamefromUsers";
  3. Queryquery=session.createQuery(hql);
  4. Listlist=query.list();
  5. for(Stringstr:list){
  6. System.out.println(str);
  7. }
  8. 输出结果为:
  9. name1
  10. name2
  11. name3



3.查询其中几个字段

Java代码 收藏代码
  1. //查询其中几个字段
  2. Stringhql="selectname,passwdfromUsers";
  3. Queryquery=session.createQuery(hql);
  4. //默认查询出来的list里存放的是一个Object数组
  5. Listlist=query.list();
  6. for(Object[]object:list){
  7. Stringname=(String)object[0];
  8. Stringpasswd=(String)object[1];
  9. System.out.println(name+":"+passwd);
  10. }



输出结果为:
name1 : password1
name2 : password2
name3 : password3

4.修改默认查询结果(query.list())不以Object[]数组形式返回,以List形式返回

Java代码 收藏代码
  1. 引用
  2. //查询其中几个字段,添加newlist(),注意list里的l是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是List集合了
  3. Stringhql="selectnewlist(name,passwd)fromUsers";
  4. Queryquery=session.createQuery(hql);
  5. //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认
  6. 的Object数组了,而是List集合了
  7. Listlist=query.list();
  8. for(Listuser:list){
  9. Stringname=(String)user.get(0);
  10. Stringpasswd=(String)user.get(1);
  11. System.out.println(name+":"+passwd);
  12. }


/**
输出结果为:
name1 : password1
name2 : password2
name3 : password3
*/

5.修改默认查询结果(query.list())不以Object[]数组形式返回,以Map形式返回

Java代码

Java代码 收藏代码
  1. //查询其中几个字段,添加newmap(),注意map里的m是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是map集合了
  2. Stringhql="selectnewmap(name,passwd)fromUsers";
  3. Queryquery=session.createQuery(hql);
  4. //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是Map集合了
  5. Listlist=query.list();
  6. for(Mapuser:list){
  7. //一条记录里所有的字段值都是map里的一个元素,key是字符串0,1,2,3....,value是字段值
  8. //如果将hql改为:Stringhql="selectnewmap(nameasusername,passwdaspassword)fromUsers";,那么key将不是字符串0,1,2...了,而是"username","password"了
  9. Stringname=(String)user.get("0");//get("0");是get(key),注意:0,1,2...是字符串,而不是整形
  10. Stringpasswd=(String)user.get("1");
  11. System.out.println(name+":"+passwd);
  12. }
  13. /**
  14. 输出结果为:
  15. name1:password1
  16. name2:password2
  17. name3:password3
  18. */
  19. //查询其中几个字段,添加newmap(),注意map里的m是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是map集合了
  20. Stringhql="selectnewmap(name,passwd)fromUsers";
  21. Queryquery=session.createQuery(hql);
  22. //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是Map集合了
  23. Listlist=query.list();
  24. for(Mapuser:list){
  25. //一条记录里所有的字段值都是map里的一个元素,key是字符串0,1,2,3....,value是字段值
  26. //如果将hql改为:Stringhql="selectnewmap(nameasusername,passwdaspassword)fromUsers";,那么key将不是字符串0,1,2...了,而是"username","password"了
  27. Stringname=(String)user.get("0");//get("0");是get(key),注意:0,1,2...是字符串,而不是整形
  28. Stringpasswd=(String)user.get("1");
  29. System.out.println(name+":"+passwd);
  30. }



/**
输出结果为:
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[]数组形式返回,以自定义类型返回

自定义类:

Java代码 收藏代码
  1. packagecom.domain;
  2. publicclassMyUser{
  3. privateStringusername;
  4. privateStringpassword;
  5. //因为:Stringhql="selectnewcom.domain.MyUser(name,passwd)fromUsers";所以必须要有接受2个参数的构造函数
  6. publicMyUser(Stringusername,Stringpassword){
  7. this.username=username;
  8. this.password=password;
  9. }
  10. publicStringgetUsername(){
  11. returnusername;
  12. }
  13. publicvoidsetUsername(Stringusername){
  14. this.username=username;
  15. }
  16. publicStringgetPassword(){
  17. returnpassword;
  18. }
  19. publicvoidsetPassword(Stringpassword){
  20. this.password=password;
  21. }
  22. }
  23. packagecom.domain;
  24. publicclassMyUser{
  25. privateStringusername;
  26. privateStringpassword;
  27. //因为:Stringhql="selectnewcom.domain.MyUser(name,passwd)fromUsers";所以必须要有接受2个参数的构造函数
  28. publicMyUser(Stringusername,Stringpassword){
  29. this.username=username;
  30. this.password=password;
  31. }
  32. publicStringgetUsername(){
  33. returnusername;
  34. }
  35. publicvoidsetUsername(Stringusername){
  36. this.username=username;
  37. }
  38. publicStringgetPassword(){
  39. returnpassword;
  40. }
  41. publicvoidsetPassword(Stringpassword){
  42. this.password=password;
  43. }
  44. }





Java代码 收藏代码
  1. //通过query.list()出来的list里存放的不再是默认的Object数组了,而是自定义的类MyUser,必须加包名,Stringhql="fromUsers";中的Users类也是必须加包名的,但是因为再Users.hbm.xml里auto-import默认值为true(所以auto-import属性也可以不写),自动导入了
  2. Stringhql="selectnewcom.domain.MyUser(name,passwd)fromUsers";
  3. Queryquery=session.createQuery(hql);
  4. //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是MyUser对象了
  5. ListmyUsers=query.list();
  6. for(MyUsermyUser:myUsers){
  7. Stringname=myUser.getUsername();
  8. Stringpasswd=myUser.getPassword();
  9. System.out.println(name+":"+passwd);
  10. }




/**
输出结果为:
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:条件查询

Java代码 收藏代码
  1. //条件查询,参数索引值从0开始,索引位置。通过setString,setParameter设置参数
  2. Stringhql="fromUserswherename=?andpasswd=?";
  3. Queryquery=session.createQuery(hql);
  4. //第1种方式
  5. //query.setString(0,"name1");
  6. //query.setString(1,"password1");
  7. //第2种方式
  8. query.setParameter(0,"name1",Hibernate.STRING);
  9. query.setParameter(1,"password1",Hibernate.STRING);
  10. Listlist=query.list();
  11. for(Usersusers:list){
  12. System.out.println(users.getId());
  13. }
  14. //条件查询,参数索引值从0开始,索引位置。通过setString,setParameter设置参数
  15. Stringhql="fromUserswherename=?andpasswd=?";
  16. Queryquery=session.createQuery(hql);
  17. //第1种方式
  18. //query.setString(0,"name1");
  19. //query.setString(1,"password1");
  20. //第2种方式
  21. query.setParameter(0,"name1",Hibernate.STRING);
  22. query.setParameter(1,"password1",Hibernate.STRING);
  23. Listlist=query.list();
  24. for(Usersusers:list){
  25. System.out.println(users.getId());
  26. }



Java代码 收藏代码
  1. //条件查询,自定义索引名(参数名):username,:password.通过setString,setParameter设置参数
  2. Stringhql="fromUserswherename=:usernameandpasswd=:password";
  3. Queryquery=session.createQuery(hql);
  4. //第1种方式
  5. //query.setString("username","name1");
  6. //query.setString("password","password1");
  7. //第2种方式,第3个参数确定类型
  8. query.setParameter("username","name1",Hibernate.STRING);
  9. query.setParameter("password","password1",Hibernate.STRING);
  10. Listlist=query.list();
  11. for(Usersusers:list){
  12. System.out.println(users.getId());
  13. }
  14. //条件查询,自定义索引名(参数名):username,:password.通过setString,setParameter设置参数
  15. Stringhql="fromUserswherename=:usernameandpasswd=:password";
  16. Queryquery=session.createQuery(hql);
  17. //第1种方式
  18. //query.setString("username","name1");
  19. //query.setString("password","password1");
  20. //第2种方式,第3个参数确定类型
  21. query.setParameter("username","name1",Hibernate.STRING);
  22. query.setParameter("password","password1",Hibernate.STRING);
  23. Listlist=query.list();
  24. for(Usersusers:list){
  25. System.out.println(users.getId());
  26. }




Java代码 收藏代码
  1. //条件查询,通过setProperties设置参数
  2. Stringhql="fromUserswherename=:usernameandpasswd=:password";
  3. Queryquery=session.createQuery(hql);
  4. //MyUser类的2个属性必须和:username和:password对应
  5. MyUsermyUser=newMyUser("name1","password1");
  6. query.setProperties(myUser);
  7. Listlist=query.list();
  8. for(Usersusers:list){
  9. System.out.println(users.getId());
  10. }

 

分享到:
评论

相关推荐

    hibernate jar包汇总

    综上所述,Hibernate jar包汇总包含了实现ORM所需的各种组件和库,它们协同工作,为Java开发者提供了一个强大的工具,简化了数据库操作,提高了开发效率。在实际项目中,了解并熟练运用这些知识点,能够有效地管理和...

    Hibernate基础教程汇总

    资源名称:Hibernate基础教程汇总资源目录:【】hibernate【】hibernate_312_中文参考文档【】hibernate乐观锁和悲观锁【】hibernate基础教程【】Hibernate注解详解实体类大全资源截图: 资源太大,传百度网盘了,...

    hibernate知识点汇总

    这篇文章主要汇总了关于 Hibernate 的一些关键知识点,对于准备面试的 IT 专业人士来说非常有用。 1. **持久化**:持久化是将应用程序的数据存储在数据库中,使得数据即使在应用程序关闭后也能长期存在。在 ...

    Hibernate面试题部分汇总集合

    Hibernate面试题部分汇总集合Hibernate面试题部分汇总集合

    Hibernate商业代码汇总

    在Java的持久化框架Hibernate中,分页查询是一项常见的需求,尤其在处理大量数据时,为了提高用户体验和系统性能,我们需要有效地获取特定范围内的记录。本文将深入探讨Hibernate如何实现分页查询,并分析其底层机制...

    hibernate_3配置文件参数汇总

    本篇文章将汇总Hibernate 3配置文件中的关键参数,帮助开发者更好地理解和配置Hibernate。 1. **SQL方言(Dialect)**:`hibernate.dialect` 是一个必不可少的配置项,它定义了Hibernate针对特定关系数据库使用的SQL...

    Hibernate_基础汇总(一)

    ### Hibernate基础汇总(一) #### ORM Mapping 概念解析 ORM(Object Relational Mapping),即对象关系映射,是一种程序技术,用于将关系数据库的数据映射到对象上。这一概念包含三个关键点: - **O:Object** ...

    Hibernate使用技巧汇总

    ### Hibernate使用技巧详解 #### 一、两种配置文件选择及使用场景 - **A. `hibernate.cfg.xml`** - **特点**: 包含数据库连接信息、可用的映射文件等配置。 - **示例**: `Configuration config = new ...

    Hibernate常见面试题汇总

    【Hibernate常见面试题汇总】 1. **数据库查询优化** - **建立索引**:索引可以大大提高查询速度,特别是针对频繁查询的列。 - **减少表间关联**:尽量减少JOIN操作,多表查询可能导致性能下降。 - **优化SQL**...

    Hibernate3的配置参数汇总

    本篇文章将详细汇总Hibernate3的主要配置参数。 1. **Hibernate JDBC属性**: - `hibernate.connection.driver_class`:指定JDBC驱动类,例如`org.postgresql.Driver`用于PostgreSQL数据库。 - `hibernate....

    hibernate文档总结,技术汇总,PDF版的,hibernate简明参考文档

    8. **Criteria API和HQL**: Hibernate提供了HQL(Hibernate Query Language)和Criteria API两种查询语言,它们允许开发者以面向对象的方式来编写查询,比直接写SQL更加灵活和方便。 9. **缓存机制**: Hibernate...

    Hibernate框架技术文档资料汇总

    资源名称:Hibernate框架技术文档资料汇总资源目录:【】EJB3.0实例教程【】HeadFirstHibernate【】Hibernate In Action【】Hibernate【】hibernate【】Hibernate【】Hibernate3.1.2中文文档【】Hibernate3.2官方...

    Hibernate持久层方法汇总

    - `find()`方法提供了基于HQL(Hibernate查询语言)或者SQL的查询功能。它可以接收一个查询字符串和参数,返回一个结果列表,可以是单个对象,List,Set等。这种方法比较灵活,支持复杂的查询条件和关联操作。 3. ...

    hibernate学习资料大全

    Hibernate 提供了一种将Java对象模型与关系数据库之间的映射机制,使得开发者可以使用面向对象的方式来操作数据库,而无需关心底层SQL语句。理解ORM的概念是学习Hibernate的第一步。 2. **Hibernate配置**: 在...

    韩顺平.2011版.hibernate3.3 笔记 ppt 汇总

    6. HQL与Criteria查询:介绍Hibernate特有的面向对象的查询语言HQL,以及Criteria API,它们提供了更直观的查询方式。 7. 查询优化:讨论如何优化查询性能,包括懒加载、缓存策略、查询计划等。 8. 关联映射:详述一...

    Struts Spring Hibernate面试题汇总

    【SSH面试题汇总】主要涉及的是Struts、Spring和Hibernate这三个流行Java EE框架的相关知识,以及MVC设计模式的理解。MVC(Model-View-Controller)模式是软件工程中的一种架构模式,它将应用程序分为三个核心组件:...

    Hibernate_query聚合函数查询.

    本篇主要探讨的是Hibernate对数据库查询中聚合函数的应用,这些功能使我们能够高效地处理数据统计和汇总任务。在学习过程中,我们经常会遇到诸如求和(SUM)、平均值(AVG)、最大值(MAX)、最小值(MIN)以及计数...

    2022年Hibernate常见面试题汇总.doc

    2. **Hibernate查询方式**: - 导航对象图检索:通过已加载对象的关联关系获取其他对象。 - OID查询:使用Session的get()和load()方法,通过对象的唯一标识(OID)检索对象。 - HQL(Hibernate Query Language)...

    Hibernate查询详解

    标题和描述均聚焦于“Hibernate查询详解”,这一主题在IT领域尤其是Java开发中至关重要,因为Hibernate作为一款流行的Java持久层框架,提供了丰富的查询机制,帮助开发者高效地与数据库交互。以下将深入探讨...

    hibernate面试汇总

    hibernate 面试 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以...

Global site tag (gtag.js) - Google Analytics