MyBatis逆向工程(Maven)(解决因同名表生成mapper重复问题)

依赖的jar包

<!-- 数据库依赖 -->
	 <dependency>
         <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
             <version>8.0.13</version>
      </dependency>

<!-- 逆向工程依赖的generator -->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.5</version>
        </dependency>

maven的逆向工程插件

<build>
        <plugins>
            <!-- mybatis逆向工程插件 -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.7</version> 
                <configuration>
                    <!--配置文件的路径-->
                    <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>
                 <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>8.0.13</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

配置文件(generatorConfig.xml)

<?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>

    <!-- 有Example查询条件内容 -->
    <context id="testTables" targetRuntime="MyBatis3">
        <commentGenerator>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="false" />
            <!--注释中去除日期注释-->
            <property name="suppressDate" value="true"/>
            <!--注释中添加数据库字段备注注释-->
            <property name="addRemarkComments" value="true"/>
        </commentGenerator>

        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
        <jdbcConnection
                driverClass="com.mysql.cj.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/test1"
                userId="root"
                password="123">
            <!--MySQL 8.x 需要指定服务器的时区-->
            <property name="serverTimezone" value="UTC"/>
            <!--MySQL 不支持 schema 或者 catalog 所以需要添加这个-->
            <!--参考 : http://www.mybatis.org/generator/usage/mysql.html-->
            <property name="nullCatalogMeansCurrent" value="true"/>
            <!-- MySQL8默认启用 SSL ,不关闭会有警告-->
            <property name="useSSL" value="false"/>
        </jdbcConnection>

        <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
            NUMERIC 类型解析为java.math.BigDecimal -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- targetProject:生成Entity类的路径 -->
        <javaModelGenerator targetProject=".\src" targetPackage="mbg.bean">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!-- targetProject:XXXMapper.xml映射文件生成的路径 -->
        <sqlMapGenerator targetProject=".\src" targetPackage="mbg.dao">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>

        <!-- targetPackage:Mapper接口生成的位置 -->
        <javaClientGenerator type="XMLMAPPER" targetProject=".\src" targetPackage="mbg.dao">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>



        <!-- 数据库表名字和我们的entity类对应的映射指定 -->
        <table  tableName="role_sources" domainObjectName="RoleSources"></table>
		......
		配置要生成的表
		......



    </context>
</generatorConfiguration>

问题:MyBatis Generator 生成器把其他数据库的同名表生成下来的问题

在生成完成后,有的表的mapper.xml会有重复的代码。是因为在其他库里有同名的表,导致他生成了两遍。
:“Result Maps collection already contains value for com.xxx.dao.tb_userMapper.BaseResultMap”

解决方法是在生成器的配置文件里的数据库连接地址中添加下列参数:

nullCatalogMeansCurrent=true

问题解决办法引用:https://blog.youkuaiyun.com/smallnetter/article/details/94593605

加到配置文件中:

<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/security"
                userId="root"
                password="root">
    <!--MySQL 8.x 需要指定服务器的时区-->
    <property name="serverTimezone" value="UTC"/>
    <!--MySQL 不支持 schema 或者 catalog 所以需要添加这个-->
    <!--参考 : http://www.mybatis.org/generator/usage/mysql.html-->
    <property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection>

配置文件2:pojo实现序列化和toString

<?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">

		<!-- 生成的Java文件的编码 -->
		<property name="javaFileEncoding" value="UTF-8" />
		<!-- 格式化java代码 -->
		<property name="javaFormatter"
			value="org.mybatis.generator.api.dom.DefaultJavaFormatter" />
		<!-- 格式化XML代码 -->
		<property name="xmlFormatter"
			value="org.mybatis.generator.api.dom.DefaultXmlFormatter" />

		<!-- 配置生成pojo的序列化的插件,mybatis支持很多插件,这些插件都在 org.mybatis.generator.plugins包下  -->
		<plugin type="org.mybatis.generator.plugins.SerializablePlugin" />

		<!-- 配置生成pojo的toString()方法的插件,mybatis支持很多插件,这些插件都在 org.mybatis.generator.plugins包下 -->
		<plugin type="org.mybatis.generator.plugins.ToStringPlugin" />


		<commentGenerator>
			<!-- 是否去除自动生成的注释 true:是 : false:否 -->
			<property name="suppressAllComments" value="true" />

		</commentGenerator>

		<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
		<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
			connectionURL="jdbc:mysql://localhost:3306/youlexuandb" userId="root" password="123">
			<!--MySQL 8.x 需要指定服务器的时区-->
			<property name="serverTimezone" value="UTC"/>
			<!--MySQL 不支持 schema 或者 catalog 所以需要添加这个-->
			<!--参考 : http://www.mybatis.org/generator/usage/mysql.html-->
			<property name="nullCatalogMeansCurrent" value="true"/>
			<!-- MySQL8默认启用 SSL ,不关闭会有警告-->
			<property name="useSSL" value="false"/>
		</jdbcConnection>

		<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 
			和 NUMERIC 类型解析为java.math.BigDecimal -->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>

		<!-- targetProject:生成PO类的位置 -->
		<javaModelGenerator targetPackage="com.offcn.pojo"
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
			<!-- 从数据库返回的值被清理前后的空格 -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
		
		<!-- targetProject:mapper映射文件生成的位置 -->
		<sqlMapGenerator targetPackage="com.offcn.mapper"
			targetProject=".\resource">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</sqlMapGenerator>
		
		<!-- targetPackage:mapper接口生成的位置 -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="com.offcn.mapper" targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</javaClientGenerator>

		<!-- 指定数据库表 -->
		<table schema="" tableName="tb_address"></table>
		<table schema="" tableName="tb_areas"></table>
		<table schema="" tableName="tb_brand"></table>
		<table schema="" tableName="tb_cities"></table>
		<table schema="" tableName="tb_content"></table>
		<table schema="" tableName="tb_content_category"></table>
		<table schema="" tableName="tb_freight_template"></table>
		<table schema="" tableName="tb_goods"></table>
		<table schema="" tableName="tb_goods_desc"></table>
		<table schema="" tableName="tb_item"></table>
		<table schema="" tableName="tb_item_cat"></table>
		<table schema="" tableName="tb_order"></table>
		<table schema="" tableName="tb_order_item"></table>
		<table schema="" tableName="tb_pay_log"></table>
		<table schema="" tableName="tb_provinces"></table>
		<table schema="" tableName="tb_seckill_goods"></table>
		<table schema="" tableName="tb_seckill_order"></table>
		<table schema="" tableName="tb_seller"></table>
		<table schema="" tableName="tb_specification"></table>
		<table schema="" tableName="tb_specification_option"></table>
		<table schema="" tableName="tb_type_template"></table>
		<table schema="" tableName="tb_user"></table>

	</context>

</generatorConfiguration>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值