MyBatis select语句没有resultMap

时间:2017-02-27 00:28:22

标签: java xml mybatis ibatis

我试图避免在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>

这会毫无问题地映射到域对象(PO​​JO)。但是,如果我有一个子域对象,那么似乎没有任何信息如何使这项工作。例如:

<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文件并在界面中使用@注释。

谢谢。

1 个答案:

答案 0 :(得分:0)

如果没有“告诉”关系是关联,Mybatis无法猜测对象属性是复杂类型。在XML中定义 resultMap 时可以完成。

关于注释,根据API documentation关于@One

  

通过Annotations API不支持join映射。这是因为   Java Annotations中的限制,不允许循环   参考

缺少连接是SQL查询在这里无关紧要,但这是相同的情况。

如果您考虑使用嵌套选择(为什么不使用延迟加载),注释将是一个选项。但你的方案似乎并不需要/允许它。

最终,我猜XML是唯一的方法。