本文还有配套的精品资源,点击获取
简介:MyBatis Generator(MBG)是一个自动化代码生成工具,可自动生成Mapper接口、XML映射文件和Java实体类,减少开发工作量。本示例项目演示了MBG在实际中的应用,包含针对特定系统如“秒杀”系统生成的代码,并提供详细的图文教程,指导如何配置和运行MBG,以及如何将生成的代码整合到项目中。
1. MyBatis Generator简介
在当今的软件开发领域,数据库操作是不可或缺的一环,而MyBatis作为一款流行的Java持久层框架,帮助开发者以对象关系映射的方式简化数据库编程。在此基础上,MyBatis Generator(MBG)工具应运而生,为开发者提供了自动化生成代码的能力,极大地提升了开发效率。
MyBatis Generator可以自动化生成与数据库表对应的Java模型类(Model),以及这些模型对应的Mapper接口和XML映射文件。这些文件定义了Java类如何与数据库表进行交互,从而简化了数据库操作的编码工作。
本章将为读者介绍MyBatis Generator的基本概念,以及它在开发中的重要性。我们会看到MBG在提高数据库操作代码开发效率方面的关键作用,并为接下来章节中将详细介绍的配置细节和使用方法打下基础。
1.1 MyBatis Generator的定义和应用场景
MyBatis Generator是一个独立的代码生成工具,主要用于根据数据库表结构自动生成MyBatis的Mapper接口、XML映射文件和Java模型类。这样开发者就不用手动编写这些重复且容易出错的基础代码,可以将精力集中在业务逻辑的实现上。
1.2 MBG与MyBatis的整合
MBG不仅是一个简单的代码生成器,它还能与MyBatis框架无缝整合。通过生成的Mapper接口和XML映射文件,MyBatis可以识别并执行相应的数据库操作,如增加、删除、修改和查询等。开发者只需要编写更少的代码,就可以实现对数据库的全功能操作。
1.3 MBG的工作原理简述
MBG通过分析数据库表结构,根据提供的配置文件( generatorConfig.xml )中的指示,生成相应的Java代码和XML文件。这个过程是可配置的,开发者可以根据项目的具体需求调整生成规则,以达到最佳的代码结构和操作效率。
2. 核心功能与优势
在本章中,我们将深入探讨MyBatis Generator的核心功能,并分析其带来的优势,以便更好地理解为何该工具在开发社区中广受欢迎。
2.1 MyBatis Generator的核心功能解析
2.1.1 自动化生成Java模型类
MyBatis Generator (MBG) 最核心的功能之一是能够自动化地根据数据库表结构生成相应的Java模型类。这个过程极大地简化了开发者的日常工作,尤其是当数据库表结构较为复杂时。
@Table(name="user")
public class User {
@Id
private Integer id;
private String name;
private String email;
// Getters and Setters
}
上述代码展示了MBG如何将一个名为 user 的数据库表转换成Java模型类。通过注解(如 @Table 、 @Id ),MBG能够自动识别表名和字段,同时映射主键和其他字段。通过这样的自动化过程,开发人员可以节约大量编写基础数据访问层代码的时间。
2.1.2 生成Mapper接口和XML映射文件
除了模型类,MBG还能生成对应的Mapper接口和XML映射文件。Mapper接口中定义了所有数据库操作的抽象方法,而XML映射文件则提供了这些方法对应的实际SQL语句。
public interface UserMapper {
int deleteByPrimaryKey(Integer id);
int insert(User record);
int insertSelective(User record);
User selectByPrimaryKey(Integer id);
List<User> selectAll();
}
Mapper接口的生成是通过分析模型类以及数据库表结构自动完成的,它提供了一系列CRUD操作的方法。而对应的XML文件则包括了每个操作对应的SQL语句,如:
<mapper namespace="***.example.mapper.UserMapper">
<resultMap id="BaseResultMap" type="***.example.model.User">
<!-- various column mappings -->
</resultMap>
<sql id="Base_Column_List">
id, name, email
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List" />
FROM user
WHERE id = #{id,jdbcType=INTEGER}
</select>
</mapper>
2.1.3 支持多种数据库方言
MBG支持多种数据库方言,这意味着开发者可以针对不同的数据库系统(如MySQL、PostgreSQL、Oracle等)生成特化的代码。每种数据库方言都包含了一套特定的SQL语句模板,以保证生成的代码可以正确地与相应的数据库交互。
2.2 MyBatis Generator的优势
2.2.1 提高开发效率
通过自动化生成代码,MBG大大提高了开发效率。开发者无需手动编写大量重复的基础代码,可以把更多精力投入到业务逻辑的实现上,从而加快开发流程,缩短产品从设计到上市的时间。
2.2.2 保证代码质量
MBG生成的代码质量相对较高,因为它遵循了统一的代码生成规范。这种规范性有助于减少潜在的编码错误和漏洞,同时生成的代码易于阅读和维护。
2.2.3 减少重复劳动
在多数据库、多项目开发的环境下,代码的重复性劳动是不可避免的。MBG能够针对不同的数据库表结构生成相应的代码,减少重复编写和调试SQL语句的工作量。通过配置生成规则,开发者还可以定制特定的生成策略,进一步优化开发流程。
小结
本章详细介绍了MyBatis Generator的核心功能,并分析了其带来的显著优势。通过自动化生成模型类、Mapper接口和XML映射文件,以及对多种数据库方言的支持,MBG大幅提升了开发效率、保证了代码质量,并减少了重复性劳动。在后续章节中,我们将进一步探索如何配置和使用MBG,以及如何通过Maven插件或Java API来执行代码生成。
3. 数据库表结构转换为Java模型类、Mapper接口和XML映射文件
3.1 数据库表结构与Java模型类的对应关系
3.1.1 模型类的字段与数据库表字段映射
在将数据库表结构映射为Java模型类的过程中,每个表中的列将直接对应到Java类中的属性。这一映射过程考虑了数据库字段的类型、是否允许为空、默认值等因素,并将这些信息转换为Java类中相应属性的数据类型和注解。
例如,如果数据库中存在一个名为 id 的整数类型的主键列,其在Java模型类中会映射为一个带有 @Id 注解的 int 类型字段。此外,可能还会包含 @Column 注解,用于指定数据库中对应的列名。
public class User {
private Integer id;
private String name;
private Date birthday;
// Getters and Setters
}
映射后的Java类简洁明了,代码结构清晰,便于维护和后续操作。
3.1.2 主键、外键关系处理
当数据库表中存在主键和外键关系时,MyBatis Generator(MBG)在生成Java模型类时也会尽可能地反映这些关系。对于主键,MBG默认为每个带有主键约束的字段添加 @Id 注解。对于外键关系,MBG会将外键列映射到Java模型类中,但处理外键的方式比较特别,它通常不会在Java类中直接创建对应的属性,而是通过关联关系来体现。
例如,假设存在两个表 department 和 employee ,其中 employee 表有一个外键 department_id 指向 department 表的 id 字段,MBG可能会生成如下代码:
public class Employee {
// 其他属性...
private Integer departmentId;
// 使用@ManyToOne关联department实体
private Department department;
// Getters and Setters
}
public class Department {
private Integer id;
private String name;
// Getters and Setters
}
这段代码展示了一个员工与部门的多对一关系。在 Employee 类中通过 @ManyToOne 注解表达了与 Department 类的关系。
3.2 从数据库表结构到Mapper接口的生成
3.2.1 Mapper接口的定义和方法
MyBatis Generator 能够根据数据库表结构自动生成Mapper接口。这个接口定义了一系列的CRUD(创建、读取、更新、删除)操作。这些方法通常遵循特定的命名规则,以帮助MyBatis框架解析并关联到相应的SQL映射文件。
例如,对于 User 表,MBG生成的Mapper接口可能会包含如下方法:
public interface UserMapper {
int deleteByPrimaryKey(Integer id);
int insert(User record);
int insertSelective(User record);
User selectByPrimaryKey(Integer id);
List<User> selectAll();
int updateByPrimaryKeySelective(User record);
int updateByPrimaryKey(User record);
}
每个方法都遵循了一定的命名模式,如 selectByPrimaryKey 指示了根据主键进行查询的操作。
3.2.2 SQL片段和动态SQL的支持
除了基础的CRUD操作外,MyBatis Generator还能够生成支持动态SQL的Mapper接口。动态SQL是MyBatis框架的核心特性之一,它允许根据业务逻辑构造灵活的SQL语句。
MyBatis Generator通过 <sql> 和 <include> 元素来支持动态SQL片段的复用。以下是一个简单的示例:
<mapper namespace="***.example.mapper.UserMapper">
<sql id="Base_Column_List">
id, name, birthday
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List" />
FROM user
WHERE id = #{id,jdbcType=INTEGER}
</select>
<!-- 其他查询和更新语句 -->
</mapper>
在上面的例子中,SQL片段 <sql id="Base_Column_List"> 定义了一个列名列表,该列表可以在 <select> 、 <update> 和 <delete> 等语句中被 <include> 引用。
3.3 XML映射文件的配置与使用
3.3.1 基于XML的SQL语句配置
XML映射文件是MyBatis Generator生成内容中的核心部分,它定义了Mapper接口中各个方法执行的SQL语句。这些文件遵循MyBatis的XML映射规则,允许用户使用参数化查询,避免SQL注入攻击,同时保持代码的清晰和易于管理。
下面是一个简单的XML映射文件的例子:
<mapper namespace="***.example.mapper.UserMapper">
<resultMap id="BaseResultMap" type="***.example.model.User">
<id column="id" property="id" jdbcType="INTEGER" />
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="birthday" property="birthday" jdbcType="DATE" />
</resultMap>
<select id="selectAll" resultMap="BaseResultMap">
SELECT * FROM user
</select>
<!-- 其他映射 -->
</mapper>
在这里, <resultMap> 元素定义了如何从数据库列映射到Java属性,而 <select> 元素则定义了一个查询所有用户的操作。
3.3.2 全局配置和局部配置的关系
MyBatis的XML映射文件允许灵活配置,可以设置全局属性,也可以针对单个语句进行局部配置。全局配置通常包含数据库连接信息、事务管理器设置等。局部配置则指针对单个SQL操作的特定设置,例如 <if> 或 <choose> 元素允许基于条件动态地改变SQL执行逻辑。
在MyBatis Generator生成的映射文件中,全局配置通常继承自Generator的配置,而局部配置则针对具体的操作提供更多的细节。例如,MyBatis Generator可能会为每个Mapper生成一个带有所有CRUD操作的XML映射文件,而这些文件的顶层配置会继承自 generatorConfig.xml 中的全局设置。
下面是一个示例,展示如何在全局和局部设置中处理动态SQL和参数:
<configuration>
<settings>
<!-- 全局配置项 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<mapper namespace="***.example.mapper.UserMapper">
<select id="selectByBirthday" parameterType="java.util.Date" resultMap="BaseResultMap">
<if test="birthday != null">
SELECT * FROM user WHERE birthday = #{birthday,jdbcType=DATE}
</if>
</select>
<!-- 其他映射配置 -->
</mapper>
</configuration>
在 selectByBirthday 方法中,使用 <if> 标签根据传入的参数动态决定是否要添加 WHERE 子句,展示了如何在局部配置中使用动态SQL来优化查询条件。
总结
MyBatis Generator在数据库表结构和Java模型类、Mapper接口及XML映射文件之间建立了清晰的映射关系。本章节详细探讨了字段映射、主键和外键关系的处理、动态SQL的运用和配置,以及全局和局部配置的区别和应用。这些深入的分析和丰富的代码示例能够帮助开发者更好地理解和掌握MBG的使用。通过本章节的介绍,我们可以看到,MBG生成的代码为数据库操作提供了高效、安全和易于维护的基础。
4. 配置MBG所需环境和文件准备
4.1 环境要求和软件安装
在深入探讨如何使用MyBatis Generator(MBG)之前,配置一个适合的开发环境是至关重要的。这个过程包括选择正确的JDK版本、配置集成开发环境(IDE)、安装数据库驱动等步骤,以确保MBG能够顺利运行并生成所需代码。
4.1.1 JDK版本选择
选择合适的Java开发工具包(JDK)是启动MBG配置的第一步。MBG对JDK的版本有一定的要求,以确保其功能能够正常运行,同时考虑到项目兼容性和性能优化。
- Java版本兼容性 :MBG要求使用Java 8或更高版本。考虑到开发效率和后续维护,推荐使用最新的LTS版本JDK,因为其拥有更长久的官方支持。
- 下载安装 :可以通过Oracle官网下载JDK安装包,并进行安装。安装完成后,需要配置系统的环境变量,如
JAVA_HOME以及PATH。
4.1.2 IDE环境配置
集成开发环境(IDE)是开发人员日常工作的主要场所,配置一个适合的IDE对于提升开发效率至关重要。对于MBG来说,主流的IDE如IntelliJ IDEA或Eclipse都能够很好地支持。
- IntelliJ IDEA :这个IDE提供了优秀的代码管理和智能提示功能,通常情况下,它会内置对MBG的友好支持。
- Eclipse :虽然近年来逐渐被IntelliJ IDEA超越,Eclipse依然是一个不错的选择,尤其对于喜欢使用Eclipse的朋友。
- 插件安装 :对于MBG,无论使用哪个IDE,通常都需要安装一个插件来简化MBG配置文件的编写。以IntelliJ IDEA为例,可以安装MyBatisX插件,该插件提供了自动生成和管理MBG文件的功能。
4.1.3 数据库驱动安装
为了使MBG能够与数据库进行交互,确保正确安装了数据库驱动是必不可少的步骤。根据所使用的数据库类型,如MySQL、PostgreSQL、Oracle等,需要下载相应的JDBC驱动。
- 下载JDBC驱动 :可以从各个数据库提供商的官方网站获取JDBC驱动的jar包。
- 添加到项目依赖 :将下载的JDBC驱动包添加到项目的类路径中,这通常可以通过项目的构建工具(如Maven或Gradle)来完成。
4.2 MBG所需文件的准备
配置MBG的下一步是准备必要的配置文件。这些文件是指导MBG生成代码的基础,它们包括数据库连接配置文件、MyBatis配置文件,以及实体类与映射文件的存放结构。
4.2.1 数据库连接配置文件
MBG使用 generatorConfig.xml 文件来配置数据库连接。这个文件包含了数据库的URL、用户名、密码、驱动类等信息,MBG将使用这些信息来连接数据库并生成代码。
- 数据库连接信息 :需要提供一个JDBC URL,这是连接数据库的关键。例如,对于MySQL数据库,URL可能会是这样的:
jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC。 - 数据库认证信息 :需要提供访问数据库的用户名和密码。
4.2.2 MyBatis配置文件
MyBatis的配置文件( mybatis-config.xml )包含了MyBatis的全局配置信息。虽然MBG可以在没有此文件的情况下工作,但添加此文件可以在需要时提供更细粒度的控制。
- 全局配置 :如别名(typeAliases)、插件(plugins)等。
- 数据库环境 :例如事务管理器(transactionManager)和数据源(dataSource)的配置。
4.2.3 实体类与映射文件的存放结构
为了保持项目的结构清晰,建议提前规划好实体类和映射文件的存放结构。这有助于在项目中维护生成的代码。
- 实体类存放位置 :通常放在
src/main/java目录下。 - 映射文件存放位置 :这些文件通常放在
src/main/resources目录下。
为了实现这一点,可以在Maven或Gradle的项目结构中设置对应的资源文件夹(resources),并使用构建脚本将生成的映射文件正确地放置在资源目录中。
在这个章节中,我们详细介绍了配置MBG所需环境和文件准备的各个步骤。从环境要求和软件安装,到MBG所需文件的准备,每个环节都是后续代码生成工作的基础。了解并掌握了这些内容,将为后续章节中更深入的MBG使用与自定义配置打下坚实的基础。
5. MBG配置文件 generatorConfig.xml 设置
5.1 generatorConfig.xml 文件结构解析
MyBatis Generator (MBG) 配置文件 generatorConfig.xml 是整个代码生成过程的核心。它包含了生成MyBatis相关文件所需的所有配置信息。了解这个文件的结构和各子节点的定义对于配置MBG至关重要。
5.1.1 根元素和基本结构
generatorConfig.xml 文件的根元素通常是 <generatorConfiguration> ,在这个根元素下,可以配置多个数据库连接和生成策略。此文件应该被组织为一系列的子元素,这些子元素定义了数据库连接信息、表、生成规则以及输出目录等。
一个典型的 generatorConfig.xml 文件结构如下:
<generatorConfiguration>
<!-- 数据库连接信息 -->
<jdb***onnection>...</jdb***onnection>
<!-- 模型类生成规则 -->
<javaModelGenerator>...</javaModelGenerator>
<!-- SQL映射文件生成规则 -->
<sqlMapGenerator>...</sqlMapGenerator>
<!-- Mapper接口生成规则 -->
<javaClientGenerator>...</javaClientGenerator>
<!-- 数据库表的配置 -->
<table>...</table>
<!-- 全局配置 -->
<context>...</context>
</generatorConfiguration>
5.1.2 各个子节点的定义和作用
-
<jdb***onnection>:包含数据库连接信息,如驱动类、数据库URL、用户名和密码。 -
<javaModelGenerator>:定义了Java模型类生成位置以及是否启用BLOB类型字段。 -
<sqlMapGenerator>:定义了XML映射文件的输出位置。 -
<javaClientGenerator>:配置了Mapper接口和XML映射文件的生成方式。 -
<table>:指定要处理的表以及生成相关文件的配置。 -
<context>:定义了生成策略和额外的生成选项,可以配置多个。
5.2 配置文件的详细设置
5.2.1 数据库连接信息配置
在 generatorConfig.xml 中, <jdb***onnection> 节点负责定义数据库连接。配置时需要指定数据库类型、驱动类路径、数据库URL、用户名和密码。例如,针对MySQL数据库的配置可能如下所示:
<jdb***onnection driverClass="***.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mydatabase"
userId="root"
password="password">
<!-- 针对MySQL特有的配置可以放在这里 -->
</jdb***onnection>
5.2.2 模型类生成规则配置
<javaModelGenerator> 节点负责指定Java模型类的生成位置和特性。可以指定模型类所在的包以及目标文件夹。还可以决定是否生成BLOB字段对应的类,以及是否启用注解而非XML映射。配置示例如下:
<javaModelGenerator targetPackage="***.example.model"
targetProject="src/main/java">
<!-- 是否启用BLOB类型字段 -->
<property name="enableSubPackages" value="true"/>
</javaModelGenerator>
5.2.3 Mapper接口和XML映射文件生成规则配置
<javaClientGenerator> 节点用于配置Mapper接口和XML映射文件的生成规则。可以选择不同的生成器,比如XML生成器或注解生成器。同时可以指定生成器的特定选项,比如是否允许自定义的Mapper接口等。示例配置如下:
<javaClientGenerator type="XMLMAPPER"
targetPackage="***.example.mapper"
targetProject="src/main/java">
<!-- 自定义Mapper接口的生成位置 -->
</javaClientGenerator>
在 <table> 节点中,需要详细定义哪些表需要生成文件,可以指定表名、生成策略、哪些字段不生成等。而 <context> 节点则是对整个生成过程的全局配置,它允许定义插件以及一些额外的自定义设置,从而控制生成过程中的行为。
通过这些详细配置,开发者可以灵活地根据项目需求定制MBG的行为,从而高效地生成高质量的MyBatis代码文件。
6. 自定义模板生成代码
MyBatis Generator(MBG)是Java开发者用于生成MyBatis框架下所需代码的强大工具。它能够根据数据库表结构自动生成Java模型类、Mapper接口以及相应的XML映射文件。然而,MBG的真正强大之处在于其可扩展性,特别是通过自定义模板来满足特定的代码生成需求。本章节将探讨自定义模板的作用、场景以及如何编写和应用它们。
6.1 自定义模板的作用和场景
6.1.1 避免重复代码的模板定制
在实际开发中,开发者经常会遇到需要生成大量重复代码的情况。例如,对于数据库表结构相似但不完全相同的多个表,我们可能需要生成类似但又不完全相同的Mapper接口和XML映射文件。在这种情况下,可以通过定制模板来避免这种重复性工作。自定义模板允许开发者为不同的表结构定义特定的代码生成规则,从而在保持代码一致性的同时减少重复劳动。
6.1.2 根据需求定制模板的必要性
每个项目或团队可能对代码的组织和样式有不同的要求。例如,一些团队可能需要在每个Mapper接口中实现一个特定的方法,或者希望自动生成的SQL语句能够包含特定的逻辑处理。在这些情况下,MBG的默认模板可能无法满足需求,这就需要开发者自定义模板以适应特定的场景。
6.2 自定义模板的编写和应用
6.2.1 模板文件的格式和语法
自定义模板文件是文本文件,可以使用MBG提供的特定语法进行编写。模板文件主要包含两个部分:静态文本和动态部分。静态文本是模板中不变的内容,而动态部分则是根据数据库表结构生成的代码。MBG使用Apache Velocity作为模板引擎,因此模板文件的语法与Velocity模板语法非常相似。
例如,下面是一个简单的模板文件的代码段,它展示了如何使用模板语法生成一个简单的Mapper接口:
package ${packageName};
import java.util.List;
public interface ${table.className}Mapper {
List<${table.className}> selectAll();
${table.className} selectByPrimaryKey(${table.pkType} id);
int insert(${table.className} record);
int updateByPrimaryKey(${table.className} record);
int deleteByPrimaryKey(${table.pkType} id);
}
在这个模板中, ${packageName} 、 ${table.className} 、 ${table.pkType} 等是动态插入的变量,它们的值将根据具体的表结构生成。
6.2.2 模板继承与模板方法的使用
在MBG中,模板还可以继承其他模板,形成一个模板继承体系。这种继承机制可以简化模板的管理,当多个模板有共同的结构或代码时,可以创建一个基础模板,并让其他模板继承自它。模板方法是模板继承的一个重要概念,它允许定义可以被继承模板重写的代码块。
比如,定义一个基础模板 base-mapper.xml ,它包含了一些通用的方法定义:
<#-- base-mapper.xml -->
<#-- 继承自mbg生成的基础Mapper -->
<@mbg.baseMapper package="***.example.mapper.base" type="BaseMapper">
package ${packageName};
import java.util.List;
<@! for (Table table : tables) { >
public interface ${table.className}Mapper extends BaseMapper<${table.className}> {
List<${table.className}> selectAll();
${table.className} selectByPrimaryKey(${table.pkType} id);
int insert(${table.className} record);
int updateByPrimaryKey(${table.className} record);
int deleteByPrimaryKey(${table.pkType} id);
}
<@! } >
</@mbg.baseMapper>
然后,其他具体的表模板可以继承自 base-mapper.xml ,并实现具体的表操作方法。
通过这种方式,开发者可以构建出一个灵活的模板体系,以适应不同的开发需求和项目要求。自定义模板不仅提高了代码生成的灵活性,也增加了代码的可维护性,是提高开发效率和代码质量的重要手段。
7. 使用Maven插件或Java API执行MyBatis Generator
MyBatis Generator (MBG) 可以通过两种方式进行配置和执行:Maven 插件和 Java API。这两种方式各有优势,可以根据项目的需要和开发者的偏好进行选择。
7.1 Maven插件的配置与执行
Maven 插件是一种简便的集成方式,它允许直接在项目的 pom.xml 文件中配置 MBG,从而利用 Maven 的生命周期进行数据库表到 Java 代码的自动映射。
7.1.1 插件的配置项介绍
在 Maven 的 pom.xml 文件中配置 MBG 插件,需要定义插件的 groupId 、 artifactId 、 version ,以及 MBG 配置文件 generatorConfig.xml 的路径。
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.0</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
</build>
7.1.2 如何在Maven项目中集成MBG
要在 Maven 项目中集成 MBG,只需将上述配置添加到 pom.xml 文件中,并确保 generatorConfig.xml 文件放置在正确的路径下。接着,可以在 Maven 的命令行中运行以下命令来执行代码生成:
mvn mybatis-generator:generate
该命令会触发 MBG 插件,根据 generatorConfig.xml 文件中的配置生成相应的 Java 模型类、Mapper 接口及 XML 映射文件。
7.2 Java API的方式调用MyBatis Generator
使用 Java API 的方式调用 MyBatis Generator 是更灵活的执行方式,允许开发者在 Java 应用程序代码中直接配置和执行 MBG。
7.2.1 API方式的基本流程
使用 Java API 执行 MBG 的基本流程包括创建 Configuration 对象,设置 generationContext ,以及执行生成器。
// 加载MBG配置文件
Reader reader = new FileReader("path/to/generatorConfig.xml");
Configuration config = new XmlConfiguration(reader);
context = new GenerationContext(config, null);
// 创建生成器
Generator generator = new Generator(context);
// 执行生成器
generator.generate(null);
7.2.2 集成至项目构建工具链
将 MBG 集成到项目的构建工具链,如 Maven 或 Gradle,可以通过在构建脚本中添加 Java API 调用代码来实现。这里以 Maven 为例:
public class MyBatisGeneratorUtil {
public void generate() throws Exception {
Reader reader = new FileReader("src/main/resources/generatorConfig.xml");
Configuration config = new XmlConfiguration(reader);
context = new GenerationContext(config, null);
Generator generator = new Generator(context);
generator.generate(null);
}
}
然后,在 Maven 的 pom.xml 中添加一个构建脚本:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>***.yourpackage.MyBatisGeneratorUtil</mainClass>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
运行 Maven 命令 mvn generate-sources 将触发 MBG 的执行,并生成所需的 Java 代码。
通过上述配置和代码执行,开发者可以选择适合自己的方式来使用 MyBatis Generator,以满足不同的项目需求和环境配置。
本文还有配套的精品资源,点击获取
简介:MyBatis Generator(MBG)是一个自动化代码生成工具,可自动生成Mapper接口、XML映射文件和Java实体类,减少开发工作量。本示例项目演示了MBG在实际中的应用,包含针对特定系统如“秒杀”系统生成的代码,并提供详细的图文教程,指导如何配置和运行MBG,以及如何将生成的代码整合到项目中。
本文还有配套的精品资源,点击获取