#使用插件逆向生成
1.创建maven工程
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>mybatis-genertor</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
</dependencies>
<build>
<plugins>
<!-- mybatis 逆向工程具体插件,逆向工程的操作是以构建过程中插件形式出现的 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
</build>
</project>
2.配置文件:generatorConfig.xml
```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">
<!--官方地址:https://mybatis.org/generator/-->
<!--MyBatis 逆向工程配置文件-->
<generatorConfiguration>
<!-- classPathEntry:数据库的 JDBC驱动的jar 包地址
这里需要一个mysql的驱动包,去随便找一个驱动包就可以,指定路径
location="驱动jar所在目录\jar名"
-->
<classPathEntry location="E:\repository\mysql\mysql-connector-java\8.0.23\mysql-connector-java-8.0.23.jar" />
<!--
targetRuntime: 执行生成的逆向工程的版本
MyBatis3Simple: 生成基本的CRUD(清新简洁版)
MyBatis3: 生成带条件的CRUD(奢华尊享版)
-->
<context id="MySqlTables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<!-- 这里选择的是去掉注释,因为mybatis生成的注释非常繁琐 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<!--com.mysql.jdbc.Driver-->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis-genertor"
userId="root"
password="1234">
</jdbcConnection>
<!-- orcal数据库 注意这里使用orcal数据库 上面驱动包也必须指定为 orcal的驱动-->
<!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"
connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg"
userId="yycg"
password="yycg">
</jdbcConnection> -->
<!-- 默认 false,把 JDBC DECIMAL 和 NUMERIC 类型解析为 Integer true,
把 JDBC DECIMAL 和NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- javaBean的生成策略-->
<!-- targetProject:生成 POJO 类的位置 src/main/java/com.example.mybatis_generator.entity
使用plugin生成:.\src\main\java,使用类java Api生成:模块名\src\main\java或 .模块名\src\main\java
.:代表项目根目录
-->
<javaModelGenerator targetPackage="com.example.mybatis_generator.entity" targetProject=".\src\main\java">
<!-- enableSubPackages:是否让schema 作为包的后缀 -->
<property name="enableSubPackages" value="true" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
<property name="exampleTargetPackage" value="com.example.mybatis_generator.entity.example"/>
</javaModelGenerator>
<!-- SQL映射文件的生成策略 -->
<!-- 生成 XML文件 ./src/main/java/com.example.mybatis_generator.mapper -->
<sqlMapGenerator targetPackage="com.example.mybatis_generator.mapper" targetProject=".\src\main\java">
<property name="enableSubPackages" value="true" />
<property name="exampleTargetPackage" value="com.example.mybatis_generator.entity.example"/>
</sqlMapGenerator>
<!-- Mapper接口的生成策略 -->
<!--plugin:targetProject:.\src\main\java-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mybatis_generator.mapper" targetProject=".\src\main\java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 逆向分析的表 -->
<!-- tableName设置为*号,可以对应所有表,此时不写domainObjectName(测试未生效) -->
<!-- tableName设置为%号,会生成所有数据库对应所有表-->
<!-- domainObjectName属性指定生成出来的实体类的类名 -->
<!-- <table tableName="*"/>-->
<!-- <table tableName="t_customer" domainObjectName="Customer"/>-->
<!-- <table tableName="t_order" domainObjectName="Order"/>-->
<table tableName="t_user" domainObjectName="User"/>
<table tableName="t_role" domainObjectName="RoleAAA"/>
</context>
</generatorConfiguration>
3.执行generator plugin
idea右侧点击maven->双击mybatis-generator
使用Java Api
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>mybatis-generator</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<!-- <build>
<plugins>
<!– mybatis 逆向工程具体插件,逆向工程的操作是以构建过程中插件形式出现的 –>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
</build>-->
</project>
GeneratorTest.java
package com.example;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class GeneratorTest {
public static void main(String[] args) throws Exception, IOException {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
// 指定逆向工程配置文件
String fileName = GeneratorTest.class.getResource("/generatorConfig.xml").getFile();
File configFile = new File(fileName);
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);
}
}
项目结构及生成效果