0

尝试使用带有两个 myBatis 映射器的应用程序运行 JBoss 服务器时,我收到一条消息

XML fragments parsed from previous mappers already contains value for workSql

有趣的时刻是 sql 元素 workSql 在一个唯一的映射器中。并且只存在一次。我也通过文件搜索检查过。

类似的问题,在MyBatis: Errors when upgrade to 3.2.7 from 3.0.3中,关于消息

Mapped Statements collection already contains value for com.foo.FooDao.java

是不同的,因为它不是关于 sql 元素,而是关于 Spring 上下文中引用的整个 MyBatis 映射器。它的收据也不适用于我的情况 - 我的映射器已经有命名空间,它们无济于事。

4

1 回答 1

0

似乎如果映射器没有准确命名,MyBatis 在某些情况下会尝试多次读取它们,并且它们会与自身发生冲突。

收据是在 configuration.xml 文件中设置所有映射器:

<mappers>
    <mapper resource="amcssz/spr/srv/main/batis/ReportsMapper.xml"/>
    <mapper resource="amcssz/spr/srv/main/batis/SprMapper.xml"/>
</mappers>

所有的冲突都消失了。

于 2020-02-07T11:22:03.120 回答