如何将SQL本机查询的结果映射到java POJO类(无实体)



我有一个简单的java pojo,它不是实体。

class MyClass {
    // fields, getter, setter and etc...
}

此外,我还有DAO,它具有一些用于执行本机SQL查询(createNativeQuery)的功能

如何在没有@Entity的情况下将SQL本机查询的结果映射到MyClass?

如果bean字段名称与DB表的列名相同,则可以使用Spring JDBC的org.springframework.jdbc.core.BeanPropertyRowMapper<T>

使用BeanPropertyRowMapper对象调用org.springframework.jdbc.core.simple.SimpleJdbcOperations.queryForObject(String, RowMapper<T>, Object...)),它会使用反射为您调用所有的setter。

如果它是JPA,我会使用:查询查询=getEntityManager().createNativeQuery(sql.toString(),MyClass.class);

如果MyClass是EntityBean:-(

您可以简单地发出查询并调用POJO类中的getters/ssetter。伪代码:

get connection
ResultSet rs = execute query
if (rs.next()) {
  setField1(rs.getString("field1"));
  etc....
}

您可以使用EclipseLink查询重定向器。下面的链接对此进行了解释。作者还提供了一些非常通用的代码,并且运行得非常好。

http://onpersistence.blogspot.in/2010/07/eclipselink-jpa-native-constructor.html

最新更新