美文网首页
(2)自动代码生成插件

(2)自动代码生成插件

作者: Mrsunup | 来源:发表于2018-10-28 22:56 被阅读0次

    mybatis的实体类和mapper的文件可以通过MyBatis Generator 的生成器来自动生成,主要是根据配置文件,根据数据库的对应的表,自动生成实体类和对应的mapper的文件

    一般来说有两种方式:

    • 一种使用java的配置方式
    • 一种使用maven插件的方式

    可以参考官方的文档 ,文档有详细的描述:
    http://www.mybatis.org/generator/running/runningWithMaven.html

    这里主要介绍两种的实现方式,maven插件的方式更加方便(推荐使用),这种主要有备份文件产生,比较实用

    具体实现代码:
    参考github的项目mybatis下的mybatis-generator的工程

    地址为: https://github.com/sunkang123/mybatis

    1.maven插件方式

    • 配置文件如下
    <?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="/Program Files/IBM/SQLLIB/java/db2java.zip" />-->
        <context id="mysqlTables" targetRuntime="MyBatis3">
            <commentGenerator>
                <property name="suppressDate" value="false"/>
                <property name="suppressAllComments" value="true"/>
            </commentGenerator>
            
            <!-- 如果不指定classPathEntry加载的数据库驱动包的位置,可以使用pom来导入驱动包-->
            <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                            connectionURL="jdbc:mysql://localhost:3306/mybatis"
                            userId="root"
                            password="123">
            </jdbcConnection>
    
            <javaTypeResolver >
                <property name="forceBigDecimals" value="false" />
            </javaTypeResolver>
    
            <!--targetProject 可以使用相对路径也可以使用决定路径-->
            <!--javaModelGenerator指定了实体类-->
            <javaModelGenerator targetPackage="com.mybatis.project.po" targetProject="src/main/java">
                <property name="enableSubPackages" value="true" />
                <property name="trimStrings" value="true" />
            </javaModelGenerator>
    
            <!--javaClientGenerator这个是生成mapper的xml文件,targetPackage指定生成包-->
            <sqlMapGenerator targetPackage="com.mybatis.project.mapper"  targetProject="src/main/resources">
                <property name="enableSubPackages" value="true" />
            </sqlMapGenerator>
    
    
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.mybatis.project.mapper"  targetProject="src/main/java">
                <property name="enableSubPackages" value="true" />
            </javaClientGenerator>
    
            <!--table 指定了数据的表-->
            <table tableName="items">
                <property name="useActualColumnNames" value="false"/>
                <!--<generatedKey column="ID" sqlStatement="DB2" identity="true"/>-->
                <columnOverride column="DATE_FIELD" property="startDate"/>
                <ignoreColumn column="FRED"/>
                <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR"/>
            </table>
            <table tableName="orders">
                <property name="useActualColumnNames" value="false"/>
                <!--<generatedKey column="ID" sqlStatement="DB2" identity="true"/>-->
                <columnOverride column="DATE_FIELD" property="startDate"/>
                <ignoreColumn column="FRED"/>
                <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR"/>
            </table>
            <table tableName="orderdetail"></table>
            <table tableName="user"></table>
    
        </context>
    </generatorConfiguration>
    
    
    • pom的配置如下:
        //如果配置不指定,这里需要加上数据库驱动包的依赖
       <dependency>
          <groupId>org.mybatis.generator</groupId>
          <artifactId>mybatis-generator-core</artifactId>
          <version>1.3.5</version>
        </dependency>
    
      <build>
        <!--使用插件的方式自动生成代码-->
        <plugins>
          <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.3.3</version>
            <executions>
              <execution>
                <id>Generate MyBatis Artifacts</id>
                <goals>
                  <goal>generate</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <configurationFile>${project.basedir}/src/main/resources/generatorConfig.xml</configurationFile>
            </configuration>
            <dependencies>
              <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.46</version>
              </dependency>
            </dependencies>
          </plugin>
        </plugins>
      </build>
    
    • 运行插件
    mvn mybatis-generator:generate
    

    2.java的使用方式

    配置文件还是跟上面的一样

    package com.mybatis.generator;
    
    import org.mybatis.generator.api.MyBatisGenerator;
    import org.mybatis.generator.config.Configuration;
    import org.mybatis.generator.config.xml.ConfigurationParser;
    import org.mybatis.generator.internal.DefaultShellCallback;
    
    
    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @Project: mybatis
     * @description:   java 版本的方式 ,需要些java代码来启动  (建议使用插件来管理)
     * @author: sunkang
     * @create: 2018-10-09 21:23
     * @ModificationHistory who      when       What
     **/
    public class GeneratorSqlMap {
    
         public void generator() throws Exception{
            List<String> warnings = new ArrayList<String>();
            boolean overwrite = true;
            String path  = GeneratorSqlMap.class.getClassLoader().getResource("").getPath().toString();
             System.out.println(path);
            File configFile = new File(path,"generatorConfig.xml");
            ConfigurationParser cp = new ConfigurationParser(warnings);
            Configuration config = cp.parseConfiguration(configFile);
            DefaultShellCallback callback = new DefaultShellCallback(overwrite);
            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
                    callback, warnings);
            myBatisGenerator.generate(null);
        }
    
       public static void main(String[] args) throws Exception {
            try {
                GeneratorSqlMap generatorSqlmap = new GeneratorSqlMap();
                generatorSqlmap.generator();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:(2)自动代码生成插件

          本文链接:https://www.haomeiwen.com/subject/zexvtqtx.html