Mybatis:将部分SQL映射到POJO中的HashMap
问题描述:
在我的日常工作中,我发现将SQL映射到其POJO的必要性。除了POJO本身的列外,我还有一些需要映射到某个地方的计算列。将它映射到POJO中的新变量似乎不是最好的选择,因为我实际上不知道需要多少新列(现在和将来)。Mybatis:将部分SQL映射到POJO中的HashMap
实施例:
SQL: select id, name, surname, calculated_column_1, calculated_column_2, ... from person
left outer join....
'calculated_column_1' 和 'calculated_column_2' 被,正如其名称说,计算列取决于另一个表。
我不知道我是否需要1,2或N个计算列。
它如何映射到pojo?
答
多次尝试后,我找到了解决办法如下:
POJO:
private int id;
private String name;
private String surname;
private HashMap<String, Object> aditionalColumns;
//getters & setters
MyBatis Mapper:
<resultMap id="BaseResultMap" type="Person" automapping="true">
<id column="id" property="id"/>
<association property="aditionalColumns" resultMap="aditionalColumnsMapper" columnPrefix="calculated_"/>
</resultMap>
<resultMap id="aditionalColumnsMapper" type="map" autoMapping="true"/>
在这种情况下,我aditionalColumns HashMap的是这样的映射后
{column_1=value1, column_2=value2}
注:我不知道如何我需要很多列,如果您确切知道您需要多少列,并且它不会更改,则可以只绘制列更改第二个resultMap的列,如下所示:
<resultMap id="aditionalColumnsMapper" type="map">
<result column="calculated_column_1" property="calculated_column_1"/>
<result column="calculated_column_2" property="calculated_column_2"/>
</resultMap>
赞赏如果你回答你自己的问题。不是它的问题部分 –
马上改变它。谢谢 –