Яма, на которую наступили при использовании MyBatis Generator

MyBatis

Резюме

В процессе использования MyBatis Generator для генерации кода я однажды столкнулся с ямой: каждый раз, когда генерируется mapper.xml, он не перезаписывает исходный файл напрямую, а добавляет новое содержимое к исходному файлу, что приводит к ошибке при запуске Эта статья в основном объясняет, как решить эту проблему.

Проблема воспроизводится

образец кода

Используется код ТРЦ-Tiny-02, кодовый адрес:GitHub.com/macro-positive/…

Запустите основную функцию MallTinyApplication напрямую

Обнаружено, что он работает нормально и запуск проходит успешно!

展示图片

Запустите генератор кода

Запустите основной метод com.macro.mall.tiny.mbg.Generator

Перезапустите основную функцию MallTinyApplication.

Он не смог нормально работать, в котором есть такая ключевая ошибка:

nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML.
The XML location is 'file [D:\developer\github\mall-learning\mall-tiny-02\target\classes\com\macro\mall\tiny\mbg\mapper\PmsBrandMapper.xml]'.
Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.macro.mall.tiny.mbg.mapper.PmsBrandMapper.BaseResultMap

Указывает, что файл PmsBrandMapper.xml анализируется неправильно, а BaseResultMap определяется повторно.

Просмотр файла PmsBrandMapper.xml

Можно обнаружить, что информация файла mapper.xml, сгенерированная MyBatis Generator, напрямую добавляется к исходному файлу, а не перезаписывается напрямую, что приводит к этой ошибке.

展示图片

проблема решена

Раньше я думал, что это проблема, созданная MyBatis Generator. Просто удалите папку, в которой находится mapper.xml, и создайте ее заново. Теперь есть официальное решение, предоставленное MyBatis Generator.

Обновите версию MyBatis Generator

Mybatis Generator предоставляет решение версии 1.3.7, а наша текущая версия — 1.3.3.

<!-- MyBatis 生成器 -->
<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.7</version>
</dependency>

В файл generateConfig.xml добавьте карту заглушки mapper.xml.

<!--生成mapper.xml时覆盖原文件-->
<plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />

Перезапустите генератор кода

Обнаружено, что создание PmsBrandMapper.xml прошло нормально, и приложение может нормально работать.

展示图片

展示图片

Адрес исходного кода проекта

GitHub.com/macro-positive/…

публика

проект торгового центраПолный набор учебных пособий сериализуется,Обратите внимание на публичный аккаунтПолучите это прямо сейчас.

公众号图片