開發工具:Mybatis.Plus.插件三種方式的逆向工程

本文源碼:GitHub·點這裏 || GitEE·點這裏java

1、逆向工程簡介

在Java開發中,持久層最經常使用的框架就是mybatis,該框架須要編寫sql語句,mybatis官方提供逆向工程,能夠把數據表自動生成執行所須要的基礎代碼,例如:mapper接口,sql映射文件,pojo實體類等,避免基礎代碼維護的繁雜過程。mysql

image

在實際的使用中,經常使用的逆向工程方式如上,mybatis框架,mybatis-plus框架,插件方式。git

2、Mybatis方式

一、基礎描述

基於xml配置的方式,生成mybatis基礎代碼,包括mapper接口,Mapper映射文件,pojo實體類,PojoExample條件工具類。github

二、配置文件

注意這裏的targetProject須要配置自定義路徑位置。web

<?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"/>
            <property name="suppressDate" value="false"/>
            <!-- 是否添加數據表中字段的註釋 true:是 : false:否 -->
            <property name="addRemarkComments" value="true"/>
        </commentGenerator>

        <!--數據庫的信息:驅動類、鏈接地址、用戶名、密碼 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://localhost:3306/defined-log?tinyInt1isBit=false"
            userId="root" password="123456">
        </jdbcConnection>

        <!--
            默認false,把JDBC decimal 和 numeric 類型解析爲 Integer
            設置true時把JDBC decimal 和 numeric 類型解析爲BigDecimal
        -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- 生成POJO類的位置 -->
        <javaModelGenerator targetPackage="com.generator.mybatis.pojo"
            targetProject="存放路徑">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!-- 生成Mapper映射文件的位置 -->
        <sqlMapGenerator targetPackage="com.generator.mybatis.xml"
            targetProject="存放路徑">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <!-- 生成Mapper接口的位置 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.generator.mybatis.mapper"
            targetProject="存放路徑">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <!-- 指定數據庫表 -->
        <table schema="" tableName="dt_defined_log" domainObjectName="DefinedLog"/>

    </context>
</generatorConfiguration>

三、啓動類

讀取配置文件,並執行。算法

public class GeneratorMybatis {

    public void generator() throws Exception {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        File configFile = Resources.getResourceAsFile("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 {
            GeneratorMybatis generatorMybatis = new GeneratorMybatis();
            generatorMybatis.generator();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

3、MybatisPlus方式

一、基礎描述

MybatisPlus相比Mybatis提供更多加強的能力,單表操做基本都封裝好了,因此生成的mapper映射文件簡潔不少,須要注意ServiceImpl關鍵類和BaseMapper接口。spring

二、核心啓動類

這裏的配置能夠基於不少自定義的策略,案例生成的代碼已經傳到倉庫,能夠自行下載查看。sql

public class GeneratorMybatisPlus {

    public static void main(String[] args) {
        // 代碼生成器
        AutoGenerator autoGenerator = new AutoGenerator();
        // 全局配置
        GlobalConfig globalConfig = new GlobalConfig();
        //生成文件的輸出目錄
        String path="存放路徑";
        globalConfig.setOutputDir(path);
        // Author設置做者
        globalConfig.setAuthor("mybatis-plus");
        // 文件覆蓋
        globalConfig.setFileOverride(true);
        // 生成後打開文件
        globalConfig.setOpen(false);
        // 自定義文件名風格,%s自動填充表實體屬性
        globalConfig.setMapperName("%sMapper");
        globalConfig.setXmlName("%sMapper");
        globalConfig.setServiceName("%sDao");
        globalConfig.setServiceImplName("%sDaoImpl");
        globalConfig.setEntityName("%s");
        globalConfig.setControllerName("%sController");
        autoGenerator.setGlobalConfig(globalConfig);

        // 數據源配置
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL);
        dataSourceConfig.setTypeConvert(new MySqlTypeConvert());
        dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/defined-log?tinyInt1isBit=false");
        dataSourceConfig.setDriverName("com.mysql.jdbc.Driver");
        dataSourceConfig.setUsername("root");
        dataSourceConfig.setPassword("123456");
        autoGenerator.setDataSource(dataSourceConfig);

        // 包名配置
        PackageConfig packageConfig = new PackageConfig();
        // 父包和子包名分開處理
        packageConfig.setParent("com.generator.mybatis.plus");
        packageConfig.setController("web");
        packageConfig.setEntity("pojo");
        packageConfig.setMapper("mapper");
        packageConfig.setService("dao");
        packageConfig.setServiceImpl("dao.impl");
        autoGenerator.setPackageInfo(packageConfig);

        // 生成策略配置
        StrategyConfig strategy = new StrategyConfig();
        //設置命名格式
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        // 實體是否爲lombok模型,默認 false
        strategy.setEntityLombokModel(true);
        //生成 @RestController 控制器
        strategy.setRestControllerStyle(true);
        // 駝峯轉連字符
        strategy.setControllerMappingHyphenStyle(true);
        //表和前綴處理
        strategy.setInclude("dt_defined_log".split(","));
        String[] tablePre = new String[]{"dt_"};
        strategy.setTablePrefix(tablePre);
        autoGenerator.setStrategy(strategy);
        // 執行,以上相關參數能夠基於動態輸入獲取
        autoGenerator.execute();
    }
}

該方式是當前mybatis框架最流行的開發方式,代碼會簡潔不少。數據庫

4、插件工具

一、配置數據庫

這裏選擇MySQL數據源,後續根據提示須要下載驅動配置。編程

image

二、鏈接配置

image

Url地址,帳號,密碼,獲取鏈接。

三、插件使用

這裏選擇的是安裝EasyCode插件。

image

根據配置,生成逆向工程文件,總體思路和上述兩種方式一致。

5、源代碼地址

GitHub·地址
https://github.com/cicadasmile/data-manage-parent
GitEE·地址
https://gitee.com/cicadasmile/data-manage-parent

推薦閱讀:編程體系整理

序號 項目名稱 GitHub地址 GitEE地址 推薦指數
01 Java描述設計模式,算法,數據結構 GitHub·點這裏 GitEE·點這裏 ☆☆☆☆☆
02 Java基礎、併發、面向對象、Web開發 GitHub·點這裏 GitEE·點這裏 ☆☆☆☆
03 SpringCloud微服務基礎組件案例詳解 GitHub·點這裏 GitEE·點這裏 ☆☆☆
04 SpringCloud微服務架構實戰綜合案例 GitHub·點這裏 GitEE·點這裏 ☆☆☆☆☆
05 SpringBoot框架基礎應用入門到進階 GitHub·點這裏 GitEE·點這裏 ☆☆☆☆
06 SpringBoot框架整合開發經常使用中間件 GitHub·點這裏 GitEE·點這裏 ☆☆☆☆☆
07 數據管理、分佈式、架構設計基礎案例 GitHub·點這裏 GitEE·點這裏 ☆☆☆☆☆
08 大數據系列、存儲、組件、計算等框架 GitHub·點這裏 GitEE·點這裏 ☆☆☆☆☆
相關文章
相關標籤/搜索