使用Java MyBatis的Generator解决数据库表与Java代码的映射问题
1. 引言
在开发过程中,我们经常需要将数据库表的结构映射到Java代码中,方便进行CRUD操作。而手动编写这些代码非常繁琐且容易出错。为了提高开发效率和减少人为错误,可以使用Java MyBatis的Generator工具自动生成数据库表与Java代码的映射关系。
2. 准备工作
在开始使用Java MyBatis的Generator之前,需要进行一些准备工作。
2.1 配置文件
首先,我们需要创建一个配置文件,用于配置Generator的相关参数。在根目录下创建一个名为generatorConfig.xml
的配置文件,并填写以下内容:
<!DOCTYPE generatorConfiguration PUBLIC
"-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"
<generatorConfiguration>
<context id="MybatisGenerator" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mydatabase"
userId="root"
password="password">
</jdbcConnection>
<javaModelGenerator targetPackage="com.example.entity"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="com.example.mapper"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.example.mapper"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<table tableName="user" domainObjectName="User"
enableCountByExample="false" enableUpdateByExample="false"
enableSelectByExample="false" enableDeleteByExample="false"
enableInsertByExample="false">
<property name="useActualColumnNames" value="true"/>
<generatedKey column="id" sqlStatement="JDBC"/>
</table>
</context>
</generatorConfiguration>
在上述配置文件中,我们需要注意以下几点:
jdbcConnection
标签中填写数据库的连接信息,比如connectionURL
、userId
和password
;javaModelGenerator
标签中填写生成Java实体类的目标包名和目标路径;sqlMapGenerator
标签中填写生成Mapper接口的目标包名和目标路径;javaClientGenerator
标签中填写生成Mapper XML文件的目标包名和目标路径;table
标签中填写要映射的数据库表名和Java实体类的类名。
2.2 依赖配置
在项目的pom.xml
文件中添加以下依赖:
<dependencies>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!-- MyBatis Generator -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.0</version>
</dependency>
<!-- MySQL Connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
</dependencies>
3. 使用Generator生成代码
当我们完成了上述的准备工作后,就可以使用Generator生成数据库表与Java代码的映射了。
3.1 运行Generator
在项目中创建一个名为Generator
的类,用于启动Generator工具。在该类中编写以下代码:
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class Generator {
public static void main(String[] args) {
try {
List<String> warnings = new ArrayList<>();
ConfigurationParser configurationParser = new ConfigurationParser(warnings);
Configuration configuration = configurationParser.parse