原文地址:http://www.ablanxue.com/prone_3552_1.html

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

Java代码

//直接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.查询单个字段

Java代码

//查询单个字段

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.查询其中几个字段

Java代码

//查询其中几个字段

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形式返回

Java代码  收藏代码

//查询其中几个字段,添加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[]数组形式返回,以自定义类型返回

自定义类:

Java代码

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;

}

}

Java代码

//通过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:条件查询

Java代码

//条件查询,参数索引值从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());

}

Java代码

//条件查询,自定义索引名(参数名):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());

}

Java代码

//条件查询,通过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());

}

[java] view plaincopy

package com.hp.ts.bca.user.bo;

import com.hp.ts.bca.common.BaseObject;

public class StationUser  extends BaseObject {

private static final long serialVersionUID = -1175811459644997844L;

private int id;

private String username;

private String officePhone;

private String mobilePhone1;

private String officeEmail;

private Integer ifDefault;

public StationUser(int id, String username, String officePhone,

String mobilePhone1, String officeEmail, Integer ifDefault) {

super();

this.id = id;

this.username = username;

this.officePhone = officePhone;

this.mobilePhone1 = mobilePhone1;

this.officeEmail = officeEmail;

this.ifDefault = ifDefault;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getOfficePhone() {

return officePhone;

}

public void setOfficePhone(String officePhone) {

this.officePhone = officePhone;

}

public String getMobilePhone1() {

return mobilePhone1;

}

public void setMobilePhone1(String mobilePhone1) {

this.mobilePhone1 = mobilePhone1;

}

public String getOfficeEmail() {

return officeEmail;

}

public void setOfficeEmail(String officeEmail) {

this.officeEmail = officeEmail;

}

public Integer getIfDefault() {

return ifDefault;

}

public void setIfDefault(Integer ifDefault) {

if(ifDefault==null)

ifDefault=0;

else

this.ifDefault = ifDefault;

}

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + id;

result = prime * result

+ ((ifDefault == null) ? 0 : ifDefault.hashCode());

result = prime * result

+ ((mobilePhone1 == null) ? 0 : mobilePhone1.hashCode());

result = prime * result

+ ((officeEmail == null) ? 0 : officeEmail.hashCode());

result = prime * result

+ ((officePhone == null) ? 0 : officePhone.hashCode());

result = prime * result

+ ((username == null) ? 0 : username.hashCode());

return result;

}

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

StationUser other = (StationUser) obj;

if (id != other.id)

return false;

if (ifDefault == null) {

if (other.ifDefault != null)

return false;

} else if (!ifDefault.equals(other.ifDefault))

return false;

if (mobilePhone1 == null) {

if (other.mobilePhone1 != null)

return false;

} else if (!mobilePhone1.equals(other.mobilePhone1))

return false;

if (officeEmail == null) {

if (other.officeEmail != null)

return false;

} else if (!officeEmail.equals(other.officeEmail))

return false;

if (officePhone == null) {

if (other.officePhone != null)

return false;

} else if (!officePhone.equals(other.officePhone))

return false;

if (username == null) {

if (other.username != null)

return false;

} else if (!username.equals(other.username))

return false;

return true;

}

@Override

public String toString() {

return "StationUser [id=" + id + ", username=" + username

+ ", officePhone=" + officePhone + ", mobilePhone1="

+ mobilePhone1 + ", officeEmail=" + officeEmail

+ ", ifDefault=" + ifDefault + "]";

}

}

[java] view plaincopy

@Override

