Как использовать ассоциацию как идентификатор для ResultMap в MyBatis - PullRequest
0 голосов
/ 10 июля 2019

Я использую 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 для каждого отдельного обновления, но пока этого не было.

...