iBatis - Почему sqlMapConfig.xml не может найти определенные в нем карты sql?

У меня есть файл sqlMapConfig.xml, в котором определены три карты SQLMaps.

    <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE sqlMapConfig
    PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

  <sqlMapConfig>
    <!-- Statement namespaces are required for Ibator -->
   <settings enhancementEnabled="true" useStatementNamespaces="true"/>

    <!-- Setup the transaction manager and data source that are
         appropriate for your environment
    -->
    <transactionManager type="JDBC">
        <dataSource type="SIMPLE" >
            <property name="JDBC.Driver"
                value="com.mysql.jdbc.Driver"/>
            <property name="JDBC.ConnectionURL"
                value="jdbc:mysql://localhost:3306/sug"/>
            <property name="JDBC.Username"
                value="root"/>
            <property name="JDBC.Password"
                value="admin"/>
        </dataSource>
    </transactionManager>

    <!-- SQL Map XML files should be listed here -->
    <sqlMap resource="com/tatakelabs/dbmaps/categories_SqlMap.xml" />
    <sqlMap resource="com/tatakelabs/dbmaps/pro_SqlMap.xml" />
    <sqlMap resource="com/tatakelabs/dbmaps/pro_category_SqlMap.xml" />

  </sqlMapConfig>

Я получаю сообщение об ошибке во время выполнения. Причина: java.io.IOException: не удалось найти ресурс com/tatakelabs/dbmaps/categories_SqlMap.xml.

Categories_SqlMap.xml находится в этом месте. Я попытался изменить местоположение карты xml, но это не помогло. sqlMapConfig.xml проверяет соответствие DTD. Categories_SqlMap.xml также проверяет правильность DTD. Я в своем уме пытаюсь понять, почему он не может найти ресурс. Файлы sqlMap генерируются iBator.


person Savani Tatake    schedule 16.04.2012    source источник


Ответы (5)


Это происходило из-за того, что расположение файла sqlmap не копировалось в цель. Добавлена ​​цель копирования, и это исправлено.

person Savani Tatake    schedule 23.04.2012

У меня такая же проблема. Похоже, проблема заключается в расположении файла конфигурации. Таким образом, это связано со структурой ресурсов проекта.

Я переместил файл конфигурации в тот же пакет, что и классы сопоставления, и это сработало. В этом случае попробуйте переместить все ресурсы в этот пакет и обновить атрибуты ресурсов на:

<sqlMap resource="categories_SqlMap.xml" />
<sqlMap resource="pro_SqlMap.xml" />
<sqlMap resource="pro_category_SqlMap.xml" />
person slyval    schedule 17.07.2014

Решил это.

Я переместил файл xml туда, где находился Pojo, и указал путь следующим образом:

<sqlMap resource="com/heena/ibatis/model/jsr/jsr.xml" />

И это сработало.

person Wagh    schedule 04.09.2014

поместите его ...src\java\abc.xml в каталог исходных пакетов.

person Sachin Chauhan    schedule 20.08.2014

Если вы используете Spring, вы можете использовать SqlMapClientFactoryBean, указав свойство "mappingLocations". В этом свойстве вы можете указать общий путь, такой как «com/tatakelabs/dbmaps/*_SqlMap.xml», или переменную, такую ​​как ${mapfiles}, которая будет разрешена Spring как массив имен файлов. Это позволяет опустить элемент sqlMap в sqlMapConfig. Этот метод будет работать с iBatis 2.3.4. Однако sql-map-config-2.dtd также содержится внутри iBatis.jar, поэтому вы можете столкнуться с некоторыми ошибками синтаксического анализа, так как /com/ibatis/sqlmap/engine/builder/xml/sql-map-config-2.dtd может есть ошибка. В этом случае вы можете заменить его внутри jar на URL-адрес: http://ibatis.apache.org/dtd/sql-map-config-2.dtd.

person user17417    schedule 25.11.2015