MyBatis反向生成(IDEA+Maven)

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

MyBatis反向生成(IDEA+Maven)

一、什么是反向生成工程

反向生成工程,可以针对数据库表自动生成MyBatis执行所需要的代码,比如实体类代码、mapper.xml、mapper接口等,可以提高开发效率。

本文将介绍如何使用IDEA+Maven实施反向生成工程。

二、使用方法

1、创建Maven项目

创建好的项目目录结构如下:


2、配置Maven的pop.xml文件

下载反向工程说需要的jar包,pop.xml文件代码如下:

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  
<modelVersion>4.0.0</modelVersion>
  
<groupId>MyBatisGenerator1</groupId>
  
<artifactId>MyBatisGenerator1</artifactId>
  
<packaging>war</packaging>
  
<version>1.0-SNAPSHOT</version>
  
<name>MyBatisGenerator1 Maven Webapp</name>
  
<url>http://maven.apache.org</url>

  
<properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     
<!--MyBatis版本-->
     
<mybatis-version>3.4.5</mybatis-version>
  
</properties>

   <dependencies>
      <dependency>
         <groupId>junit</groupId>
        
<artifactId>junit</artifactId>
        
<version>3.8.1</version>
        
<scope>test</scope>
     
</dependency>

      <!--https://mvnrepository.com/artifact/org.mybatis/mybatis -->
     
<dependency>
        
<groupId>org.mybatis</groupId>
        
<artifactId>mybatis</artifactId>
        
<version>${mybatis-version}</version>
     
</dependency>
      <!--https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core-->
 
    <dependency>
        
<groupId>org.mybatis.generator</groupId>
        
<artifactId>mybatis-generator-core</artifactId>
        
<version>1.3.5</version>
     
</dependency>
      <!--https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
     
<dependency>
        
<groupId>org.mybatis</groupId>
        
<artifactId>mybatis-spring</artifactId>
        
<version>1.3.1</version>
     
</dependency>
      <!--https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
     
<dependency>
        
<groupId>mysql</groupId>
        
<artifactId>mysql-connector-java</artifactId>
        
<version>5.1.30</version>
     
</dependency>


   </dependencies>
   <build>
      <finalName>MyBatisGenerator1</finalName>
  
</build>
</project>

3、反向工程配置文件

这个配置文件就是generatorConfig.xml,里面配置了数据库的连接属性、需要反向生成的数据库表及其属性。操作步骤有:

(1)添加要生成的数据库表

(2)实体类、mapper接口Java类所在的包路径

(3)SQL语句的mapper.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="default" targetRuntime="Mybatis3" >

        <!-- optional,旨在创建class时,对注释进行控制 -->
        <commentGenerator type="generator.MyCommentGenerator">
            <!--<property name="suppressDate" value="true"/>-->
            <!--<property name="suppressAllComments" value="true"/>-->
        </commentGenerator>

        <!--配置数据库连接-->
        <!--<jdbcConnection-->
                <!--driverClass="${jdbc.driverClass}"-->
                <!--connectionURL="${jdbc.connectionURL}"-->
                <!--userId="${jdbc.userId}"-->
                <!--password="${jdbc.password}">-->
            <!--&lt;!&ndash; 针对oracle数据库 &ndash;&gt;-->
            <!--&lt;!&ndash;<property name="remarksReporting" value="true"></property>&ndash;&gt;-->
            <!--&lt;!&ndash; 针对mysql数据库 &ndash;&gt;-->
            <!--<property name="useInformationSchema" value="true"></property>-->
        <!--</jdbcConnection>-->

        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
        <jdbcConnection
                driverClass="com.mysql.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/testmysql"
                userId="root"
                password="root">
        </jdbcConnection>


        <!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制-->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>


        <!-- Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example
            targetPackage     指定生成的model生成所在的包名
            targetProject     指定在该项目下所在的路径
        -->
        <javaModelGenerator targetPackage="com.charlie.ssm.demo.entity"
                            targetProject="src/main/java">

            <!-- 是否允许子包,即targetPackage.schemaName.tableName -->
            <property name="enableSubPackages" value="false"/>
            <!-- 是否对model添加 构造函数 -->
            <property name="constructorBased" value="false"/>
            <!-- 是否对类CHAR类型的列的数据进行trim操作 -->
            <property name="trimStrings" value="true"/>
            <!-- 建立的Model对象是否 不可改变  即生成的Model对象不会有 setter方法,只有构造方法 -->
            <property name="immutable" value="false"/>
        </javaModelGenerator>

        <!--Mapper映射文件生成所在的目录 为每一个数据库的表生成对应的SqlMap文件 -->
        <sqlMapGenerator targetPackage="mapper"
                         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 targetPackage="com.charlie.ssm.demo.entity"
                             targetProject="src/main/java" type="XMLMAPPER" >
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>

        <!--
            指定生成的数据表
            tableName:数据库表名称
            domainObjectName:生成的实体类名称
            mapperNameSQL语句的XML文件名称
         -->
        <!--<table tableName="tb_user" domainObjectName="UserEntity" mapperName="UserDao"-->
               <!--enableCountByExample="false" enableUpdateByExample="false"-->
               <!--enableDeleteByExample="false" enableSelectByExample="false"-->
               <!--selectByExampleQueryId="false">-->
        <!--</table>-->

        <table tableName="tb_user" domainObjectName="UserEntity" mapperName="UserDao"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false">
        </table>


    </context>
</generatorConfiguration>

4、运行程序生成代码

运行MainGenerator的main方法,就可运行反向工程,注意反向工程的配置文件路径要正确。

运行代码如下:

/**
 * 运行此方法重新生成mybatis相关的文件,慎用
 * 运行之后会覆盖com.dao 以及com.entity的类,但是对应的mapper/*.xml中的数据库操作
 */
public class MainGenerator {

    /**
     * MyBatis反向生成工程
     * @param args
     */
    public static void main(String[] args) {
        try {
            System.out.println("MyBatis反向生成");
            List<String> warnings = new ArrayList<>();
            boolean overwrite = true;
            //配置文件
            File configFile = new
                    File("./src/main/resources/generator/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);
            System.out.println("执行完毕");
        } catch (IOException e) {
            e.printStackTrace();
        } catch (XMLParserException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (InvalidConfigurationException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

5、运行结果

三、下载地址

https://download.csdn.net/download/qq_33721382/10506541


猜你喜欢

转载自blog.csdn.net/qq_33721382/article/details/80848901
今日推荐