iBatis - 为什么sqlMapConfig.xml无法找到其中定义的sql映射?

时间:2012-04-16 18:03:06

标签: ibatis ibator

我有一个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生成。

5 个答案:

答案 0 :(得分:1)

发生这种情况是因为sqlmap文件位置未被复制到目标。添加了复制目标并修复了它。

答案 1 :(得分:0)

我遇到了同样的问题。看来问题在于配置文件的位置。因此,它与项目资源结构有关。

我将配置文件移动到与mapper类相同的包中,并且它有效。在这种情况下,请尝试将所有资源移动到此程序包并将资源属性更新为:

<sqlMap resource="categories_SqlMap.xml" />
<sqlMap resource="pro_SqlMap.xml" />
<sqlMap resource="pro_category_SqlMap.xml" />

答案 2 :(得分:0)

将它放在源包目录下的... src \ java \ abc.xml中。

答案 3 :(得分:0)

解决了它。

我将xml文件移动到Pojo所在的位置,并提供如下路径:

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

它有效。

答案 4 :(得分:0)

如果您使用的是Spring,则可以使用指定属性“mappingLocations”的SqlMapClientFactoryBean。在此属性中,您可以指定通用路径,例如“com / tatakelabs / dbmaps / * _ SqlMap.xml”或使用诸如$ {mapfiles}之类的变量,这些路径将由Spring解析为文件名数组。这允许您省略sqlMapConfig中的sqlMap元素。这项技术将在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