Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mybatis :Mappez une partie du SQL vers HashMap dans POJO

Après de nombreux essais, j'ai trouvé la solution comme suit :

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

Dans ce cas, mon aditionalColumns HashMap ressemblerait à ceci après le mappage :

{column_1=value1, column_2=value2}

Remarque :Je ne savais pas combien de colonnes j'avais besoin, si vous savez exactement combien vous en avez besoin, et cela ne changera pas, vous pouvez mapper uniquement vos colonnes en modifiant le deuxième resultMap comme suit :

<resultMap id="aditionalColumnsMapper" type="map">
    <result column="calculated_column_1" property="calculated_column_1"/>
    <result column="calculated_column_2" property="calculated_column_2"/>
</resultMap>