MyBatis逆向工程自动生成代码
逆向工程是什么
MyBatis的一个主要的特点就是需要程序员自己编写SQL,那么如果表太多的话就会很麻烦,所以MyBatis官方就提供了一个逆向工程,可以针对单表自动生成Mybatis执行所需要的代码,包括:和表对应的实体类,Mapper接口,Mapper.xml映射文件。一般在实际开发中,逆向工程是通过数据库中的表生成代码。
环境版本
Mysql-8.0.17
springboot2.1.1
jdk 1.8
Maven实现MBG
在pom文件中添加插件
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<!-- 在控制台打印执行日志 -->
<verbose>true</verbose>
<!-- 重复生成时会覆盖之前的文件-->
<overwrite>true</overwrite>
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency>
</dependencies>
</plugin>
<?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:起个名字 -->
<!-- targetRuntime:设置生成的文件适用于那个 mybatis 版本 -->
<context id="default" targetRuntime="MyBatis3">
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/community?userSSL=false&serverTimezone=UTC"
userId="root"
password="123456">
<!-- MySQL8需要添加这个-->
<property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection>
<!-- 默认情况下数据库中的 decimal,bigInt 在 Java 对应是 sql 下的 BigDecimal 类 -->
<!-- 不是 double 和 long 类型 -->
<!-- 使用常用的基本类型代替 sql 包下的引用类型 -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- targetPackage:生成的实体类所在的包 -->
<!-- targetProject:生成的实体类所在的硬盘位置 -->
<javaModelGenerator targetPackage="com.gjw.codecommunity.community.model" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- targetPackage:生成的sqlmapper.xml所在的包 -->
<!-- targetProject:生成的sqlmapper.xml所在的硬盘位置 -->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- targetPackage:生成mapper接口所在的包 -->
<!-- targetProject:生成的mapper接口所在的硬盘位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.gjw.codecommunity.community.mapper"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<table tableName="user" domainObjectName="User"></table>
<table tableName="question" domainObjectName="Question"></table>
</context>
</generatorConfiguration>