Я использую MyBatis для большого количества обновлений базы данных Postgresql.Некоторые из объектов, которые я отправляю в базу данных, имеют объединенные ключевые объекты для своих идентификаторов - пользовательский объект Java, который представляет два столбца в результирующей таблице, комбинация которых гарантированно будет уникальной.Я вижу низкую производительность при обновлении этих объектов (их тысячи) и видел, что наличие поля id, отмеченного в вашей resultMap, может улучшить производительность.Однако я не уверен, какой правильный синтаксис используется для обозначения ассоциации как идентификатора.
В настоящее время я создал resultMap со всеми описанными свойствами, КРОМЕ для самого идентификатора.
<resultMap id="result" type = "com.sms.MyClass">
<result....>
<association property="id" javaType="com.sms.CombinedKeyClass">
<constructor>
<arg column="idVal1" javaType="int"/>
<arg column="idVal2" javaType="int"/>
</constructor>
<result property="idVal1" column="idVal1"/>
<result property="idVal2" column="idVal2"/>
</association>
</resultMap>
Я пытаюсь выяснить, как пометить эту ассоциацию как идентификатор для resultMap.Я попытался добавить следующее:
<resultMap id="result" type = "com.sms.MyClass">
<id property="id" javaType="com.sms.CombinedKeyClass"/>
<result....>
<association property="id" javaType="com.sms.CombinedKeyClass">
<constructor>
<arg column="idVal1" javaType="int"/>
<arg column="idVal2" javaType="int"/>
</constructor>
<result property="idVal1" column="idVal1"/>
<result property="idVal2" column="idVal2"/>
</association>
</resultMap>
MyBatis кричит на меня, когда я пробую эту конфигурацию, говоря, что у него нет typeHandler для "id свойства".Есть ли способ ссылаться на ассоциацию как typeHandler для идентификатора?Или есть способ пометить саму ассоциацию как идентификатор для resultMap?
Кроме того, что-нибудь из этого поможет моему обновлению в первую очередь?Прямо сейчас я передаю Список этих объектов и использую «foreach» для каждого элемента в списке, чтобы обновить соответствующие поля.Я предполагал, что это будет быстрее, чем делать отдельный вызов обновления для MyBatis для каждого отдельного обновления, но пока этого не было.