Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Mybatis:Mapeie parte do SQL para HashMap dentro do POJO


Depois de muitas tentativas, encontrei a solução da seguinte forma:

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

// getters & setters

Mapeador 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"/>

Nesse caso, meu HashMap de colunas adicionais ficaria assim após o mapeamento:
{column_1=value1, column_2=value2}

Obs:Eu não sabia de quantas colunas eu precisava, se você sabe exatamente quantas precisa, e não vai mudar, você pode mapear apenas suas colunas alterando o segundo resultMap da seguinte forma:
<resultMap id="aditionalColumnsMapper" type="map">
    <result column="calculated_column_1" property="calculated_column_1"/>
    <result column="calculated_column_2" property="calculated_column_2"/>
</resultMap>