Вопрос:

Можем ли мы импортировать файл MyBatis XML в другой файл MyBatis XML?

xml mybatis spring-mybatis

1136 просмотра

1 ответ

112 Репутация автора

Я использую Spring и MyBatis. Я попытался импортировать другой файл MyBatis (который создается автоматически) с помощью ссылки. Можем ли мы импортировать файл XML в другой файл XML? ,

1) MyTest.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" [
        <!ENTITY BaseTest.xml SYSTEM "BaseTest.xml" >
        ]>
<mapper namespace="com.test.abc">
    &BaseTest.xml;

    <select id="CUSTOMIZED_SELECT">
    ...
    </select>
    <insert id="CUSTOMIZED_INSERT">
       ...
    </insert>
</mapper>

2) BaseTest.xml. На самом деле это всего лишь фрагмент XML; у него нет ни xml-заголовка, ни внешнего элемента mapper:

<sql id="GENERAL_WHERE">
    ...
</sql>
<select id="GENERAL_SELECT">
    ...
</select>
<insert id="GENERAL_INSERT">
    ...
</insert>

Эти два файла расположены в одном каталоге. Но Spring всегда жалуется, что не может найти BaseTest.xml.

Есть ли что-то особенное, что мне нужно настроить?

Кстати, причина BaseTest.xml и MyTest.xml заключается в том, что BaseTest.xml генерируется автоматически, а MyTest.xml пишется вручную.

Спасибо!

Автор: user1040933 Источник Размещён: 04.04.2017 12:33

Ответы (1)


1 плюс

1704 Репутация автора

Нет, вы не можете импортировать Mybatis XML Mapper в другой. Если бы вы могли: что случилось бы с <mapper> namespaceатрибутом?

<sql>фрагменты, <resultMap>определенные в отображении, могут ссылаться из другого преобразователя. просто убедитесь, что используете полное имя:namespace.id

например: <include refid="com.test.abc.TestMapper.sqlFragementId" />

Кроме того, не забывайте, что если включенный фрагмент также содержит фрагмент, ссылки будут сделаны из корневого преобразователя, тогда может потребоваться использование полного имени, даже если ссылка на фрагмент в том же преобразователе. В любом случае, сохранение с помощью простой ссылки на идентификатор позволяет переопределять (своего рода наследование). Но с этим нужно обращаться осторожно.

Автор: blackwizard Размещён: 04.04.2017 02:06
Вопросы из категории :
32x32