Резюме
В процессе использования 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 прошло нормально, и приложение может нормально работать.
Адрес исходного кода проекта
публика
проект торгового центраПолный набор учебных пособий сериализуется,Обратите внимание на публичный аккаунтПолучите это прямо сейчас.