zoukankan      html  css  js  c++  java
  • IDEA 中使用MyBatis-generator 自动生成MyBatis代码

    0.在Intellij IDEA创建maven项目

    1. 在maven项目的pom.xml 添加mybatis-generator-maven-plugin 插件

    复制代码
    <build>  
      <finalName>xxx</finalName>  
      <plugins>  
        <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>  
      </plugins>  
    </build>  
    复制代码

    2. 在maven项目下的src/main/resources 目录下建立名为 generatorConfig.xml的配置文件,作为mybatis-generator-maven-plugin 插件的执行目标,模板如下:

    <?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>
    
        <!--指定特定数据库的jdbc驱动jar包的位置 -->
        <classPathEntry location="${jdbc.driverLocation}"/>
    
        <context id="default" targetRuntime="MyBatis3">
    
            <!--jdbc的数据库连接 -->
            <jdbcConnection driverClass="${jdbc.driverClass}" connectionURL="${jdbc.connectionURL}" userId="${jdbc.userId}" password="${jdbc.password}">
            </jdbcConnection>
    
    
            <!--生成entity类存放位置-->
            <javaModelGenerator targetPackage="org.louis.hometutor.po" targetProject="src/main/java">
                <!-- 是否对model添加 构造函数 -->
                <property name="constructorBased" value="true"/>
                <!-- 是否对类CHAR类型的列的数据进行trim操作 -->
                <property name="trimStrings" value="true"/>
            </javaModelGenerator>
    
            <!--生成映射文件存放位置-->
            <sqlMapGenerator targetPackage="org.louis.hometutor.domain" targetProject="src/main/java">
                <property name="enableSubPackages" value="false"/>
            </sqlMapGenerator>
    
            <!--生成Dao类存放位置-->
            <javaClientGenerator targetPackage="com.foo.tourist.dao" targetProject="src/main/java" type="MIXEDMAPPER">
                <property name="enableSubPackages" value="true"/>
            </javaClientGenerator>
    
    
    
            <table tableName="student" domainObjectName="Student">
                <generatedKey column="id" sqlStatement="select uuid_short()" identity="false"/>
                <!-- 用来修改表中某个列的属性,MBG会使用修改后的列来生成domain的属性;
                   column:要重新设置的列名;
                   注意,一个table元素中可以有多个columnOverride元素哈~
                 -->
                <columnOverride column="user_name">
                    <!-- 使用property属性来指定列要生成的属性名称 -->
                    <property name="property" value="userName"/>
                    <!-- javaType用于指定生成的domain的属性类型,使用类型的全限定名-->
                    <property name="javaType" value="java.lang.String"/>
                    <!-- jdbcType用于指定该列的JDBC类型-->
                    <property name="jdbcType" value="VARCHAR"/>
                    <!-- 参考table元素的delimitAllColumns配置,默认为false-->
                    <property name="delimitedColumnName" value="true"/>
                </columnOverride>
            </table>
    
            <table tableName="teacher" domainObjectName="Teacher">
                <generatedKey column="id" sqlStatement="select uuid_short()" identity="false"/>
                <!-- 用来修改表中某个列的属性,MBG会使用修改后的列来生成domain的属性;
                   column:要重新设置的列名;
                   注意,一个table元素中可以有多个columnOverride元素哈~
                 -->
                <columnOverride column="user_name">
                    <!-- 使用property属性来指定列要生成的属性名称 -->
                    <property name="property" value="userName"/>
                    <!-- javaType用于指定生成的domain的属性类型,使用类型的全限定名-->
                    <property name="javaType" value="java.lang.String"/>
                    <!-- jdbcType用于指定该列的JDBC类型-->
                    <property name="jdbcType" value="VARCHAR"/>
                    <!-- 参考table元素的delimitAllColumns配置,默认为false-->
                    <property name="delimitedColumnName" value="true"/>
                </columnOverride>
            </table>
        </context>
    </generatorConfiguration>

    这里使用了外置的配置文件generator.properties,可以将一下属性配置到properties文件之中,增加配置的灵活性:

    jdbc.driverLocation=D:\myfolder\maven_repository\mysql\mysql-connector-java\8.0.15\mysql-connector-java-8.0.15.jar
    jdbc.driverClass=com.mysql.cj.jdbc.Driver
    jdbc.connectionURL=jdbc:mysql://localhost:3306/hxe_ant?useSSL=false&characterEncoding=UTF-8&serverTimezone=CTT&useAffectedRows=true&allowPublicKeyRetrieval=true
    jdbc.userId=root
    jdbc.password=root
    

      

    项目目录如下:

    技术分享

    3. 在Intellij IDEA添加一个“Run运行”选项,使用maven运行mybatis-generator-maven-plugin插件 :

    技术分享

    技术分享

    之后弹出运行配置框,为当前配置配置一个名称,这里其名为"generator",然后在 “Command line” 选项中输入“mybatis-generator:generate  -e”

    这里加了“-e ”选项是为了让该插件输出详细信息,这样可以帮助我们定位问题

    技术分享

    技术分享

    如果添加成功,则会在run 选项中有“generator” 选项,如下:

    技术分享

    点击运行,然后不出意外的话,会在控制台输出:

    "C:Program Files (x86)Javajdk1.8.0_73injava.exe" -Dmaven.multiModuleProjectDirectory=D:myfoldercodeant-api -Dmaven.home=D:myfolderinstallapache-maven-3.6.2 -Dclassworlds.conf=D:myfolderinstallapache-maven-3.6.2inm2.conf "-Dmaven.ext.class.path=D:myfolderinstallIntelliJ IDEA 2019.2.3pluginsmavenlibmaven-event-listener.jar" "-javaagent:D:myfolderinstallIntelliJ IDEA 2019.2.3libidea_rt.jar=58980:D:myfolderinstallIntelliJ IDEA 2019.2.3in" -Dfile.encoding=UTF-8 -classpath D:myfolderinstallapache-maven-3.6.2ootplexus-classworlds-2.6.0.jar org.codehaus.classworlds.Launcher -Didea.version2019.2.3 -s D:myfolderinstallapache-maven-3.6.2confsettings.xml -Dmaven.repo.local=D:myfoldermaven_repository mybatis-generator:generate -e
    [INFO] Error stacktraces are turned on.
    [INFO] Scanning for projects...
    [WARNING] 
    [WARNING] Some problems were encountered while building the effective model for com.huixiaoer:ant-api:jar:1.0.0-SNAPSHOT
    [WARNING] 'dependencies.dependency.scope' for org.springframework.cloud:spring-cloud-dependencies:pom must be one of [provided, compile, runtime, test, system] but is 'import'. @ line 91, column 20
    [WARNING] 'dependencies.dependency.scope' for org.springframework.boot:spring-boot-devtools:jar must be one of [provided, compile, runtime, test, system] but is 'true'. @ line 116, column 20
    [WARNING] 
    [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
    [WARNING] 
    [WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
    [WARNING] 
    [INFO] 
    [INFO] -----------------------< com.huixiaoer:ant-api >------------------------
    [INFO] Building ant-api 1.0.0-SNAPSHOT
    [INFO] --------------------------------[ jar ]---------------------------------
    [INFO] 
    [INFO] --- mybatis-generator-maven-plugin:1.3.7:generate (default-cli) @ ant-api ---
    [INFO] Connecting to the Database
    [INFO] Introspecting table student
    [INFO] Introspecting table teacher
    [INFO] Generating Example class for table student
    [INFO] Generating Record class for table student
    [INFO] Generating Mapper Interface for table student
    [INFO] Generating SQL Map for table student
    [INFO] Generating Example class for table teacher
    [INFO] Generating Record class for table teacher
    [INFO] Generating Mapper Interface for table teacher
    [INFO] Generating SQL Map for table teacher
    [INFO] Saving file StudentMapper.xml
    [INFO] Saving file TeacherMapper.xml
    [INFO] Saving file StudentExample.java
    [INFO] Saving file Student.java
    [INFO] Saving file StudentMapper.java
    [INFO] Saving file TeacherExample.java
    [INFO] Saving file Teacher.java
    [INFO] Saving file TeacherMapper.java
    [WARNING] Cannot obtain primary key information from the database, generated objects may be incomplete
    [WARNING] Cannot obtain primary key information from the database, generated objects may be incomplete
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  3.033 s
    [INFO] Finished at: 2019-10-31T10:40:32+08:00
    [INFO] ------------------------------------------------------------------------

    看到BUILD SUCCESS,则大功告成,如果有错误的话,由于添加了-e 选项,会把具体的详细错误信息打印出来的,根据错误信息修改即可

    原文地址:https://www.cnblogs.com/liaojie970/p/7058543.html

  • 相关阅读:
    MySQL/MariaDB 版本选择
    Linux查看某个进程的磁盘IO读写情况 pidstat
    Oracle 11gR2 Database UNDO表空间使用率居高不下处理
    Linux十字病毒查杀处理
    MySQL字符集与校对
    点与线、线与线之间的位置关系
    [向量] 点积应用-两个向量夹角
    点与线的距离及垂足点
    unity 4.6.1脚本解析出错,没有激活的勾,方法顺序出错
    Error building Player: Exception: Could not start java
  • 原文地址:https://www.cnblogs.com/it-deepinmind/p/11770005.html
Copyright © 2011-2022 走看看