Как будет выглядеть INSERT mapper в myBatis3, если у меня есть модель pojo, такая как
class DR {
FormatType format;
}
class SQLDR extends DR{
String sql;
}
class PDR extends DR {
Predicate predicate;
}
class Download {
DR request;
String status;
long size;
}
Я хочу вставить объект Download в таблицу, как спроектировать INSERT mapper в myBatis3, так как у меня есть загрузки как SQLDR, так иТип PDR, установленный во время выполнения, должен иметь возможность принимать значение, основанное на типе формата, и устанавливать его.
Я пробую маппер следующим образом: он не работает
<sql id="DOWNLOAD_FIELD_TYPES">
#{key,jdbcType=VARCHAR},
<choose>
<when test="format = 'SQL'"> #{request.sql,jdbcType=VARCHAR},</when>
<otherwise> #{request.predicate,jdbcType=VARCHAR}, </otherwise>
</choose>
#{status,jdbcType=OTHER},
#{size,jdbcType=BIGINT},
#{request.format,jdbcType=OTHER},
</sql>
<sql id="DOWNLOAD_FIELDS">
key,filter,status,size,format
</sql>
<insert id="create" parameterType="Download">
INSERT INTO download(<include refid="DOWNLOAD_FIELDS"/>)
VALUES(<include refid="DOWNLOAD_FIELD_TYPES"/>)
</insert>
Причина: org.apache.ibatis.reflection.ReflectionException: для свойства с именем 'sql' в 'классе DR' нет метода извлечения