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返回的相应字段类型兼容。

 

发布了28 篇原创文章 · 获赞 9 · 访问量 18万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章