[转]Hibernate查询对象所有字段,单个字段 ,几个字段取值的问题

原文地址: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;

}

时间: 2024-08-25 19:49:45

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

锐浪 报表, 当多行交叉报表时,对多行交叉报表中自由格中的多个字段控件,进行颜色控制. 取值 判断等实现

需要注意的点是: 1 . 要对自由格中对应的 字段框的背景填充方式改为:填充,否则没有效果. 2 . 代码中红色部门代码: Column 为明细网络对象属性中的 列集合 中的 交叉列的 名称,  Report.RunningDetailGrid.Columns.Item("Column_2") 3.  蓝色部门 为自由格中 控件的索引位置 ,也可以根据字段框的名称来进行控制如:  contentCell.Controls.Item("FieldBox8") 代码如下

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

@Entity //继承策略.另一个类继承本类,那么本类里的属性应用到另一个类中 @Inheritance(strategy = InheritanceType.JOINED ) @Table(name="INFOM_TESTRESULT") public class TestResult extends IdEntity{} 1 @Entity(name="EntityName") 必须 name为可选,对应数据库中一的个表 2 @Table(name="

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

今天用到了json数组和json对象和json类型字符串之间互转及取值,记录一下: 1.json类型的字符串转换为json对象及取值 1 var jsonString = '{"bar":"property","baz":3}'; 2 var jsObject = JSON.parse(jsonString); //转换为json对象 3 alert(jsObject.bar); //取json中的值 2.json对象转为json类型的字符串 v

EF查询出来的model,与自已创建的modl,取值进行更新

/// <summary> ///创建人:蒋云峰 ///日 期:2019/12/23 ///描 述:更新实体,与数据库实体进行对比 /// </summary> public class JyfUpdateModel { /// <summary> /// 当dataBaseObj与newObj具有相同的属性名时,如果newObj的这个属性没有值,则把dataBaseObj中的属性值赋值为newObj的这个属性 /// 主要用于更新,防止清空掉原有的数据 /// <

查询最近一周的时间,时间的取值。

先看效果图: 现在显示的最近一周的日期. calculateCloseDate(); //定义一个初始化日期的函数 function calculateCloseDate(){ var nowTime1=new Date(); //获取今天的月份,如果月份小于10,前面+"0" var Months1=nowTime1.getMonth()+1<10?"0"+(nowTime1.getMonth()+1):nowTime1.getMonth()+1;//获取今

记录使用Hibernate查询bean中字段和数据库列类型不匹配问题

今天在工程中遇到Hibernate查询的时候,bean中的字段和数据库中的字段不符合(bean中有pageTime字段,但是数据库中没有此列)报错问题. 具体问题环境: 在auto_off表中,off_time字段是bigint类型,用于存放unix时间戳,bean中对应属性类型为Long类型,但是前台传递过来的时间是String类型(2016-11-25) 解决办法1: 在bean中添加一个String类型的pageTime字段,然后前台传递过来的数据使用pageTime接收,再将值转换成lo

hibernate查询部分字段转换成实体bean

//hibernate查询部分字段转换成实体bean /** * 查询线路信息 */ @Override public List<Line> getSimpleLineListByTj(Map<String,Object> paramMap){ Criteria cr=this.getSession().createCriteria(Line.class,"Line"); // cr.setFetchMode("chuTuanInfo", F

Hibernate查询Date型字段带精准时间处理办法

在数据库里经常有Date型字段,而且存储的有精准时间,在用Hibernate查询的时候默认是按Date型处理,但这样的结果是只有日期而没有时间,要想使查询结果带有时间,在Result遍历的时候传入结果日期类型为Hibernate.TIMESTAMP,所以就用到了Hibernate的addScalar()方法,这个是org.hibernate.SQLQuery里的, 例: SQLQuery query = session.createSQLQuery(SQL); query.addScalar("

hibernate入门---Hibernate查询方式(for循环、构造器、对象数组等)【第三天,相当于总结整合】

Hibernate查询方式[内连接和外连接不在此篇] 本文讲述的是HQL以及各种情况输出对象的for循环以及构造器的例子,当然这是Hibernate结合一起完成的任务.技术上,离开一些方法,不掌握一些基本的方法,灵活使用,是会带来诸多不便的. 查询方式都在例子里的方法里,我把全部都写在了一个类里,基本思路: 类:Customer->CustomerManager->Demo 配置文件:hibernate.cfg.xml->Customer.hbm.xml 关系: (我们不去考虑什么ses