当前使用版本

mybatis-plus-3.3.1、spring-boot-2.2.2.RELEASE

该问题是如何引起的?

将spring-boot项目瘦身打包(依赖不变的jar包放到lib文件夹下)后,自己写的mapper xml文件只要有\<sql>标签 类似这种: \<sql id="columns"> id, name \<\/sql> 启动jar将会报错

重现步骤(如果有就写完整)

如果spring-boot没有瘦身打包 不会出现这种情况 已经确认id都是唯一的 如果我全部去掉xml中的\<sql>标签 启动不会报错

报错信息

DeviceDao在报错之前看日志信息已经加载过了 2020-06-28 13:50:53.179 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.findDeviceBy 2020-06-28 13:50:53.180 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.option 2020-06-28 13:50:53.184 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.AllDevicesByUserId 2020-06-28 13:50:53.187 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.moreScreen 2020-06-28 13:50:53.219 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.onlineCount 2020-06-28 13:50:53.221 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.appDeviceVOResult 2020-06-28 13:50:53.224 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.getSmartService 2020-06-28 13:50:53.225 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.selectByIdOverwrite 2020-06-28 13:50:53.225 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.moreScreenCustom 2020-06-28 13:50:53.276 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.insert 2020-06-28 13:50:53.283 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.delete 2020-06-28 13:50:53.287 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.deleteByMap 2020-06-28 13:50:53.289 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.deleteById 2020-06-28 13:50:53.291 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.deleteBatchIds 2020-06-28 13:50:53.301 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.update 2020-06-28 13:50:53.304 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.updateById 2020-06-28 13:50:53.305 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.selectById 2020-06-28 13:50:53.307 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.selectBatchIds 2020-06-28 13:50:53.311 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.selectByMap 2020-06-28 13:50:53.315 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.selectOne 2020-06-28 13:50:53.322 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.selectCount 2020-06-28 13:50:53.326 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.selectMaps 2020-06-28 13:50:53.333 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.selectMapsPage 2020-06-28 13:50:53.338 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.selectObjs 2020-06-28 13:50:53.343 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.selectList 2020-06-28 13:50:53.346 [main] DEBUG com.baomidou.mybatisplus.core.MybatisConfiguration - addMappedStatement: com.dage.ha.srab.portal.dao.DeviceDao.selectPage 2020-06-28 13:50:53.349 [main] DEBUG com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean - Parsed mapper file: 'URL [jar:file:/C:/Users/chenboge/Desktop/%e8%8a%b1%e8%af%ad%e6%b1%9f%e5%8d%97/jar/sra-portal.jar!/com/ai/intellicloud/sra/portal/dao/mapper/DeviceMapper.xml]' 这里DeviceDao日志Parsed mapper没有报错

最后的错误日志 Caused by: java.lang.IllegalArgumentException: XML fragments parsed from previous mappers already contains value for com.dage.ha.srab.portal.dao.DeviceDao.columns at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:947) at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:903) at org.apache.ibatis.builder.xml.XMLMapperBuilder.sqlElement(XMLMapperBuilder.java:351) at org.apache.ibatis.builder.xml.XMLMapperBuilder.sqlElement(XMLMapperBuilder.java:342) at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:119) ... 57 common frames omitted

我debug的时候发现确实是重复了 但是不知道是什么原因 瘦身打包在cmd下面执行java -jar就会报错

Comment From: dunkboy

我已经自己解决这个问题了 是我扫描xml文件导致的问题