maven

项目启动的时候报Result Maps collection a

2020-03-05  本文已影响0人  炎族族长炎天帝

在一个项目中使用MyBatis Generator来生成Dao层的文件会显著的提高开发效率,但这极度封装的背后,如果一点都不了解其操作会导致一些难以预见的问题,比如~

首先项目采用的Maven,集成MyBatis Generator的pom文件相关部分如下:


<build>
    <plugins>
        <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.3.2</version>
            <configuration>
                <configurationFile>src/main/resources/generatorConfig-spu.xml</configurationFile>
                <verbose>true</verbose>
                <overwrite>true</overwrite>
            </configuration>
            <executions>
                <execution>
                    <id>Generate MyBatis Artifacts</id>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-core</artifactId>
                    <version>1.3.2</version>
                </dependency>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.28</version>
                    <scope>runtime</scope>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

看起来没什么问题,线上服务采用的Jenkins自动化构建部署,很方便,但是启动的时候一直报错,报错如下:


Result Maps collection already contains value for com.bj58.zhuanzhuan.zzspusamplejob.dao.mappers.SkuInfoSrcMapper.BaseResultMap

错误简单明了,就是ResultMap冲突,于是很自信的找到xml文件进行排查,如下图:

image.png

首先,我知道MyBatis Generator在重复生成文件的时候,不会覆盖xml文件,而是会合并(Merge),这会导致id的冲突,于是我直接删了xml文件自动生成,再次部署,又一次出现这样的问题。

于是检查项目的xml文件,确认并没有重复的ID,但每次部署的时候都会报错,最后查询了MyBatis Generator的官方文档,看到如下解释官方文档

image.png

大概意思就是说如果在pom文件找那个加上了<goal>generate</goal>,那么在maven compile步骤前会执行生成,而正好我们的项目是通过maven构建的,因此每次构建的时候自动生成都会merge xml,导致ID重复,至此问题很明确了,把pom文件中自动生成的配置删了即可。

上一篇 下一篇

猜你喜欢

热点阅读