hibernate 查询表中某几个字段

hibernate 查询表中某几个字段:

如,表emp中有如下的字段

Name            Type              Nullable   Default   Comments
--------         ------------         --------      -------      -------
EMPNO        NUMBER(4)                             
ENAME         VARCHAR2(10)  Y                        
JOB              VARCHAR2(9)    Y                        
MGR             NUMBER(4)        Y                        
HIREDATE    DATE                 Y                        
SAL              NUMBER(7,2)    Y                        
COMM          NUMBER(7,2)    Y                        
DEPTNO       NUMBER(2)       Y   

 

现在只需要查出其中的3个字段:EMPNO、ENAME、COMM

 

由于已经有一个实体类 EmpEntity 对应了表 emp,且类EmpEntity 中的属性都对应了表emp中的所有字段。

所以,要查询其中的3个字段,需要新建一个实体类 Employees,但是不需要配置 *.hbm.xml 关联文件。

代码如下:

 

实体类:Employees.java

    

public class Employees extends BaseEntity {

	/**
	 * @Fields serialVersionUID : 
	 */
	private static final long serialVersionUID = 3106850299455862020L;

	private BigDecimal empNO;
	private String empName;
	private BigDecimal comm;
	
	/**
	 * <p>Title: toString</p>
	 * <p>Description: 重写 toString() 方法</p>
	 * @return
	 * @see java.lang.Object#toString()
	 * @author 
	 */
	@Override
	public String toString() {

		StringBuffer buf = new StringBuffer("");

		buf.append("[EmpEntity:empNO=").append(empNO)
				.append("\n")
				.append("empName=").append(empName)
				.append("\n")
				.append("comm=").append(comm)
				.append("]");

		return buf.toString();
	}
	
	//下面省略 setter()/getter()
}

 

测试类:(使用junit 4.0)   

   

@Test
	public void findEmps() {

		String hql = "select EMPNO,ENAME,COMM from emp";

		Session session = HibernateUtil.currentSession();

		Query query = session.createSQLQuery(hql);

		List list = query.list();

		List<Employees> el = setList(list);

		if (null != el) {

			System.out.println("size=" + el.size());

			Employees emp = null;

			System.out.println("EMPNO\tENAME\tCOMM");

			try {

				for (int i = 0; i < el.size(); i++) {
					emp = el.get(i);
					System.out.println(emp.getEmpNO() + "\t" + emp.getEmpName()
							+ "\t" + emp.getComm());
				}

			} catch (Exception ex) {
				ex.printStackTrace();
			}

		} else {
			System.out.println("null");
		}
		HibernateUtil.closeSession();
	}

	private List<Employees> setList(List list) {

		List<Employees> empList = new ArrayList<Employees>(10);

		Employees emp = null;

		try {
			Object[] arr = null;
			BigDecimal empNO = null;
			String empName = null;
			BigDecimal comm = null;

			for (int i = 0; i < list.size(); i++) {

				emp = new Employees();

				arr = (Object[]) list.get(i);

				empNO = (BigDecimal) arr[0];
				empName = (String) arr[1];
				comm = (BigDecimal) arr[2];

				emp.setComm(comm);
				emp.setEmpName(empName);
				emp.setEmpNO(empNO);

				empList.add(emp);
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}

		return empList;
	}

 

 测试结果:

size=14
EMPNO	ENAME	COMM
7369	SMITH	null
7499	ALLEN	300
7521	WARD	500
7566	JONES	null
7654	MARTIN	1400
7698	BLAKE	null
7782	CLARK	null
7788	SCOTT	null
7839	KING	null
7844	TURNER	0
7876	ADAMS	null
7900	JAMES	null
7902	FORD	null
7934	MILLER	null

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值