1. 查询整个映射对象所有字段
- //直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段
- String hql = "from Users";
- Query query = session.createQuery(hql);
-
- List<Users> users = query.list();
- for(Users user : users){
- System.out.println(user.getName() + " : " + user.getPasswd() + " : " + user.getId());
- }
-
- 输出结果为:
- name1 : password1 : 1
- name2 : password2 : 2
- name3 : password3 : 3
2.查询单个字段
- //查询单个字段
- String hql = " select name from Users";
- Query query = session.createQuery(hql);
-
- List<String> list = query.list();
- for(String str : list){
- System.out.println(str);
- }
- 输出结果为:
- name1
- name2
- name3
3.查询其中几个字段
- //查询其中几个字段
- String hql = " select name,passwd from Users";
- Query query = session.createQuery(hql);
- //默认查询出来的list里存放的是一个Object数组
- List<Object[]> list = query.list();
- for(Object[] object : list){
- String name = (String)object[0];
- String passwd = (String)object[1];
-
- System.out.println(name + " : " + passwd);
- }
- 输出结果为:
- name1 : password1
- name2 : password2
- name3 : password3
4.修改默认查询结果(query.list())不以Object[]数组形式返回,以List形式返回
引用
//查询其中几个字段,添加new list(),注意list里的l是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是List集合了
String hql = " select new list(name,passwd) from Users";
Query query = session.createQuery(hql);
//默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是List集合了
List<List> list = query.list();
for(List user : list){
String name = (String)user.get(0);
String passwd = (String)user.get(1);
System.out.println(name + " : " + passwd);
}
/**
输出结果为:
name1 : password1
name2 : password2
name3 : password3
*/
5.修改默认查询结果(query.list())不以Object[]数组形式返回,以Map形式返回
- //查询其中几个字段,添加new map(),注意map里的m是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是map集合了
- String hql = " select new map(name,passwd) from Users";
- Query query = session.createQuery(hql);
- //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是Map集合了
- List<Map> list = query.list();
- for(Map user : list){
- //一条记录里所有的字段值都是map里的一个元素,key是字符串0,1,2,3....,value是字段值
- //如果将hql改为:String hql = " select new map(name as username,passwd as password) from Users";,那么key将不是字符串0,1,2...了,而是"username","password"了
- String name = (String)user.get("0");//get("0");是get(key),注意:0,1,2...是字符串,而不是整形
- String passwd = (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[]数组形式返回,以自定义类型返回 自定义类:
- package com.domain;
-
- public class MyUser {
-
- private String username;
- private String password;
- //因为:String hql = " select new com.domain.MyUser(name,passwd) from Users";所以必须要有接受2个参数的构造函数
- public MyUser(String username,String password){
- this.username = username;
- this.password = password;
- }
-
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
-
-
- }
- //通过query.list()出来的list里存放的不再是默认的Object数组了,而是自定义的类MyUser,必须加包名,String hql = "from Users";中的Users类也是必须加包名的,但是因为再Users.hbm.xml里<hibernate-mapping auto-import="true"> 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<MyUser> 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:条件查询
- //条件查询,参数索引值从0开始,索引位置。通过setString,setParameter设置参数
- String hql = "from Users where name=? and passwd=?";
- Query query = session.createQuery(hql);
- //第1种方式
- // query.setString(0, "name1");
- // query.setString(1, "password1");
- //第2种方式
- query.setParameter(0, "name1",Hibernate.STRING);
- query.setParameter(1, "password1",Hibernate.STRING);
- List<Users> list = query.list();
- for(Users users : list){
- System.out.println(users.getId());
- }
- //条件查询,自定义索引名(参数名):username,:password.通过setString,setParameter设置参数
- String hql = "from Users where name=:username and passwd=:password";
- Query query = session.createQuery(hql);
- //第1种方式
- // query.setString("username", "name1");
- // query.setString("password", "password1");
- //第2种方式,第3个参数确定类型
- query.setParameter("username", "name1",Hibernate.STRING);
- query.setParameter("password", "password1",Hibernate.STRING);
- List<Users> list = query.list();
- for(Users users : list){
- System.out.println(users.getId());
- }
- //条件查询,通过setProperties设置参数
- String hql = "from Users where name=:username and passwd=:password";
- Query query = session.createQuery(hql);
- //MyUser类的2个属性必须和:username和:password对应
- MyUser myUser = new MyUser("name1","password1");
- query.setProperties(myUser);
- List<Users> list = query.list();
- for(Users users : list){
- System.out.println(users.getId());
- }
|
分享到:
相关推荐
**正文** ...总结来说,Hibernate是Java开发中的重要工具,它通过ORM技术简化了数据库操作,提高了开发效率。了解并熟练掌握Hibernate,对于Java开发者来说,无疑能够提升在项目开发中的专业水平。
使用`Session.get()`或`Session.load()`根据主键获取对象,或者使用`Session.createQuery()`或`Session.createCriteria()`执行HQL(Hibernate查询语言)或SQL查询。 3. **更新(Update)** 修改对象的属性,然后...
// 1.查询所有 // 2.条件查询(where、模糊匹配) // 3.范围查询(OR、IN、AND、NOT、>、<、、>=、、...———————————————— 原文链接:https://blog.csdn.net/qq_29001539/article/details/105154689
Hibernate 提供了一种非常强大的查询语言——HQL(Hibernate Query Language),它在语法上与 SQL 类似但功能更为强大,因为它支持面向对象的特性,例如继承、多态性和关联等。 #### 二、HQL 的特点 1. **面向对象*...
**Hibernate使用——入门** Hibernate 是一个强大的开源对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互。这篇博文将引导你入门Hibernate,理解其基本概念和使用方法。 **1. Hibernate概述** ...
在本文中,我们将深入探讨如何使用Hibernate 4框架进行初步的“Hello World”实践。...这只是一个基础,Hibernate还提供了更高级的功能,如查询语言(HQL)、 Criteria API、缓存机制等,等待你去探索和掌握。
Hibernate提供了一种面向对象的查询语言——HQL,类似于SQL但更加面向对象,可以方便地进行复杂的对象查询。 7. 第二级缓存: Hibernate支持第二级缓存,通过配置`cache.provider_class`可以选择缓存提供商。不过...
【标题】"7.1.1Hibernate的入门必备——文档和源码"主要涉及的是Java领域的一个重要ORM框架——Hibernate的基础学习。Hibernate是一种用于Java应用的开源对象关系映射(ORM)工具,它允许开发者将Java类与数据库表...
`chapter5`关注的是Hibernate的查询语言——HQL(Hibernate Query Language)和Criteria API。HQL是一种面向对象的查询语言,允许开发者用类名和属性名来编写查询,极大地提高了代码的可读性。Criteria API提供了一...
4. **HQL(Hibernate Query Language)**:Hibernate 提供了自己的SQL方言——HQL,它是一种面向对象的查询语言。`org.hibernate.hql`包包含了HQL解析器和执行器,可以用于执行复杂的查询。 5. **事务管理**:在`...
总结,解决“Update queries only supported through HQL”的关键在于理解和掌握Hibernate的HQL更新查询,以及充分利用其面向对象的特性。通过使用Hibernate 3.2.5版,开发者能够更加高效、安全地进行数据操作,提高...
总结来说,"struts2+hibernate整合例子——新闻管理系统"是一个典型的Java Web应用示例,展示了如何利用Struts2的MVC模式和Hibernate的ORM能力,实现对新闻数据的CRUD操作及高级查询。这个系统可能包含了Action类、...
Hibernate提供了一种灵活的查询语言——HQL(Hibernate Query Language),以及 Criteria 查询和 Criteria API,它们都可以用来获取数据表中的特定字段。 二、Hibernate配置 在使用Hibernate进行查询前,首先需要...
### Hibernate中的NSQL与HQL增删改操作详解 #### NSQL(Native SQL)与HQL(Hibernate Query Language) 在Hibernate框架中,进行数据库操作时,开发者可以选择使用两种不同的查询语言:NSQL(Native SQL)和HQL...
Hibernate提供了一种面向对象的查询语言——HQL(Hibernate Query Language),类似于SQL但更贴近Java对象。HQL可以方便地进行对象级别的查询,如选择、聚合、关联等操作。 六、 Criteria查询 除了HQL,Hibernate还...
接下来,文章可能会详细讨论Hibernate的查询语言——HQL(Hibernate Query Language)和Criteria API。这两者提供了与数据库交互的抽象层,使得开发者能够以面向对象的方式编写查询。源码解析将揭示它们如何转换为...
3. 查询语言(HQL):Hibernate 提供了自己的SQL方言——HQL,用于更面向对象的查询。手册会展示如何编写HQL查询,包括基本查询、条件查询、分组和排序等。 4. Criteria查询:提供了一种基于对象的查询方式,比HQL...
第6章 Hibernate 实战——创建RedSaga论坛 6.1 目标 6.2 E-R建模还是对象建模 6.3 E-R建模及工具集 6.4 对象建模 6.5 项目的目录组织和基础设施 6.6 测试优先 6.7 容器,session与事务 6.8 ...
此外,为了实现模糊查找功能,可能使用了HQL(Hibernate Query Language)或者SQL的LIKE语句,结合标题和日期字段进行查询。 在新闻管理系统的实现过程中,可能会有以下关键步骤: 1. **环境配置**:首先,需要在...
Hibernate提供了自己的SQL方言——HQL(Hibernate Query Language),它是面向对象的查询语言,允许开发者以类和对象的方式进行查询。另外,Criteria API提供了一种更加动态和类型安全的方式来构建查询,避免了SQL...