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());
}
-
-
String hql = "from Users where name=:username and passwd=:password";
- Query query = session.createQuery(hql);
-
-
MyUser myUser = new MyUser("name1","password1");
- query.setProperties(myUser);
- List<Users> list = query.list();
-
for(Users users : list){
- System.out.println(users.getId());
- }
分享到:
相关推荐
非常详细直接实用的HQL语句的功能介绍 看过的人保准都说好
解析内容清晰简单,让你对hql语句半天就可以掌握!!
主要是一些常用的HQL语句的使用与说明。
汇集了hql语句中大部分常用的函数 ABS(n) 取绝对值数学函数 数学函数 JPAQL HQL ABS(column_name[数字类型对象属性])
常用的HQL语句,包括增加,删除,修改,查询
总结的hql的语句的常用的增删改查,自己留着看的
本人的学习笔记,记录的很详细。对于hql初学者来说是一份不可多得的学习资料。
常用的HQL语句,准轻松掌握。一学就会,一看就懂。
这是一个java代码包,里面提供了一个核心类,专门负责生成 hibernate查询语句(常用的,并非所有,现在能力有限),其他都是一些辅助类,自我感觉还可以。主要是为了减轻以后的项目开发负担,可以省去拼接hql查询语句的...
基本上包含了HQL常用的所有类型的语句了
SQL检索:通过SQL语句查询 2、HQL检索方式: 查询全部数据:session.createQuery(“from 类名”); 根据条件查询:session.createQuery(“from 类名 where 属性名=?”).setParameter(?号索引(从0开始),条件);
hibernate+hql+大全,整理了常用的hql语句实例,能够更好的掌握hql语句的写法。
HQL 中对查询语句的解释、优化、生成查询计划是由 Hive 完成的 所有的数据都是存储在 Hadoop 中 查询计划被转化为 MapReduce 任务,在 Hadoop 中执行(有些查询没有 MR 任 务,如: select * from table ) ...
Hibernate框架:Hibernate框架的基础概念、ORM映射、HQL查询等。 Servlet与JSP:Web开发的基础知识、Servlet和JSP的基础概念、生命周期、内置对象等。 设计模式:单例模式、工厂模式、代理模式等常见的设计模式。 ...
17.1.12 在HQL查询语句中绑定参数 17.1.13 设置查询附属事项 17.1.14 在映射文件中定义命名查询语句 17.1.15 在HQL查询语句中调用函数 17.2 设定查询条件 17.2.1 比较运算 17.2.2 范围运算 17.2.3 ...
17.1.12 在HQL查询语句中绑定参数 17.1.13 设置查询附属事项 17.1.14 在映射文件中定义命名查询语句 17.1.15 在HQL查询语句中调用函数 17.2 设定查询条件 17.2.1 比较运算 17.2.2 范围运算 17.2.3 ...
17.1.12 在HQL查询语句中绑定参数 17.1.13 设置查询附属事项 17.1.14 在映射文件中定义命名查询语句 17.1.15 在HQL查询语句中调用函数 17.2 设定查询条件 17.2.1 比较运算 17.2.2 范围运算 17.2.3 ...
17.1.12 在HQL查询语句中绑定参数 17.1.13 设置查询附属事项 17.1.14 在映射文件中定义命名查询语句 17.1.15 在HQL查询语句中调用函数 17.2 设定查询条件 17.2.1 比较运算 17.2.2 范围运算 17.2.3 ...
下面是Hive的架构图。图1.1Hive体系结构(1)用户接口主要有三个:CLI,Client和WUI。其中最常用的是CLI,Cli启动的时候,会同时启动一个Hive副本。...(3)解释器、编译器、优化器完成HQL查询语句从词法分析、语