Hibernate高级使用:查询返回自定义对象

      在使用Hibernate的使用中,对报表的数据处理经常需要写原生的SQL,但使用默认的Hibernate中的List方法只能返回值数组对象,这给以后的修改和维护带来很多的不便。

 

      其实我们可以通过扩展Hibernate让结果封装为指定的对象结果集,这样即使用原生SQL,也可能以优雅的方式来处理返回的结果。

 

      Hibernate中有一系列用于组装返回值对象的工具类,这些类位于Package:org.hibernate.transform中,当Hibernate查询后会通过这些Transform来重新组装原始的返回结果,我们只需要自定义一个这样的Transform,然后在查询时把这个Transform传递给Hibernate的查询方法,即可把我们指定的方法来重新组装查询结果。

 

      为了实现这个功能,我们需要实现org.hibernate.transform.ResultTransformer这个接口。

 

      接口包括两个方法:

 

transformTuple方法参数说明:

     1: 值列表。原始SQL查询后的返回值数组。

     2: 列别名列表。原始SQL查询结果返回的列名(这个需要注意,Oracle等DB可能不区分大小写,所以在通过列名反射取得对象类的Set方法前,如果需要按驼峰式的命名法,需要自己制定别名规则)。

 

transformList方法一般直接返回参数List。

 

上面参考代码中使用field_name作为别名规则,这样在返回对象定义时,可以定义属性为fieldName,相应的Set方法名为SetFieldName。

 

** 需要注意的是, 这种方法需要返回的对象类属性类型定义需要和DB返回的相应字段类型兼容。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jession-Ji

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值