1.通常使用.getHibernateSession().createSQLQuery().list();获取查询结果。有时候处理这些结果比较麻烦,那我们可以把结果映射到实体类中,页面上再使用EL表达式获取值比较方便。
返回的结果集为list数组List<Object[]>,如何把Object[]中的参数对应绑定到实体类中?
1.addEntity(Class)
getHibernateSession().createSQLQuery().addEntity(Class)
2.setResultTransformer()
.getHibernateSession().createSQLQuery().setResultTransformer(Transformers.aliasToBean(实体类.class)).list();
注意:
1.如果数据库字段和实体类属性名称不一致,则需要使用别名根实体类属性一一对应。
2.同时别名需要双引号。
3.注意查询的结果字段需要和实体类一一对应,意思就是sql查询到的字段而实体类中没有该属性。
例如:
String sql = " select fd_id \"fdId\",fd_name \"fdName\" from test";
class Demo{
private String fdId;
private String fdName;
private String fdAge;
//省略getter,setter
}
Service:
.getHibernateSession().createSQLQuery().setResultTransformer(Transformers.aliasToBean(Demo.class)).list();