本文原始碼:GitHub·點這里 || GitEE·點這里
一、逆向工程簡介
在Java開發中,持久層最常用的框架就是mybatis,該框架需要撰寫sql陳述句,mybatis官方提供逆向工程,可以把資料表自動生成執行所需要的基礎代碼,例如:mapper介面,sql映射檔案,pojo物體類等,避免基礎代碼維護的繁雜程序,

在實際的使用中,常用的逆向工程方式如上,mybatis框架,mybatis-plus框架,插件方式,
二、Mybatis方式
1、基礎描述
基于xml配置的方式,生成mybatis基礎代碼,包括mapper介面,Mapper映射檔案,pojo物體類,PojoExample條件工具類,
2、組態檔
注意這里的targetProject需要配置自定義路徑位置,
<?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="https://www.cnblogs.com/cicada-smile/p/true"/>
<property name="suppressDate" value="https://www.cnblogs.com/cicada-smile/p/false"/>
<!-- 是否添加資料表中欄位的注釋 true:是 : false:否 -->
<property name="addRemarkComments" value="https://www.cnblogs.com/cicada-smile/p/true"/>
</commentGenerator>
<!--資料庫的資訊:驅動類、連接地址、用戶名、密碼 -->
<jdbcConnection 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="https://www.cnblogs.com/cicada-smile/p/false" />
</javaTypeResolver>
<!-- 生成POJO類的位置 -->
<javaModelGenerator targetPackage="com.generator.mybatis.pojo"
targetProject="存放路徑">
<property name="enableSubPackages" value="https://www.cnblogs.com/cicada-smile/p/true" />
<property name="trimStrings" value="https://www.cnblogs.com/cicada-smile/p/true" />
</javaModelGenerator>
<!-- 生成Mapper映射檔案的位置 -->
<sqlMapGenerator targetPackage="com.generator.mybatis.xml"
targetProject="存放路徑">
<property name="enableSubPackages" value="https://www.cnblogs.com/cicada-smile/p/true" />
</sqlMapGenerator>
<!-- 生成Mapper介面的位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.generator.mybatis.mapper"
targetProject="存放路徑">
<property name="enableSubPackages" value="https://www.cnblogs.com/cicada-smile/p/true" />
</javaClientGenerator>
<!-- 指定資料庫表 -->
<table schema="" tableName="dt_defined_log" domainObjectName="DefinedLog"/>
</context>
</generatorConfiguration>
3、啟動類
讀取組態檔,并執行,
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();
}
}
}
三、MybatisPlus方式
1、基礎描述
MybatisPlus相比Mybatis提供更多增強的能力,單表操作基本都封裝好了,所以生成的mapper映射檔案簡潔很多,需要注意ServiceImpl關鍵類和BaseMapper介面,
2、核心啟動類
這里的配置可以基于很多自定義的策略,案例生成的代碼已經傳到倉庫,可以自行下載查看,
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框架最流行的開發方式,代碼會簡潔很多,
四、插件工具
1、配置資料庫
這里選擇MySQL資料源,后續根據提示需要下載驅動配置,

2、連接配置

Url地址,賬號,密碼,獲取連接,
3、插件使用
這里選擇的是安裝EasyCode插件,

根據配置,生成逆向工程檔案,整體思路和上述兩種方式一致,
五、源代碼地址
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·點這里 | ☆☆☆☆☆ |
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/198452.html
標籤:Java
