gpt4 book ai didi

java - Mybatis:将部分SQL映射到POJO内部的HashMap

转载 作者:太空宇宙 更新时间:2023-11-03 11:36:13 25 4
gpt4 key购买 nike

在日常工作中,我发现了将SQL映射到它的POJO的必要性。除了 POJO 本身的列之外,我还有一些需要映射到某处的计算列。将它映射到 POJO 中的新变量似乎不是最佳选择,因为我实际上不知道我需要多少新列(现在和将来)。

示例 SQL:

select id, name, surname, 
calculated_column_1, calculated_column_2, ...
from person
left outer join ...

calculated_column_1calculated_column_2 顾名思义,它们是根据另一个表计算的列。

我不知道我是否需要 1、2 或 N 个计算列。

如何映射到 pojo?

最佳答案

经过多次尝试,我找到了如下解决方案:

POJO:

private int id;
private String name;
private String surname;
private HashMap<String, Object> aditionalColumns;

// getters & setters

MyBatis 映射器:

<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>

关于java - Mybatis:将部分SQL映射到POJO内部的HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45875618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com