MyBatis 逆向工程

一、什么是逆向工程?

      简单点说,就是通过数据库中的单表,自动生成java代码。

      Mybatis官方提供了逆向工程,可以针对单表自动生成mybatis代码(mapper.java\mapper.xml\po类)

      企业中,逆向工程是个很常用的工具,之前我们就学习了hibernate的逆向工程,比我们手动创建映射文件的配置信息方便很多,总是就是很方便。

直接粘代码

Maven 添加 mybatis 依赖

 <!--mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.1</version>
        </dependency>
        <!--mapper-->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>1.2.4</version>
        </dependency>
        <!--pagehelper-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.3</version>
        </dependency>

        <!-- mybatis 逆向生成工具  -->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
            <scope>compile</scope>
            <optional>true</optional>
        </dependency>

  核心jar XML文件生成 -- 不知道为啥 在 生成 Java 和 XML的配置中 targerProject 设置成绝对路径就可以成功 ,相对路径就无法生成

<?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="MysqlContext" targetRuntime="MyBatis3Simple" defaultModelType="flat">
        <commentGenerator>
            <!-- 是否去除自动生成的注释(生成的注释是英文的) true:是 : false:否 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>

        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://192.168.44.180:3306/springboot"
                        userId="root"
                        password="123456">
        </jdbcConnection>
        <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
                NUMERIC 类型解析为java.math.BigDecimal -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>


        <!-- 对于生成的pojo所在包 -->
        <javaModelGenerator targetPackage="com.imooc.netty.wechart.pojo" targetProject="/Users/tony/Desktop/WEB/wechart/src/main/java"/>

        <!-- 对于生成的mapper所在目录 -->
        <sqlMapGenerator targetPackage="mapper" targetProject="/Users/tony/Desktop/WEB/wechart/src/main/resources"/>

        <!-- 配置mapper对应的java映射 -->
        <javaClientGenerator targetPackage="com.imooc.netty.wechart.mapper" targetProject="/Users/tony/Desktop/WEB/wechart/src/main/java" type="XMLMAPPER"/>


        <!-- 生成的pojo类的属性名和表的列名一致,默认是遇到下划线变驼峰的。比如表中有一列叫user_id,那么默认生成的类属性名是userId -->
        <table tableName="users" >
            <property name="useActualColumnNames" value="true"/>
        </table>
        <table tableName="my_friends" >
            <property name="useActualColumnNames" value="true"/>
        </table>
        <table tableName="request" >
            <property name="useActualColumnNames" value="true"/>
        </table>
        <table tableName="chart_msg" >
            <property name="useActualColumnNames" value="true"/>
        </table>

    </context>
</generatorConfiguration>

指定 Main 方法  固定写法,解析XML文件

public class GeneratorDisplay {

    public void generator() throws Exception{
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        //指定 逆向工程配置文件
        File configFile = new File("wechart/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) {
        try {
            GeneratorDisplay generatorSqlmap = new GeneratorDisplay();
            generatorSqlmap.generator();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

  项目目录结构

    

 

posted @ 2019-03-27 10:29  局外人~~  阅读(197)  评论(0编辑  收藏  举报