只查询实体类中部分属性的实现方法

package cn.com.songjy.sh.test;

import java.util.Date;
import java.util.Iterator;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import cn.com.songjy.sh.domain.User;
import cn.com.songjy.sh.util.HibernateSessionFactory;
import junit.framework.TestCase;

public class TestUser extends TestCase {

/*查询实体类中的所有属性*/
public void query_for_user(){
Session session = HibernateSessionFactory.getSession();
Query query = session.createQuery("FROM User u WHERE u.id=2");
List<User> list = query.list();
for(User user:list){
System.out.println(user.getPassword());
System.out.println(user.getEmail());
}
HibernateSessionFactory.closeSession(session);
}

/*只查询实体类中password及email属性*/
public void query_for_list(){
Session session = HibernateSessionFactory.getSession();
/*id=2存在2条数据,查询报错:
* org.hibernate.HibernateException:
* More than one row with the given identifier was found: 2, for class: cn.com.songjy.sh.domain.User
User user = (User) session.load(User.class, 2);
System.out.println(user.getEmail());
*/
Query query = session.createQuery("SELECT u.password,u.email FROM User u WHERE u.id=2");
List list = query.list();
Object[] obj = null;
for(int i=0; i<list.size(); i++){
obj = (Object[]) list.get(i);
for(Object o : obj){
System.out.println(o);
}
}
HibernateSessionFactory.closeSession(session);
}

/*只查询实体类中password及email属性*/
public void query_for_iterator(){
Session session = HibernateSessionFactory.getSession();
Query query = session.createQuery("SELECT u.password,u.email FROM User u WHERE u.id=2");
Iterator iterator = query.iterate();
Object[] obj = null;
while(iterator.hasNext()){
obj = (Object[]) iterator.next();
for(Object o : obj){
System.out.println(o);
}
}
HibernateSessionFactory.closeSession(session);
}

/*增加操作*/
public void add(){
User user = new User();
user.setEmail("song001@163.com");
user.setId(001);
user.setPassword("123456");
user.setRegisterDate(new Date());
user.setUsername("song001");

Session session = HibernateSessionFactory.getSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
System.out.println(session.save(user));
transaction.commit();
} catch (Exception e) {
if(transaction.isActive())
transaction.rollback();
} finally {
HibernateSessionFactory.closeSession(session);
}
}

}


表结构如下:
create table TBL_USER_BAK
(
ID NUMBER(10) not null,
EMAIL VARCHAR2(255 CHAR) not null,
PASSWORD VARCHAR2(200),
REGISTERDATE TIMESTAMP(6),
USERNAME VARCHAR2(255 CHAR)
)


User.hbm.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="cn.com.songjy.sh.domain.User" table="TBL_USER_BAK">

<id name="id" column="ID" type="java.lang.Integer">
<generator class="sequence"></generator>
</id>

<property name="email" column="EMAIL" type="java.lang.String" length="255" not-null="true"></property>
<property name="password" column="PASSWORD" type="java.lang.String" length="255"></property>
<property name="registerDate" column="REGISTERDATE" type="java.util.Date"></property>
<property name="username" column="USERNAME" type="java.lang.String" length="255"></property>
</class>
</hibernate-mapping>



查询实体类中的所有属性发出的sql语句如下:
--Hibernate: 
select
user0_.ID as ID2_,
user0_.EMAIL as EMAIL2_,
user0_.PASSWORD as PASSWORD2_,
user0_.REGISTERDATE as REGISTER4_2_,
user0_.USERNAME as USERNAME2_
from
TBL_USER_BAK user0_
where
user0_.ID=2

只查询实体类中password及email属性发出的sql语句如下:
--Hibernate: 
select
user0_.PASSWORD as col_0_0_,
user0_.EMAIL as col_1_0_
from
TBL_USER_BAK user0_
where
user0_.ID=2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值