在当今的软件开发中,MyBatis是一个非常流行的持久层框架,它能够帮助我们轻松地将数据库操作与业务逻辑分离。而MyBatis逆向工程则是这个框架中的一个强大功能,它可以帮助我们自动生成实体类、映射文件和接口。本文将从零开始,详细介绍如何使用MyBatis逆向工程来搭建数据库与实体之间的关系。
一、什么是MyBatis逆向工程?
MyBatis逆向工程是指通过定义一个XML配置文件,自动生成实体类、映射文件和Mapper接口的过程。这个过程可以大大提高我们的开发效率,减少手动编写代码的工作量。
二、准备环境
在开始之前,我们需要准备以下环境:
- Java开发环境
- MyBatis框架
- MySQL数据库
- 集成开发环境(如IDEA、Eclipse等)
三、创建数据库和表
首先,我们需要在MySQL数据库中创建一个简单的表,例如:
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(50) NOT NULL,
`password` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
四、配置MyBatis
接下来,我们需要在项目中配置MyBatis。以下是配置文件mybatis-config.xml的内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
五、定义逆向工程配置
在src/main/resources目录下创建一个名为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="DB2Tables" targetRuntime="MyBatis3">
<property name="autoDelimitKeywords" value="true"/>
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mydb"
userId="root"
password="">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<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/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<table schema="mydb" tableName="user">
<generatedKey column="id" sqlStatement="MySql" identity="true"/>
</table>
</context>
</generatorConfiguration>
六、运行逆向工程
在IDEA中,我们可以使用插件来运行逆向工程。以下是操作步骤:
- 打开IDEA,选择“File” -> “New” -> “Project”。
- 在弹出的窗口中选择“Maven”项目,点击“Next”。
- 输入项目名称和坐标,点击“Finish”。
- 在项目中创建一个名为
generator的模块。 - 将
generatorConfig.xml文件放入generator模块的src/main/resources目录下。 - 在
generator模块中创建一个名为com.example.generator的包。 - 在
com.example.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.internal.DefaultShellCallback;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class Generator {
public static void main(String[] args) {
try {
List<String> warnings = new ArrayList<>();
boolean overwrite = true;
File configFile = new File("src/main/resources/generatorConfig.xml");
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);
} catch (Exception e) {
e.printStackTrace();
}
}
}
- 运行
Generator类,逆向工程将自动生成实体类、映射文件和Mapper接口。
七、使用生成的代码
现在,我们已经成功使用MyBatis逆向工程搭建了数据库与实体之间的关系。接下来,我们可以使用生成的代码进行数据库操作。
- 在
com.example.mapper包中,我们可以看到生成的UserMapper接口,它包含了User实体的CRUD方法。 - 在
com.example.entity包中,我们可以看到生成的User实体类,它包含了User表的所有字段。
通过以上步骤,我们就可以轻松地使用MyBatis逆向工程搭建数据库与实体之间的关系了。希望本文对您有所帮助!
