mybatis的方向工程生成xml

img


这样是不是等价的?如果用逆向工程生成的xml是不是就可以不用去配置xml的路径和要扫描的包了?

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/382899
  • 这篇博客你也可以参考下:IDEA打包项目mybatis的xml文件打包失败
  • 除此之外, 这篇博客: MyBatis详解:逆向工程自动生成代码中的 4.1、xml配置文件分析 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 我们是使用xml配置文件的方式来生成代码,故配置文件是最为重要的步骤。

    以下的配置文件主要做了4件事:

    1、连接数据库,配置数据库的连接信息

    2、相关属性设置

    3、指定要生成代码的位置,包括po类,mapper.xml和mapper.java这三类代码,一般po类放在po包下,mapper.xml和mapper.java放在mapper包下

    4、指定数据库中哪些表要生成代码

     

    <?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">
    		<commentGenerator>
    			<!-- 是否去除自动生成的注释 true:是 : false:否 -->
    			<property name="suppressAllComments" value="true" />
    		</commentGenerator>
    		<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
    		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
    			connectionURL="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC" userId="root"
    			password="mysql">
    		</jdbcConnection>
    		<!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"
    			connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg" 
    			userId="yycg"
    			password="yycg">
    		</jdbcConnection> -->
    
    		<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 
    			NUMERIC 类型解析为java.math.BigDecimal -->
    		<javaTypeResolver>
    			<property name="forceBigDecimals" value="false" />
    		</javaTypeResolver>
    
    		<!-- targetProject:生成PO类的位置 -->
    		<javaModelGenerator targetPackage="po"
    			targetProject=".\mybatis-generator\src">
    			<!-- enableSubPackages:是否让schema作为包的后缀 -->
    			<property name="enableSubPackages" value="false" />
    			<!-- 从数据库返回的值被清理前后的空格 -->
    			<property name="trimStrings" value="true" />
    		</javaModelGenerator>
            <!-- targetProject:mapper映射文件生成的位置 -->
    		<sqlMapGenerator targetPackage="mapper"
    			targetProject=".\mybatis-generator\src">
    			<!-- enableSubPackages:是否让schema作为包的后缀 -->
    			<property name="enableSubPackages" value="false" />
    		</sqlMapGenerator>
    		<!-- targetPackage:mapper接口生成的位置 -->
    		<javaClientGenerator type="XMLMAPPER"
    			targetPackage="mapper"
    			targetProject=".\mybatis-generator\src">
    			<!-- enableSubPackages:是否让schema作为包的后缀 -->
    			<property name="enableSubPackages" value="false" />
    		</javaClientGenerator>
    		<!-- 指定数据库表 -->
    		<table tableName="items"></table>
    		<table tableName="orders"></table>
    		<table tableName="orderdetail"></table>
    		<table tableName="user"></table>
    		<!-- <table schema="" tableName="sys_user"></table>
    		<table schema="" tableName="sys_role"></table>
    		<table schema="" tableName="sys_permission"></table>
    		<table schema="" tableName="sys_user_role"></table>
    		<table schema="" tableName="sys_role_permission"></table> -->
    		
    		<!-- 有些表的字段需要指定java类型
    		 <table schema="" tableName="">
    			<columnOverride column="" javaType="" />
    		</table> -->
    	</context>
    </generatorConfiguration>
    
  • 以下回答由chatgpt基于相关博客总结生成:

    使用MyBatis逆向工程生成XML文件可以等效于手动编写XML文件,因为逆向工程可以自动根据数据库表信息生成对应的XML映射文件。使用逆向工程生成XML文件也可以省略手动配置路径和扫描包的步骤,只需要按照官方文档中提供的配置方法进行配置即可。具体步骤如下:

    1.在maven项目的pom.xml文件中引入mybatis-generator插件

    <build>
        <plugins>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.4.0</version>
                <configuration>
                    <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>
                <dependencies>
                    <!--引入mysql驱动-->
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.29</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>
    

    2.在resources目录下新建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>
        <context id="testTables" targetRuntime="MyBatis3">
            <commentGenerator>
                <!-- 是否去除自动生成的注释 true:是 : false:否 -->
                <property name="suppressAllComments" value="true" />
            </commentGenerator>
            <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
            <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC" userId="root"
                password="mysql">
            </jdbcConnection>
            <!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"
                connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg" 
                userId="yycg"
                password="yycg">
            </jdbcConnection> -->
    
            <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 
                NUMERIC 类型解析为java.math.BigDecimal -->
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false" />
            </javaTypeResolver>
    
            <!-- targetProject:生成PO类的位置 -->
            <javaModelGenerator targetPackage="po"
                targetProject=".\mybatis-generator\src">
                <!-- enableSubPackages:是否让schema作为包的后缀 -->
                <property name="enableSubPackages" value="false" />
                <!-- 从数据库返回的值被清理前后的空格 -->
                <property name="trimStrings" value="true" />
            </javaModelGenerator>
            <!-- targetProject:mapper映射文件生成的位置 -->
            <sqlMapGenerator targetPackage="mapper"
                targetProject=".\mybatis-generator\src">
                <!-- enableSubPackages:是否让schema作为包的后缀 -->
                <property name="enableSubPackages" value="false" />
            </sqlMapGenerator>
            <!-- targetPackage:mapper接口生成的位置 -->
            <javaClientGenerator type="XMLMAPPER"
                targetPackage="mapper"
                targetProject=".\mybatis-generator\src">
                <!-- enableSubPackages:是否让schema作为包的后缀 -->
                <property name="enableSubPackages" value="false" />
            </javaClientGenerator>
            <!-- 指定数据库表 -->
            <table tableName="items"></table>
            <table tableName="orders"></table>
            <table tableName="orderdetail"></table>
            <table tableName="user"></table>
            <!-- <table schema="" tableName="sys_user"></table>
            <table schema="" tableName="sys_role"></table>
            <table schema="" tableName="sys_permission"></table>
            <table schema="" tableName="sys_user_role"></table>
            <table schema="" tableName="sys_role_permission"></table> -->
    
            <!-- 有些表的字段需要指定java类型
             <table schema="" tableName="">
                <columnOverride column="" javaType="" />
            </table> -->
        </context>
    </generatorConfiguration>
    

    其中,id为testTables表示逆向工程的一个标识,可以自定义,targetRuntime为MyBatis3表示使用的MyBatis版本。

    3.打开cmd命令行,进入maven项目的根目录,执行以下命令:

    mvn mybatis-generator:generate
    

    即可自动生成PO类和Mapper接口以及Mapper.xml映射文件,生成的文件会自动放到指定的目录下,省去了手动编写XML文件和配置路径和扫描包的步骤。

显然不是 逆向工程只是帮你快速生成xml和实体,但是mybatis该有的扫描还是需要