Обычно мы определяем наши запросы в файлах XML, и mappers
часть нашего MyBatis XML конфигурации выглядит следующим образом:Почему этот неправильный тег «package» в MyBatis XML config работает?
<mappers>
<mapper resource="mappers/example1.xml"/>
<mapper resource="mappers/example2.xml"/>
</mappers>
и все просто отлично.
Теперь вкладчик добавлены некоторых картографов как классы Java, а мы имеем смешанную конфигурацию, в которой оба XML-файлы и Java пакеты перечислены в mappers
:
<mappers>
<mapper resource="mappers/example1.xml"/>
<mapper resource="mappers/example2.xml"/>
<package name="it.example.mappers1" />
<package name="it.example.mappers2" />
</mappers>
Я вижу, что определение типа документа http://ibatis.apache.org/dtd/ibatis-3-config.dtd не включает package
как правильное содержание для mappers
, и поэтому я сообщил затмение, что дает мне эту ошибку:
The content of element type "mappers" must match "(mapper)+"
Однако, все еще работает отлично когда я запускаю приложение. С другой стороны, когда я пытаюсь удалить неправильные package
элементов, MyBatis не знает, где найти картограф, и я получаю эту ошибку во время выполнения:
org.apache.ibatis.binding.BindingException: Type interface it.example.mappers1.MyMapper is not known to the MapperRegistry
Таким образом, мы имеем неправильную конфигурацию, которая работает, и необходимо , Зачем? Я указываю неправильный DTD?