我不能相信我问这个,但是......将SQL(不是JPQL)映射到一组简单的Java对象?
有什么办法,在Java中执行SQL语句(不JPQL),并将结果映射到普通Java对象的List
?
我希望能够创建小型轻量化POJO对象,然后让他们用原始的SQL查询填充。我明确表示不是寻找创建复杂的对象:只是原始,没有关系。
似乎一切都围绕JPA/JPQL为中心,但这个问题是,我不希望我的对象绑定到特定的表。
我觉得我可以:
-
上疯狂的药丸
- (一),或
- (二)缺少的东西根本
我不能相信我问这个,但是......将SQL(不是JPQL)映射到一组简单的Java对象?
有什么办法,在Java中执行SQL语句(不JPQL),并将结果映射到普通Java对象的List
?
我希望能够创建小型轻量化POJO对象,然后让他们用原始的SQL查询填充。我明确表示不是寻找创建复杂的对象:只是原始,没有关系。
似乎一切都围绕JPA/JPQL为中心,但这个问题是,我不希望我的对象绑定到特定的表。
我觉得我可以:
Sormula或许可以做你想做的。您需要扩展Table并覆盖getTableName()和/或getQualifiedTableName()以提供所需的表名,因为sormula通常会将一个POJO关联到一个表。请参阅example 2a和example 3a。
jOOQ有几个实录 - > POJO映射功能,可能会为你做这项工作(虽然jOOQ可以做更多的事情)。这里有一个例子:
// A "mutable" POJO class
public class MyBook1 {
public int id;
public String title;
}
// The various "into()" methods allow for fetching records into your POJOs:
List<MyBook1> myBooks = create.select().from(BOOK).fetchInto(MyBook1.class);
从这里手动摘自: http://www.jooq.org/doc/latest/manual/sql-execution/fetching/pojos/
映射算法中的Javadoc描述: http://www.jooq.org/javadoc/latest/org/jooq/impl/DefaultRecordMapper.html
虽然上面的例子使用jOOQ的DSL API,你可以用普通的SQL来做:
List<MyBook1> myBooks = create.resultQuery("SELECT * FROM BOOK")
.fetchInto(MyBook1.class);
你可以甚至在JDBC ResultSet上运行,仅使用jOOQ进行映射:
ResultSet rs = stmt.executeQuery();
List<MyBook1> myBooks = create.fetch(rs).into(MyBook1.class);
从版本1.2开始,您不再需要继承来完成此操作。只需使用Table setTableName方法即可。 –