将SQL(不是JPQL)映射到简单Java对象的集合?
我不敢相信我会问这个,但是
在Java中,有没有办法执行SQL语句(而不是JPQL)并将结果映射到List
个普通的旧Java对象
我希望能够创建小型轻量级POJO对象,然后用原始SQL查询填充它们。我显然不想创建复杂的对象:只是基本的,没有关系
一切似乎都以JPA/JPQL为中心,但问题是我不想将我的对象绑定到特定的表
我觉得我要么:
- (a) 服用疯狂的药片,或者
- (b) 缺少一些基本的东西
你可以在下面搜索框中键入要查询的问题!
我不敢相信我会问这个,但是
在Java中,有没有办法执行SQL语句(而不是JPQL)并将结果映射到List
个普通的旧Java对象
我希望能够创建小型轻量级POJO对象,然后用原始SQL查询填充它们。我显然不想创建复杂的对象:只是基本的,没有关系
一切似乎都以JPA/JPQL为中心,但问题是我不想将我的对象绑定到特定的表
我觉得我要么:
# 1 楼答案
轻量级映射器不是JDK本身的一部分。您可以使用Java的标准JDBC API(事实上,JPA实现就是在这个基础上构建的)来运行自己的简单映射器,也可以查看提供简单SQL到对象映射器的外部库。我知道MyBatis(以前称为iBatis)
A)不,我认为你没有服用疯狂的药片,B)你可能只是错过了JDBC吗
# 2 楼答案
Sormula也许能做你想做的事。您需要扩展Table并重写getTableName()和/或getQualifiedTableName(),以提供所需的表名,因为sormula通常将一个POJO关联到一个表。见example 2a和example 3a
# 3 楼答案
jOOQ有几项记录->;POJO映射功能可能会为您完成这项工作(尽管jOOQ可以做更多)。下面是一个例子:
摘自以下手册: 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:
您甚至可以对JDBC结果集进行操作,只使用jOOQ进行映射: