本文源码: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="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>
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·点这里 | ☆☆☆☆☆ |