MyBatis映射器位置

时间:2018-02-15 10:20:50

标签: java mybatis

我在两个模块中遇到MyBatis配置问题。项目结构如下:

  • DB
    • SRC
        • 的java
          • VideosDAO.class
          • ConnectionFactory.class
          • Videos.class
          • VideosMapper.class
        • 资源
          • VideoMapper.xml
          • config.xml中
    • 的pom.xml
  • 混合
    • SRC
        • 的java
          • ArticlesDAO.class
          • Articles.class
          • ArticlesMapper.class
        • 资源
          • ArticlesMapper.xml
    • 的pom.xml

当我在DB模块中拥有所有内容时,我可以连接到数据库并执行SQL但是当我想在MIXED模块中使用来自DB模块的ConnectionFactory.class和config.xml时,它无法正常工作。

### Error building SqlSession.
### Cause: org.apache.ibatis.builder.BuilderException: Error creating document 
instance.  Cause: org.xml.sax.SAXParseException; lineNumber: 24; columnNumber: 
24; Premature end of file.

我认为问题出在

中的config.xml文件中
<mappers>
</mappers>

我已尝试过所有可能性:http://www.mybatis.org/mybatis-3/configuration.html#mappers但没有任何效果:( 任何想法如何使config.xml看起来允许我使用其他模块中的类而不是复制它们但同时使用其他模块中的mapper?

我的一些尝试:

 <mappers>
    <mapper url="file:///MIXED/src/main/resources/ArticlesMapper.xml"/>
    <mapper resource="VideoMapper.xml"/>
 </mappers>

<mappers>
    <mapper resource="MIXED/src/main/resources/ArticlesMapper.xml"/>
    <mapper resource="VideoMapper.xml"/>
</mappers>

1 个答案:

答案 0 :(得分:0)

首先确保您的maven MIXED模块依赖于maven DB模块。您需要这样才能使类和资源可用。将依赖项添加到pom.xml模块的MIXED中(例如查看this question

执行此类之后,DB模块的类和资源位于MIXED模块的类路径中,您在config.xml中引用它们的方式与引用模块本身的资源相同:

<mappers>
   <mapper resource="VideoMapper.xml"/>
</mappers>