IDEA 和 Eclispe 使用 MyBatis Generator插件自动生成代码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36513534/article/details/80428124

1.IDEA下

1.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>  

1.2 在maven项目下的src/main/resources目录下建立名为 generatorConfig.xml的配置文件,作为mybatis-generator-maven-plugin 插件的执行目标,模板如下(我这里是在resources目录下新建了generator文件夹,在文件夹中新建了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>  
  
    <!--指定特定数据库的jdbc驱动jar包的位置 -->  
    <classPathEntry location="${jdbc.driverLocation}"/>  
  
    <context id="default" targetRuntime="MyBatis3">  
   
        <!-- optional,旨在创建class时,对注释进行控制 -->  
        <commentGenerator>  
            <property name="suppressDate" value="true" />  
        </commentGenerator>  
        <!--jdbc的数据库连接 -->  
        <jdbcConnection driverClass="${jdbc.driverClass}" connectionURL="${jdbc.connectionURL}" userId="${jdbc.userId}" password="${jdbc.password}">  
        </jdbcConnection>   
        <!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制-->  
        <javaTypeResolver >  
            <property name="forceBigDecimals" value="false" />  
        </javaTypeResolver>   
        <!-- Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example类  
            targetPackage     指定生成的model生成所在的包名  
            targetProject     指定在该项目下所在的路径  
        -->  
        <javaModelGenerator targetPackage="org.louis.hometutor.po" targetProject="src/main/java">  
            <!-- 是否对model添加 构造函数 -->  
            <property name="constructorBased" value="true"/>  
  
            <!-- 是否允许子包,即targetPackage.schemaName.tableName -->  
            <property name="enableSubPackages" value="false"/>  
 
            <!-- 建立的Model对象是否 不可改变  即生成的Model对象不会有 setter方法,只有构造方法 -->  
            <property name="immutable" value="true"/>  
  
            <!-- 给Model添加一个父类 -->  
            <property name="rootClass" value="com.foo.louis.Hello"/>  
  
            <!-- 是否对类CHAR类型的列的数据进行trim操作 -->  
            <property name="trimStrings" value="true"/>  
        </javaModelGenerator>  
  
        <!--Mapper映射文件生成所在的目录 为每一个数据库的表生成对应的SqlMap文件 -->  
        <sqlMapGenerator targetPackage="org.louis.hometutor.domain" targetProject="src/main/java">  
            <property name="enableSubPackages" value="false"/>  
        </sqlMapGenerator>  
   
        <!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码  
                type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象  
                type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象  
                type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口  
        -->  
        <javaClientGenerator targetPackage="com.foo.tourist.dao" targetProject="src/main/java" type="MIXEDMAPPER">  
            <property name="enableSubPackages" value=""/>  
            <!--  
                    定义Maper.java 源代码中的ByExample() 方法的可视性,可选的值有:  
                    public;  
                    private;  
                    protected;  
                    default  
                    注意:如果 targetRuntime="MyBatis3",此参数被忽略  
             -->  
            <property name="exampleMethodVisibility" value=""/>  
            <!--  方法名计数器  
              Important note: this property is ignored if the target runtime is MyBatis3.  
             -->  
            <property name="methodNameCalculator" value=""/>  
  
            <!--  为生成的接口添加父接口  -->  
            <property name="rootInterface" value=""/>  
  
        </javaClientGenerator>  
  
        <table tableName="lession" schema="louis">  
  
            <!-- optional   , only for mybatis3 runtime  
                 自动生成的键值(identity,或者序列值)  
               如果指定此元素,MBG将会生成<selectKey>元素,然后将此元素插入到SQL Map的<insert> 元素之中  
               sqlStatement 的语句将会返回新的值  
               如果是一个自增主键的话,你可以使用预定义的语句,或者添加自定义的SQL语句. 预定义的值如下:  
                  Cloudscape    This will translate to: VALUES IDENTITY_VAL_LOCAL()  
                  DB2:      VALUES IDENTITY_VAL_LOCAL()  
                  DB2_MF:       SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1  
                  Derby:        VALUES IDENTITY_VAL_LOCAL()  
                  HSQLDB:   CALL IDENTITY()  
                  Informix:     select dbinfo('sqlca.sqlerrd1') from systables where tabid=1  
                  MySql:        SELECT LAST_INSERT_ID()  
                  SqlServer:    SELECT SCOPE_IDENTITY()  
                  SYBASE:   SELECT @@IDENTITY  
                  JDBC:     This will configure MBG to generate code for MyBatis3 suport of JDBC standard generated keys. This is a database independent method of obtaining the value from identity columns.  
                  identity: 自增主键  If true, then the column is flagged as an identity column and the generated <selectKey> element will be placed after the insert (for an identity column). If false, then the generated <selectKey> will be placed before the insert (typically for a sequence).  
  
            -->  
            <generatedKey column="" sqlStatement="" identity="" type=""/>  
  
            <!-- optional.  
                    列的命名规则:  
                    MBG使用 <columnRenamingRule> 元素在计算列名的对应 名称之前,先对列名进行重命名,  
                    作用:一般需要对BUSI_CLIENT_NO 前的BUSI_进行过滤  
                    支持正在表达式  
                     searchString 表示要被换掉的字符串  
                     replaceString 则是要换成的字符串,默认情况下为空字符串,可选  
            -->  
            <columnRenamingRule searchString="" replaceString=""/>  
  
            <!-- optional.告诉 MBG 忽略某一列  
                    column,需要忽略的列  
                    delimitedColumnName:true ,匹配column的值和数据库列的名称 大小写完全匹配,false 忽略大小写匹配  
                    是否限定表的列名,即固定表列在Model中的名称  
            -->  
            <ignoreColumn column="PLAN_ID"  delimitedColumnName="true" />  
  
            <!--optional.覆盖MBG对Model 的生成规则  
                 column: 数据库的列名  
                 javaType: 对应的Java数据类型的完全限定名  
                 在必要的时候可以覆盖由JavaTypeResolver计算得到的java数据类型. For some databases, this is necessary to handle "odd" database types (e.g. MySql's unsigned bigint type should be mapped to java.lang.Object).  
                 jdbcType:该列的JDBC数据类型(INTEGER, DECIMAL, NUMERIC, VARCHAR, etc.),该列可以覆盖由JavaTypeResolver计算得到的Jdbc类型,对某些数据库而言,对于处理特定的JDBC 驱动癖好 很有必要(e.g. DB2's LONGVARCHAR type should be mapped to VARCHAR for iBATIS).  
                 typeHandler:    
            -->  
            <columnOverride column="" javaType=""    jdbcType="" typeHandler=""  delimitedColumnName="" />  
        </table>  
    </context>  
</generatorConfiguration> 

我的<table/>配置是这样的

它的意思就是配置当前数据库中所有的表,不需要你一个一个的配置,这样太麻烦

注意这里的红线处,与Eclipse有所不同,这点会在后面讲到

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

在弹出的窗口中点击+号,选择maven

在这里输入名字,我这里已经有一个了,再建一个,命名为generator,然后在 “Command line” 选项中输入“mybatis-generator:generate  -e”然后点击apply

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

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

E:\Java\jdk1.8.0_162\bin\java.exe -Dmaven.multiModuleProjectDirectory=E:\IDEAWorkSpace\springbootshiromybatis "-Dmaven.home=E:\IntelliJ IDEA 2018.1.1\plugins\maven\lib\maven3" "-Dclassworlds.conf=E:\IntelliJ IDEA 2018.1.1\plugins\maven\lib\maven3\bin\m2.conf" "-javaagent:E:\IntelliJ IDEA 2018.1.1\lib\idea_rt.jar=12822:E:\IntelliJ IDEA 2018.1.1\bin" -Dfile.encoding=UTF-8 -classpath "E:\IntelliJ IDEA 2018.1.1\plugins\maven\lib\maven3\boot\plexus-classworlds-2.5.2.jar" org.codehaus.classworlds.Launcher -Didea.version=2018.1.1 -s E:\apache-maven-3.5.0\conf\settings.xml -Dmaven.repo.local=E:\MvnRep mybatis-generator:generate -e
[INFO] Error stacktraces are turned on.
[WARNING] 
[WARNING] Some problems were encountered while building the effective settings
[WARNING] expected START_TAG or END_TAG not TEXT (position: TEXT seen ...maven.aliyun.com/nexus/content/groups/public/</url>;  \r\n        <m... @175:11)  @ E:\apache-maven-3.5.0\conf\settings.xml, line 175, column 11
[WARNING] 
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building springbootshiromybatis 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- mybatis-generator-maven-plugin:1.3.5:generate (default-cli) @ springbootshiromybatis ---
[INFO] Connecting to the Database
Wed May 23 23:46:25 CST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
[INFO] Introspecting table %
[INFO] Generating Record class for table user
[INFO] Generating Mapper Interface for table user
[INFO] Generating SQL Map for table user
[INFO] Generating Primary Key class for table role_resources
[INFO] Generating Mapper Interface for table role_resources
[INFO] Generating SQL Map for table role_resources
[INFO] Generating Record class for table resources
[INFO] Generating Mapper Interface for table resources
[INFO] Generating SQL Map for table resources
[INFO] Generating Record class for table role
[INFO] Generating Mapper Interface for table role
[INFO] Generating SQL Map for table role
[INFO] Generating Record class for table user_role
[INFO] Generating Mapper Interface for table user_role
[INFO] Generating SQL Map for table user_role
[INFO] Saving file UserMapper.xml
[INFO] Saving file RoleResourcesMapper.xml
[INFO] Saving file ResourcesMapper.xml
[INFO] Saving file RoleMapper.xml
[INFO] Saving file UserRoleMapper.xml
[INFO] Saving file User.java
[INFO] Saving file UserMapper.java
[INFO] Saving file RoleResourcesKey.java
[INFO] Saving file RoleResourcesMapper.java
[INFO] Saving file Resources.java
[INFO] Saving file ResourcesMapper.java
[INFO] Saving file Role.java
[INFO] Saving file RoleMapper.java
[INFO] Saving file UserRole.java
[INFO] Saving file UserRoleMapper.java
[WARNING] Column id, specified as an identity column in table role_resources, does not exist in the table.
[WARNING] Column id, specified as an identity column in table user_role, does not exist in the table.
[WARNING] Existing file E:\IDEAWorkSpace\springbootshiromybatis\src\main\java\com\study\springbootshiromybatis\model\User.java was overwritten
[WARNING] Existing file E:\IDEAWorkSpace\springbootshiromybatis\src\main\java\com\study\springbootshiromybatis\mapper\UserMapper.java was overwritten
[WARNING] Existing file E:\IDEAWorkSpace\springbootshiromybatis\src\main\java\com\study\springbootshiromybatis\model\RoleResourcesKey.java was overwritten
[WARNING] Existing file E:\IDEAWorkSpace\springbootshiromybatis\src\main\java\com\study\springbootshiromybatis\mapper\RoleResourcesMapper.java was overwritten
[WARNING] Existing file E:\IDEAWorkSpace\springbootshiromybatis\src\main\java\com\study\springbootshiromybatis\model\Resources.java was overwritten
[WARNING] Existing file E:\IDEAWorkSpace\springbootshiromybatis\src\main\java\com\study\springbootshiromybatis\mapper\ResourcesMapper.java was overwritten
[WARNING] Existing file E:\IDEAWorkSpace\springbootshiromybatis\src\main\java\com\study\springbootshiromybatis\model\Role.java was overwritten
[WARNING] Existing file E:\IDEAWorkSpace\springbootshiromybatis\src\main\java\com\study\springbootshiromybatis\mapper\RoleMapper.java was overwritten
[WARNING] Existing file E:\IDEAWorkSpace\springbootshiromybatis\src\main\java\com\study\springbootshiromybatis\model\UserRole.java was overwritten
[WARNING] Existing file E:\IDEAWorkSpace\springbootshiromybatis\src\main\java\com\study\springbootshiromybatis\mapper\UserRoleMapper.java was overwritten
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.388 s
[INFO] Finished at: 2018-05-23T23:46:25+08:00
[INFO] Final Memory: 14M/155M
[INFO] ------------------------------------------------------------------------

然后我们就可以看到生成的文件啦

2.Eclipse下

2.1首先,安装eclipse插件

Help--Eclipser Marketplace中查找:Mybatis Generator 1.3.6安装

2.2新建project

New--other--查找如下

选择好项目后点击finish关闭。就会在项目中生成文件generatorConfig.xml。

注意:需要生成文件的路径要提前建好,否则无法生成

文件已经生成好了

2.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>  
    <context id="testTables" targetRuntime="MyBatis3">  
        <commentGenerator>  
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->  
            <property name="suppressAllComments" value="true" />  
        </commentGenerator>  
        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->  
        <!--   
        <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"  
            connectionURL="jdbc:oracle:thin:@150.16.17.22:1521/wsbs" userId="hr"  
            password="hr123">  
        </jdbcConnection>-->  
        <jdbcConnection driverClass="oracle.jdbc.OracleDriver"  
            connectionURL="jdbc:oracle:thin:@150.16.17.22:1521:wsbs"   
            userId="hr"  
            password="hr123">  
        </jdbcConnection>   
  
        <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和   
            NUMERIC 类型解析为java.math.BigDecimal -->  
        <javaTypeResolver>  
            <property name="forceBigDecimals" value="false" />  
        </javaTypeResolver>  
  
        <!-- targetProject:生成PO类的位置 -->  
        <javaModelGenerator targetPackage="cn.herry.pojo"  
            targetProject="hhh/src">  
            <!-- enableSubPackages:是否让schema作为包的后缀 -->  
            <property name="enableSubPackages" value="false" />  
            <!-- 从数据库返回的值被清理前后的空格 -->  
            <property name="trimStrings" value="true" />  
        </javaModelGenerator>  
        <!-- targetProject:mapper映射文件生成的位置 -->  
        <sqlMapGenerator targetPackage="cn.herry.mapper"   
            targetProject="hhh/src">  
            <!-- enableSubPackages:是否让schema作为包的后缀 -->  
            <property name="enableSubPackages" value="false" />  
        </sqlMapGenerator>  
        <!-- targetPackage:mapper接口生成的位置 -->  
        <javaClientGenerator type="XMLMAPPER"  
            targetPackage="cn.herry.mapper"   
            targetProject="hhh/src">  
            <!-- enableSubPackages:是否让schema作为包的后缀 -->  
            <property name="enableSubPackages" value="false" />  
        </javaClientGenerator>  
        <!-- 指定数据库表 -->  
        <!--<table tableName="items"></table> -->  
        <table tableName="demo"></table>  
    </context>  
</generatorConfiguration>  

其实和IDEA的generatorConfig.xml文件一样

注意这里与IDEA配置不太一样,这里需要项目名/路径,而IDEA只需要配置路径就可以了

2.4自动生成mapper.java和mapper.xml等文件

右键generatorConfig.xml,选择如下:

控制台输出如下信息:

MyBatis Generator Started...
  Buildfile: E:\EclipseWorkSpace\.metadata\.plugins\org.mybatis.generator.eclipse.ui\.generatedAntScripts\testdate-2-generatorConfig.xml.xml
  00:03:55.205 [Worker-1] DEBUG org.mybatis.generator.eclipse.ui.ant.logging.AntLogFactory - Logging initialized using 'org.mybatis.generator.eclipse.ui.ant.logging.slf4j.Slf4jLoggingLogFactory@7affc850' adapter.
  00:03:55.258 [Worker-1] DEBUG org.mybatis.generator.logging.LogFactory - Logging initialized using 'org.mybatis.generator.eclipse.ui.ant.logging.AntLogFactory@595fb9de' adapter.
  Thu May 24 00:03:56 CST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
  00:03:56.295 [Worker-1] DEBUG org.mybatis.generator.internal.db.DatabaseIntrospector - Retrieving column information for table "t_user"
  00:03:56.333 [Worker-1] DEBUG org.mybatis.generator.internal.db.DatabaseIntrospector - Found column "user_id", data type 4, in table "mytest..t_user"
  00:03:56.333 [Worker-1] DEBUG org.mybatis.generator.internal.db.DatabaseIntrospector - Found column "user_name", data type 12, in table "mytest..t_user"
  00:03:56.333 [Worker-1] DEBUG org.mybatis.generator.internal.db.DatabaseIntrospector - Found column "password", data type 12, in table "mytest..t_user"
  00:03:56.333 [Worker-1] DEBUG org.mybatis.generator.internal.db.DatabaseIntrospector - Found column "phone", data type 12, in table "mytest..t_user"
  BUILD SUCCESSFUL
MyBatis Generator Finished

这样就生成了我们需要的文件

猜你喜欢

转载自blog.csdn.net/qq_36513534/article/details/80428124