MybatisGenerator逆向工程生成重复内容

常哲彦
2023-12-01

mybatis generator SSM集成时报错:

java.lang.IllegalArgumentException: Result Maps collection already contains value for **.**.*Mapper.BaseResultMap

问题原因: 是因为mapper映射文件中的id=BaseResultMap重复造成. 根本原因是因为逆向工程多次生成, 其内容没有覆盖, 而是以追加的形式生成mapper映射文件的

解决: 

在<context>标签中添加一行配置:

       <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"/>

       注意: UnmergeableXmlMappersPlugin类是mybatis generator 1.4.0

     

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
   <context id="testTables" targetRuntime="MyBatis3">
      <!-- 只需要在此处添加这一行配置, 重新逆向生成mapper映射文件替换即可 -->
      <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"/>
      <commentGenerator>
         <!-- 是否去除自动生成的注释 true:是 : false:否 -->
         <property name="suppressAllComments" value="true" />
      </commentGenerator>
      <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
      <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
         connectionURL="jdbc:mysql://192.168.80.100:3306/ego?serverTimezone=GMT" userId="root"
         password="root">
      </jdbcConnection>
      <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 
         NUMERIC 类型解析为java.math.BigDecimal -->
      <javaTypeResolver>
         <property name="forceBigDecimals" value="false" />
      </javaTypeResolver>

      <!-- targetProject:生成POJO类的位置 -->
      <javaModelGenerator targetPackage="*.*.*.rpc.pojo"
         targetProject=".\src\main\java">
         <!-- enableSubPackages:是否让schema作为包的后缀 -->
         <property name="enableSubPackages" value="false" />
         <!-- 从数据库返回的值被清理前后的空格 -->
         <property name="trimStrings" value="true" />
      </javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
      <sqlMapGenerator targetPackage="*.*.*.rpc.mapper"
         targetProject=".\src\main\resources">
         <!-- enableSubPackages:是否让schema作为包的后缀 -->
         <property name="enableSubPackages" value="false" />
      </sqlMapGenerator>
      <!-- targetPackage:mapper接口生成的位置 -->
      <javaClientGenerator type="XMLMAPPER"
         targetPackage="*.*.*.rpc.mapper"
         targetProject=".\src\main\java">
         <!-- enableSubPackages:是否让schema作为包的后缀 -->
         <property name="enableSubPackages" value="false" />
      </javaClientGenerator>
      <!-- 指定数据库表 -->
      <table schema="" tableName="tb_content"></table>
      <table schema="" tableName="tb_content_category"></table>
      <table schema="" tableName="tb_item"></table>
      <table schema="" tableName="tb_item_cat"></table>
      <table schema="" tableName="tb_item_desc"></table>
      <table schema="" tableName="tb_item_param"></table>
      <table schema="" tableName="tb_item_param_item"></table>
      <table schema="" tableName="tb_order"></table>
      <table schema="" tableName="tb_order_item"></table>
      <table schema="" tableName="tb_order_shipping"></table>
      <table schema="" tableName="tb_user"></table>

   </context>
</generatorConfiguration>

 

 类似资料: