zoukankan      html  css  js  c++  java
  • [06] 利用mybatis-generator自动生成代码


    1、mybatis-generator 概述

    MyBatis官方提供了逆向工程 mybatis-generator,可以针对数据库表自动生成MyBatis执行所需要的代码(如Mapper.java、Mapper.xml、POJO)。mybatis-generator 有三种用法:命令行、eclipse插件、maven插件。而maven插件的方式比较通用,本文也将概述maven插件的使用方式。

    2、pom.xml中配置plugin

    <build>
        <plugins>
            <!-- mybatis-generator -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <!-- mybatis-generator的配置文件,根据情况调整位置 -->
                    <configurationFile>src/main/resources/generatorConfig.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>
                </dependencies>
            </plugin>
        </plugins>
    </build>

    3、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>
    
        <!--JDBC驱动jar包的位置-->
        <classPathEntry location="C:/workspace/project/learning/mybatis/lib/mysql-connector-java-5.1.6.jar"/>
    
        <context id="default" targetRuntime="MyBatis3">
    
            <!--创建Java类时是否取消生成注释-->
            <commentGenerator>
                <property name="suppressDate" value="true"/>
                <property name="suppressAllComments" value="true"/>
            </commentGenerator>
    
            <!--JDBC数据库连接-->
            <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                            connectionURL="jdbc:mysql://localhost:3306/test"
                            userId="root"
                            password="dev">
            </jdbcConnection>
    
            <!--
            Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example类
            targetPackage     指定生成的model生成所在的包名
            targetProject     指定在该项目下所在的路径
            -->
            <javaModelGenerator targetPackage="dulk.learn.mybatis.generator.pojo"
                                targetProject="./src/main/java">
                <!-- 是否允许子包,即targetPackage.schemaName.tableName -->
                <property name="enableSubPackages" value="false"/>
                <!-- 是否对model添加构造函数 -->
                <property name="constructorBased" value="true"/>
                <!-- 是否对类CHAR类型的列的数据进行trim操作 -->
                <property name="trimStrings" value="true"/>
                <!-- 建立的Model对象是否 不可改变  即生成的Model对象不会有 setter方法,只有构造方法 -->
                <property name="immutable" value="false"/>
            </javaModelGenerator>
    
            <!--
            mapper映射文件生成所在的目录 为每一个数据库的表生成对应的SqlMap文件 
            -->
            <sqlMapGenerator targetPackage="generator"
                             targetProject="./src/main/resources">
                <property name="enableSubPackages" value="false"/>
            </sqlMapGenerator>
    
            <!-- 
            客户端代码,生成易于使用的针对Model对象和XML配置文件的代码
            type="ANNOTATEDMAPPER",生成Java Model和基于注解的Mapper对象
            type="MIXEDMAPPER",生成基于注解的Java Model和相应的Mapper对象
            type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口
            -->
            <javaClientGenerator type="XMLMAPPER"
                                 targetPackage="dulk.learn.mybatis.generator.mapper"
                                 targetProject="./src/main/java">
                <property name="enableSubPackages" value="false"/>
            </javaClientGenerator>
    
    
            <!--tables-->
            <table tableName="author" domainObjectName="Author"
                   enableCountByExample="false" enableUpdateByExample="false"
                   enableDeleteByExample="false" enableSelectByExample="false"
                   selectByExampleQueryId="false">
            </table>
            <table tableName="book" domainObjectName="Book"
                   enableCountByExample="false" enableUpdateByExample="false"
                   enableDeleteByExample="false" enableSelectByExample="false"
                   selectByExampleQueryId="false">
            </table>
    
        </context>
    </generatorConfiguration>

    有些默认配置不必显性去配置,所以简化一下快速配置的话也可以这样:
    (注意:配置中文件的生成地址等根据个人实际情况进行调整,另外,若有其他配置想要调整请参考官方文档)
    <?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>
    
        <classPathEntry location="C:/workspace/project/learning/mybatis/lib/mysql-connector-java-5.1.6.jar"/>
    
        <context id="default" targetRuntime="MyBatis3">
    
            <commentGenerator>
                <property name="suppressDate" value="true"/>
                <property name="suppressAllComments" value="true"/>
            </commentGenerator>
    
            <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                            connectionURL="jdbc:mysql://localhost:3306/test"
                            userId="root"
                            password="dev">
            </jdbcConnection>
    
            <javaModelGenerator targetPackage="dulk.learn.mybatis.generator.pojo"
                                targetProject="./src/main/java">
                <property name="trimStrings" value="true"/>
            </javaModelGenerator>
    
            <sqlMapGenerator targetPackage="generator"
                             targetProject="./src/main/resources">
            </sqlMapGenerator>
    
            <javaClientGenerator type="XMLMAPPER"
                                 targetPackage="dulk.learn.mybatis.generator.mapper"
                                 targetProject="./src/main/java">
            </javaClientGenerator>
    
            <table tableName="author" domainObjectName="Author"
                   enableCountByExample="false" enableUpdateByExample="false"
                   enableDeleteByExample="false" enableSelectByExample="false"
                   selectByExampleQueryId="false">
            </table>
            <table tableName="book" domainObjectName="Book"
                   enableCountByExample="false" enableUpdateByExample="false"
                   enableDeleteByExample="false" enableSelectByExample="false"
                   selectByExampleQueryId="false">
            </table>
    
        </context>
    </generatorConfiguration>

    另,配置文件中诸如 javaModelGenerator / sqlMapGenerator / javaClientGenerator 等配置的顺序不要轻易改变,可能会导致插件执行时失败。

    4、使用方式

    mvn mybatis-generator:generate
    如果是在IDEA环境中,直接鼠标点击执行即可:

    目录结构如下:

    注:建表时,字段名称建议用"_"分隔多个单词,比如:author_id...,这样生成的model,属性名称就会变成的驼峰命名,即:authorId

    5、参考链接



  • 相关阅读:
    线段树入门总结
    从零基础学三分查找
    Codeforces Beta Round #1 A,B,C
    isupper()函数
    matlab字符串操作总结
    hdu 4873 ZCC Loves Intersection(大数+概率)
    设计模式入门之桥接模式Bridge
    有关UIWebView的SSL总结
    vmware虚拟机上linux操作系统进行tty1~tty6切换方法和具体步骤
    Python BeautifulSoup4 使用指南
  • 原文地址:https://www.cnblogs.com/deng-cc/p/9340748.html
Copyright © 2011-2022 走看看