MyBatis详解6--MyBatis代码生成器
环境
IDEA 、Maven、Springboot 项目,MySQL 数据库
一、使用 java 代码编码运行的方式
1. pop.xml 中添加 generator 依赖
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.6</version>
</dependency>
2. 数据库配置文件 jdbc.properties
在resources 目录下创建 jdbc.properties,在配置 generatorConfig.xml 需要。
jdbc.properties 中的内容如下
# 本地 mysql版本8.0以上的用 com.mysql.cj.jdbc.Driver,以下的用 com.mysql.jdbc.Driver
# Mysql 8.0 以上的需要额外添加 useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
# jdbc.url 中的 study 是本地创建的数据库名
jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/study?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
#自己数据的用户名和密码
jdbc.username=root
jdbc.password=123456
3. MyBatis Generator 配置类 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>
<!-- 引入外部资源文件,第2步的配置文件 -->
<properties resource="jdbc.properties"></properties>
<!-- 使用 java 代码编码运行的方式不需要配置 classPathEntry;使用maven方式时如果在pop.xml 中做了配置这里也不需要配置了 -->
<!-- <classPathEntry location="F:\25k\projects\mysql-connector-java-8.0.11.jar"/> -->
<context id="MySqlContext" targetRuntime="MyBatis3Simple"
defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="addRemarkComments" value="true"/>
</commentGenerator>
<!-- 数据库配置,如果用写死的方式,在配置URL时需要配置多个参数时需要用到符号"&"时会出错,因此使用文件配置 -->
<!--<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"-->
<!--connectionURL="jdbc:mysql://127.0.0.1:3306/study?serverTimezone=UTC"-->
<!--userId="root"-->
<!--password="123456">-->
<jdbcConnection driverClass="${jdbc.driverClass}"
connectionURL="${jdbc.url}"
userId="${jdbc.username}"
password="${jdbc.password}">
</jdbcConnection>
<!-- 注意这里的顺序也不能颠倒 javaModelGenerator-> sqlMapGenerator -> javaClientGenerator -->
<!--生成 model -->
<javaModelGenerator targetPackage="com.example.mybatis.dao.domain"
targetProject="src\main\java">
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="mapper" targetProject="src\main\resources"/>
<!--生成 dao 层 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mybatis.dao" targetProject="src\main\java">
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- tableName:数据库中表名, domainObjectName:生成的实体类,其他配置成fasle 即可-->
<table tableName="sys_role"
domainObjectName="SysRoleDO" enableCountByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
enableUpdateByExample="false">
</table>
</context>
</generatorConfiguration>
4. 创建 Generator类
/**
*
* 读取 MyBatis Generator 配置生成代码
*/
public class Generator {
public static void main(String[] args) throws Exception {
//MBG 执行过程中的警告信息
List<String> warnings = new ArrayList<>();
//当生成的代码重复时,覆盖源代码
boolean overwrite = true;
//读取 MyBatis Generator 配置文件
InputStream inputStream = Generator.class.getResourceAsStream("/generator/generatorConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(inputStream);
inputStream.close();
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
//创建 MBG
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
//执行生成代码
myBatisGenerator.generate(null);
//输出警告信息
for (String warning : warnings) {
System.out.println(warning);
}
}
}
运行该Generator 类中的main 方法即可,不需要做其他配置了。这种方式最简单,也不容易出错。
二、 使用maven 方式运行
使用 maven 方式需要在 pop.xml 中添加一些配置才能使用
1. 添加插件依赖和一些配置
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<!-- 添加 generator 依赖 -->
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
<!-- 添加一些配置 -->
<configuration>
<!-- 配置配置文件的路径 -->
<!-- 绝对路径方式 -->
<!-- <configurationFile>${basedir}/src/main/resources/mybatis-generator.xml</configurationFile> -->
<!-- 相对路径方式 -->
<configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile>
<!--执行过程会输送到控制台-->
<verbose>true</verbose>
<!-- true 时如果有同类名就会被覆盖 -->
<overwrite>true</overwrite>
</configuration>
<dependencies>
<!--这里配置了就不需要在配置文件中添加 <classPathEntry location="数据库驱动地址"/> ,建议在这里配置-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<!--配置当前项目的依赖,一些定制的MBG类才会被找到,如本项目中的MyCommentGenerator,如果没有不需要配置-->
<!--<dependency>-->
<!--<groupId>com.example.mybatis</groupId>-->
<!--<artifactId>mybatis</artifactId>-->
<!--<version>0.0.1-SNAPSHOT</version>-->
<!--</dependency>-->
</dependencies>
</plugin>
</plugins>
</build>
配置好后执行 maven 指令:
mvn mybatis-generator :generate
如果使用 IDEA,在界面右边找到maven project 中的 generator,然后执行改指令即可
2. 其他步骤同第一种方式
三、命令方式
配置太复杂,一般很少用,这里略过,有兴趣的自己查询相关资料。