hibernate 原生sql查询映射到实体bean

StringBuffer sql=new StringBuffer();
		sql.append("select customer.id,customer.COMPANY_FULLNAME,customer.COMPANY_SHORTNAME,customer.COMPANY_PROFESSION,a.display from cus_customer_info customer," +
					"(select * from sys_datadic where parentid=" +
					"(select id from sys_datadic t where t.value='companyProfession')) a" +
					" where customer.company_profession = a.value");
		if(StringUtils.isNotBlank(value)){
			sql.append(" and customer.company_fullname like '%"+value+"%'");
		}
		sql.append(" order by customer.click_num desc, customer.create_time desc");
		Connection conn=this.getSession().connection();
		List<CustomerInfo> list=new ArrayList<CustomerInfo>();
		try {
			Statement state=conn.createStatement();
			ResultSet rs=state.executeQuery(sql.toString());
			while(rs.next()){
				CustomerInfo info=new CustomerInfo();
				info.setId(rs.getString("id"));
				info.setCompanyFullname(rs.getString("COMPANY_FULLNAME"));
				info.setCompanyShortname(rs.getString("COMPANY_SHORTNAME"));
				info.setDisplay(rs.getString("display"));
				info.setCompanyProfession(Short.valueOf(rs.getString("COMPANY_PROFESSION")));
				list.add(info);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return list;

这是jdbc方式来操作数据库。

后来查询资料,得到了其他的方式:

this.getSession().createSQLQuery("").addEntity(CustomerInfo.class)
这种方式指定接收的实体bean为CustomerInfo.class

但是上边的sql中的a.display这个列是无法插入到CustomerInfo.class中的display属性中的

所以还可以采用这个方法:

List list = this.getSession().createSQLQuery("").setResultTransformer(

Transformers.ALIAS_TO_ENTITY_MAP).list();

此时,每个Object可以转换成一个Map

Map map = (Map) list.get(i);
map.get("id");

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值