MyBatis 逆向 ## 逆向工程配置与使用
1. 核心依赖(pom.xml)
xml
<!-- MyBatis 核心依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!-- MyBatis 逆向工程依赖 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
<!-- 数据库驱动 -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
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">
<generatorConfiguration>
<context id="mybatisGenerator" >
<!-- 去除自动生成的注释 -->
<commentGenerator>
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!-- 数据库连接配置 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/ham?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"
userId="root"
password="123456">
</jdbcConnection>
<!-- 类型解析器 -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 生成POJO类的位置 -->
<javaModelGenerator targetPackage="com.qcby.model"
targetProject=".\hami_core\src\main\java">
<property name="enableSubPackages" value="false" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- 生成Mapper映射文件的位置 -->
<sqlMapGenerator targetPackage="mapper"
targetProject=".\hami_core\src\main\resources">
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- 生成Mapper接口的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.qcby.dao"
targetProject=".\hami_core\src\main\java">
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定要生成的表 -->
<table tableName="album"
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false"/>
</context>
</generatorConfiguration>
3. 逆向工程执行类
package com.qcby.util;
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 void generator() throws Exception {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
// 指向逆向工程配置文件
File configFile = new File("hami_core/src/main/resources/generatorConfig.xml");
ConfigurationParser parser = new ConfigurationParser(warnings);
Configuration config = parser.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
}
public static void main(String[] args) throws Exception {
try {
Generator generatorSqlmap = new Generator();
generatorSqlmap.generator();
} catch (Exception e) {
e.printStackTrace();
}
}
}
4. 逆向工程生成的文件说明
-
实体类(Model)
- 对应数据库表结构的 JavaBean
- 包含字段的 getter/setter 方法
- 示例:Album.java、Song.java等
-
Mapper 接口
- 数据访问层接口,定义数据库操作方法
- 包路径:
com.qcby.dao - 示例:AlbumMapper.java
-
Mapper 映射文件
- XML 格式,实现 Mapper 接口的方法
- 包含 CRUD 基本操作的 SQL 语句
- 存放路径:
src/main/resources/mapper - 示例:
xml
<!-- 基本查询示例 --> <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from album where AID = #{aid,jdbcType=INTEGER} </select>
5. 关键配置说明
- 数据库连接配置:指定数据库驱动、连接地址、用户名和密码
- 生成路径配置 :
javaModelGenerator:实体类生成路径sqlMapGenerator:Mapper XML 文件生成路径javaClientGenerator:Mapper 接口生成路径
- 表配置 :
tableName:数据库表名- 关闭 Example 相关方法:
enableCountByExample等设为 false,简化生成代码
6. 使用方法
- 配置好
generatorConfig.xml中的数据库连接和生成路径 - 在
table标签中添加需要生成代码的表名 - 运行
Generator类的main方法 - 自动生成实体类、Mapper 接口和映射文件
通过 MyBatis 逆向工程,可以快速生成数据库表对应的基础操作代码,减少重复开发工作,提高开发效率。生成的代码包含了基本的 CRUD 操作,可以直接使用或在此基础上进行扩展。