本文已参与新人创作礼活动,一起开启掘金创造之路。
逆向工程
MyBatis 逆向⼯程的组件是 MyBatis Generator,简称 MBG,是专为 MyBatis 框架定制的代码⾃动⽣成解决⽅案, MBG 可以根据数据表结构快速⽣成对应的实体类、 Mapper接⼝、 Mapper.xml,并且⽀持基本的 CRUD 操作,但是业务逻辑相对复杂的操作就需要开发者⼿动完成。
1、pom.xml添加依赖
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.1</version>
</dependency>
2、generatorConfig.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="testTables" targetRuntime="MyBatis3">
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mysqldemo?useUnicode=true&characterEncoding=UTF-8"
userId="root"
password="zwt123"/>
<javaModelGenerator targetPackage="org.sample.entity" targetProject="./src/main/java"/>
<sqlMapGenerator targetPackage="org.sample.repository" targetProject="./src/main/java"/>
<javaClientGenerator type="XMLMAPPER" targetPackage="org.sample.repository" targetProject="./src/main/java"/>
<table tableName="t_account2" domainObjectName="Account2"/>
</context>
</generatorConfiguration>
jdbcConnection配置数据库连接信息javaModelGenerator配置 JavaBean 的⽣成策略sqlMapGenerator配置 SQL 映射⽂件⽣成策略javaClientGenerator配置 Mapper 接⼝的⽣成策略table配置要逆向解析的数据表(tableName:表名, domainObjectName;实体类名)
3、执行方法
代码(⽣成对应的实体类、 Mapper接⼝、 Mapper.xml)生成器通用模板函数
public static void generatorTest() {
List<String> warings = new ArrayList<String>();
boolean overwrite = true;
String genCig = "/generatorConfig.xml";
File configFile = new File(Objects.requireNonNull(Test.class.getResource(genCig)).getFile());
ConfigurationParser configurationParser = new ConfigurationParser(warings);
Configuration configuration = null;
try {
configuration = configurationParser.parseConfiguration(configFile);
} catch (IOException e) {
e.printStackTrace();
} catch (XMLParserException e) {
e.printStackTrace();
}
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = null;
try {
myBatisGenerator = new MyBatisGenerator(configuration,callback,warings);
} catch (InvalidConfigurationException e) {
e.printStackTrace();
}
try {
myBatisGenerator.generate(null);
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}