我正在考虑使用Spring-Data + QueryDSL + JDBC来替换(或增强)当前使用的MyBatis。
我的理由是:
但我发现以下问题:
由于我在问一个问题,所以让我们专注于我认为最重要问题的映射
所以我的问题是:
有没有方便的解决方案将QueryDSL的SQLQuery结果映射到域对象,类似于MyBatis或JPA提供的?也就是说,基于一些简单配置的映射,无论是XML,注释,还是简单的Java?
特别是,我对以下内容感兴趣:
总而言之,我需要一种简单的方法来获取以下' 客户的一个或多个对象。来自以下SQL查询的类:
class Customer {
EmailAddress emailAddress;
FullName fullName;
Set<Address> addresses;
Set<Comment> selfDescription;
}
class EmailAddress {
private String address;
EmailAddress(String address) {this.address = address; }
}
class FullName {
String firstName, lastName;
}
class Address {
String street, town, country;
}
class Comment {
LocalDateTime timeStamp;
String content;
}
查询:
query.from(qCustomer).
leftJoin(qCustomer._addressCustomerRef, qAddress)).
leftJoin(qCustomer._commentCustomerRed).
getResults(
qCustomer.email_address, qCustomer.first_name, qCustomer.last_name,
qAddress.street, qAddress.town, qAddress.country,
qComment.creation_time_stamp, qComment.content);
对我来说,理想的解决方案是重用MyBatis制图基础设施。
另一种映射解决方案或自定义解决方案也是可接受
注意:
我也可以接受&#34;否定&#34;如果你展示一个替代方案,答案是:
替代方案应该适用于上面的例子。
已经考虑过解决方案:
答案 0 :(得分:0)
Lukas Eder在这里给出了一个类似问题的优秀答案:Is it possible to combine MyBatis and QueryDSL/jOOQ?
他对映射问题的回答是使用Java 8 functional style capabilities或modelmapper等专用解决方案。
他还提到Spring JCache support作为缓存解决方案,this solution作为日志记录。