public PageResponse<User> getUserListByStationId(int currentPage,

int rowsPerPage, String sidx, String sord, Integer stationId) {

StringBuilder hql = new StringBuilder();

hql.append("select new
com.hp.ts.bca.user.bo.StationUser(a.id,a.username,a.officePhone,a.mobilePhone1,a.officeEmail,ug.ifDefault)
FROM User a, UserGroup ug WHERE a.id=ug.userId and ug.groupId=");

hql.append(stationId);

//hql.append("FROM User AS user, UserGroup AS ug WHERE user.id=ug.userId");

PageResponse<User> userList = this.groupDao.excutePage(hql.toString(),

currentPage, rowsPerPage, sidx, sord);

return userList;

}

[转]Hibernate查询对象所有字段,单个字段 ,几个字段取值的问题的更多相关文章

  1. Hibernate查询对象的方法浅析

    Hibernate 查询对象是根据对象的id查询的,只要你有id (id唯一),则无论你是否其他字段与传过来的对象一致,都会查到该id在数据库对应的对象.若是在关联查询中,所关联表的id为空,即所查表 ...

  2. spring+hibernate实体类注解详解(非原创) + cascade属性取值

    @Entity //继承策略.另一个类继承本类,那么本类里的属性应用到另一个类中 @Inheritance(strategy = InheritanceType.JOINED ) @Table(nam ...

  3. javascript中json对象json数组json字符串互转及取值

    今天用到了json数组和json对象和json类型字符串之间互转及取值,记录一下: 1.json类型的字符串转换为json对象及取值 var jsonString = '{"bar" ...

  4. Hibernate查询对象所有字段,单个字段 ,几个字段取值的问题

    HQL 是Hibernate Query Language的简写,即 hibernate 查询语言:HQL采用面向对象的查询方式.HQL查询提供了更加丰富的和灵活的查询特性,因此Hibernate将H ...

  5. 关于Hibernate查询对象调用set方法自动同步到数据库解决方案

    Hibernate的get和load方法查询出的实体都是持久化对象,拿到该对象后,如果你调用了该对象的set方法,如果再同一个事务里面,那么在事务递交的时候,Hibernate会把你设置的值自动更新到 ...

  6. hibernate左连接查询时在easyUI的dataGrid中有些行取值为空的解决办法

    1 当使用left join左连连接,sql语句为 select t from SecondPage t left join t.rightNavbar n where 1=1 页面中出现了部分空行的 ...

  7. Cookie是以文本文件保存在客户端的,所以说cookie对象从本质而言是 字符串,所以取值时用字符串,或其数组

  8. 实现Django ORM admin view中model字段choices取值自动更新的一种方法

    有两个表,一个是记录网站信息的site表,结构如下: CREATE TABLE `site` ( `id` ) unsigned NOT NULL AUTO_INCREMENT, `name` ) N ...

  9. Hibernate查询部分字段并封装到指定类中

    Hibernate 使用查询部分/指定字段,有几种字现方式: 第一种方式是通过HQL语句实现,类似SQL,方法如下: String hql = "select id,name from Li ...

随机推荐

  1. CF687C. The Values You Can Make[背包DP]

    C. The Values You Can Make time limit per test 2 seconds memory limit per test 256 megabytes input s ...

  2. AC日记——基因相关性 openjudge 1.7 03

    03:基因相关性 总时间限制:  1000ms 内存限制:   65536kB 描述 为了获知基因序列在功能和结构上的相似性,经常需要将几条不同序列的DNA进行比对,以判断该比对的DNA是否具有相关性 ...

  3. arr的高级用法

    arr的高级用法 reduce 方法(升序) 语法: array1.reduce(callbackfn[, initialValue]) 参数 定义 array1 必需.一个数组对象. callbac ...

  4. 向数据库中插入一个DateTime类型的数据到一个Date类型的字段中,需要转换类型。TO_DATE('{0}','YYYY-MM-DD'))

    需要指出的是,C#中有datetime类型,但是这个类型是包括小时,分钟,秒的.这个格式与数据库中的Date类型不符,如果将now设为datetime类型插入数据会失败. 需要通过TO_DATE('字 ...

  5. 纯js代码实现手风琴特效

    我知道现在大多数前端开发人员都在使用jQuery等第三方的库来进行开发,这不仅节约了时间,也让效率大大的提高,并让公司的效益增加,何乐而不为呢? 但是,这也会有一定的缺点,比如jQ比js慢,尤其在大型 ...

  6. gitlab配置邮件通知功能操作记录

    之前已经介绍了gitlab的部署http://www.cnblogs.com/kevingrace/p/5651402.html但是没有配置邮箱通知功能,今天这里介绍下gitlab安装后的邮箱配置操作 ...

  7. BZOJ 4241 历史研究

    Description IOI国历史研究的第一人——JOI教授,最近获得了一份被认为是古代IOI国的住民写下的日记.JOI教授为了通过这份日记来研究古代IOI国的生活,开始着手调查日记中记载的事件. ...

  8. AngularJS中的digest循环$apply

    欢迎大家指导与讨论 : ) 前言 Angular会拓展这个标准的浏览器流程,创建一个Angular上下文.这个Angular上下文指的是运行在Angular事件循环内的特定代码,该Angular事件循 ...

  9. C#.NET 大型通用信息化系统集成快速开发平台 4.0 版本 - 用户权限树的实现 -- 权限递归树

    业务系统里经常会需要计算类似的树形权限树的业务需求 1:往往会有一些需求,a 对 b 有权限, b对c 有权限, 等等. 2:还需要很直观的看到,整个权限的树形关系,一目了然的那种. 3:程序调用简单 ...

  10. 程序开发使用docker部署

    我们公司自己研发了一套 grand-line 系统,使用 docker 来部署项目. 我是第一批小白鼠,一开始网络差,build 一次要半个小时,连接进入 web shell 也很慢,部署一个微信项目 ...