[英]Passing a non-column parameter in a MyBatis ResultMap to a nested select
[英]MyBatis select statement WITHOUT a resultMap
我试图避免在MyBatis中使用resultMap(或最好完全不使用XML)。
我有以下工作:
<select id="getAllSales" resultType="Sales">
SELECT TOP 100
ID as "id",
PLANE as "plane",
PLANE_TYPE as "plane_type"
FROM SALES
</select>
这将毫无问题地映射到域对象(POJO)。 但是,如果我有一个子域对象,那么似乎没有任何信息可以使它起作用。 例如:
<select id="getAllSales" resultType="Sales">
SELECT TOP 100
ID as "id",
PLANE as "plane.type",
PLANE_TYPE as "plane.type.serial_num"
FROM SALES
</select>
这将不会使用resultMap =“ Sales”属性进行映射(Sales对象是父对象,并且包含“ Plane”类型,或更具体地说是List类型。
关于如何摆脱在XML文件中使用resultMap的任何建议或想法?
更可取的是,完全摆脱XML文件并在界面中使用@批注。
谢谢。
如果Mybatis不“告诉”关系是关联,则无法猜测其属性是否为复杂类型。 可以在XML中定义resultMap时完成。
关于注释,根据有关@One
API文档 :
注解API不支持联接映射。 这是由于Java注释中的限制,不允许循环引用
缺少联接在这里与SQL查询无关,但这是相同的情况。
如果您考虑使用嵌套选择(为什么不使用延迟加载),则可以选择注释。 但是您的方案似乎并不需要/不允许它。
最终,我猜想XML是唯一的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.