mybatis generator 逆向工程 (反向生成实体映射)

我们创建完成数据库后,使用orm框架要把数据库中的表、字段与实体,属性对映起来。总归不能把字段重新录入到实体类中吧,这样太麻烦了。我们用powerdesigner创建模型生成到数据库中,不用在数据库中一步一步的创建表。当然工作量并没有少多少,都需要创建一个表结构。但是,一步到位啊。我们本着减少工作量的目的去完成任务powerdesigner→数据库(mysql,oracle,sqlServer)→orm映射。闲话少说。下边记录使用generator的反向生成。

使用mybatis的步骤:

  1. 添加mybatis的依赖于插件。(在生成实体的时候,我不知道是否必须添加mybatis的依赖,但是使用mybatis肯定需要添加依赖的)。
    //依赖
     <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.0</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
            <dependency>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-core</artifactId>
                <version>1.3.5</version>
            </dependency>
    
    //插件
    <plugin>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-maven-plugin</artifactId>
                    <version>1.3.2</version>
                    <configuration>
                        <verbose>true</verbose>
                        <overwrite>true</overwrite>
                    </configuration>
                </plugin>
  2. 添加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>
    
        <properties resource="generator.properties"></properties>
    
        <!-- 当前电脑的数据库驱动程序jar包的绝对路径 -->
        <classPathEntry location="${jdbc.driverLocation}"/>
    
        <context id="context" targetRuntime="MyBatis3">
            <!--是否在代码中显示注释-->
            <commentGenerator>
                <property name="suppressDate" value="true" /><!-- 取消生成注释代时间戳 -->
                <property name="suppressAllComments" value="true" /><!-- 取消所有注释 -->
            </commentGenerator>
    
            <!--数据库链接地址账号密码-->
            <jdbcConnection driverClass="${jdbc.driverClass}"
                            connectionURL="${jdbc.connectionURL}"
                            userId="${jdbc.username}"
                            password="${jdbc.password}">
            </jdbcConnection>
            <!--...-->
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false"/>
            </javaTypeResolver>
            <!--生成pojo类存放位置
              targetPackage:生成的实体类的位置在哪个包下
              targetProject:生成的目标项目位置。填写src\main\java。在部分人的示例中,targetProject是绝对路径,更换电脑的话就需要重新配置。解决这个麻烦的时候发现这样写就可以了。
              上述两个属性适用于其他标签
            -->
            <javaModelGenerator targetPackage="com.example.testing_mybatis.entity" targetProject="src\main\java">
                <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
                <property name="enableSubPackages" value="true"/>
                <property name="trimStrings" value="true"/>
            </javaModelGenerator>
            <!--生成xml映射文件存放位置-->
            <sqlMapGenerator targetPackage="mapper" targetProject="src\main\resources">
                <property name="enableSubPackages" value="true"/>
            </sqlMapGenerator>
            <!--生成mapper类存放位置-->
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.testing_mybatis.mapper" targetProject="src\main\java">
                <property name="enableSubPackages" value="true"/>
            </javaClientGenerator>
    
            <!--生成对应表及类名-->
            <table tableName="tb_person"
                   domainObjectName="Person"
                   enableCountByExample="false"
                   enableUpdateByExample="false"
                   enableDeleteByExample="false"
                   enableSelectByExample="false"
                   selectByExampleQueryId="false">
                <property name="my.isgen.usekeys" value="true"/>
                <property name="useActualColumnNames" value="true"/>
                <generatedKey column="id" sqlStatement="JDBC"/>
            </table>
    
    
        </context>
    </generatorConfiguration>
    

    上边有配置了数据库的连接在另外一个文件中

    jdbc.driverLocation=H:\apache-maven-3.6.0\repository\mysql\mysql-connector-java\8.0.17\mysql-connector-java-8.0.17.jar
    jdbc.driverClass=com.mysql.cj.jdbc.Driver
    jdbc.connectionURL=jdbc:mysql://localhost/test?useSSL=FALSE&serverTimezone=GMT%2b8&characterEncoding=UTF-8&allowPublicKeyRetrieval=true
    jdbc.username=root
    jdbc.password=cdss
    

    上述配置有问题。不利于下次拷贝。那么,暂且在此粘贴一个正确的配置文件。

    jdbc.driverLocation=H:/apache-maven-3.6.0/repository/mysql/mysql-connector-java/8.0.17/mysql-connector-java-8.0.17.jar
    jdbc.driverClass=com.mysql.cj.jdbc.Driver
    jdbc.connectionURL=jdbc:mysql://localhost/test?useSSL=FALSE&serverTimezone=GMT%2b8&characterEncoding=UTF-8&allowPublicKeyRetrieval=true
    jdbc.username=root
    jdbc.password=cdss
  3. 添加完成后,点击maven下的插件generator生成。

到此完成。其实这里边是有错误的。

Execution default-cli of goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate failed: Cannot resolve classpath entry: H:apache-maven-3.6.0

上述错误是因为 数据库连接的属性 jdbc.driverLocation 写错了。以前测试过但是没用过。项目还是以前的只是变更了一下电脑再次生成竟然错误了。那么,找到问题了。是driverLocation的值错了,应该写成:
H:/apache-maven-3.6.0/repository/mysql/mysql-connector-java/8.0.17/mysql-connector-java-8.0.17.jar 当然您得用您自己的。

至于里边的详细配置属性有简书地址:https://www.jianshu.com/p/e09d2370b796

发布了145 篇原创文章 · 获赞 6 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/m0_37626203/article/details/102636025