本文将详细介绍如何使用Mybatis官方生成器进行自动化代码生成,涵盖安装、配置、基本使用及高级配置等内容。通过示例演示如何生成Java类、映射文件和Mapper接口,并提供常见问题解决方案和性能优化建议。此外,还将探讨Mybatis官方生成器的进阶学习方向,包括自定义插件和动态SQL生成。Mybatis官方生成器学习将帮助开发者更高效地管理和维护代码生成过程。
Mybatis概述 Mybatis是什么Mybatis 是一个优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。Mybatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。Mybatis 可以使用简单的 XML 或注解进行配置和原始映射,将接口和 Java 的 POJO 代理到传统 JDBC 的执行。
Mybatis与JDBC的区别JDBC 是 Java 数据库连接的简称,它提供了一个用于与数据库交互的 Java API。而 Mybatis 是一个对象关系映射(ORM)框架,它简化了 JDBC 编程,提供了更简洁的代码,降低了与数据库交互的复杂性。以下是 Mybatis 和 JDBC 的主要区别:
- 编程模型:JDBC 需要手动处理 SQL 语句的执行和结果集的解析,而 Mybatis 可以通过 XML 或注解配置文件来映射 SQL 语句和 Java 对象。
- SQL 语句的执行:在 JDBC 中,你需要手动编写 SQL 语句并传递参数,而在 Mybatis 中,这些 SQL 语句可以通过配置文件或注解来定义,参数绑定也是通过配置文件自动完成的。
- 结果映射:JDBC 中需要手动将 ResultSet 映射到 Java 对象,而在 Mybatis 中,通过 XML 映射文件或注解实现了自动映射。
- 动态 SQL:JDBC 不支持动态 SQL,而 Mybatis 支持动态 SQL 生成,这使得 SQL 语句更加灵活和强大。
- 资源管理:JDBC 中需要手动管理数据库连接和事务,而在 Mybatis 中,这些管理任务可以自动完成。
Mybatis 的优点包括:
- 灵活性:Mybatis 允许手动编写 SQL 语句,提供了极大的灵活性,可以根据需要调整 SQL 语句。
- 性能:Mybatis 直接操作数据库,避免了 ORM 框架的复杂性和性能损耗。
- 易用性:Mybatis 通过 XML 或注解配置文件映射 SQL 语句和 Java 对象,简化了开发流程。
- 数据库无关性:Mybatis 支持多种数据库,可以轻松地在不同的数据库之间切换。
- 社区支持:Mybatis 作为一款开源框架,拥有庞大的社区支持和丰富的文档资源。
Mybatis 的应用场景包括:
- 复杂的 SQL 查询:对于需要复杂查询的应用,Mybatis 的灵活性和性能优势使其成为理想的选择。
- 性能敏感的应用:在性能要求较高的系统中,Mybatis 的直接数据库操作可以提高系统性能。
- 数据库操作频繁的应用:对于需要频繁进行数据库操作的系统,Mybatis 的高效性可以降低数据库访问延迟。
- 需要控制 SQL 语句的应用:对于需要精确控制 SQL 语句的应用,Mybatis 的灵活性提供了更大的灵活性。
Mybatis 官方生成器(Mybatis Generator)是一个强大的工具,可以自动生成和管理 Mybatis 的映射文件、Java 类和 SQL 语句。它能够根据数据库表结构自动生成这些文件,从而大大减少了开发人员编写映射文件和 Java 类的工作量,提高了开发效率。
Mybatis Generator 主要功能包括:
- 生成映射文件:根据数据库表结构自动生成 Mybatis 的 XML 映射文件。
- 生成 Java 类:自动生成 Java 对象类和对应的 Mapper 接口,这些类和接口可以直接在项目中使用。
- 生成 SQL 语句:自动生成常用的 SQL 语句,如插入、更新、删除和查询等。
- 维护映射文件:在数据库表结构发生变化时,Mybatis Generator 可以自动生成新的映射文件,保持映射文件与数据库表结构的一致性。
要使用 Mybatis Generator,首先要安装并引入相关依赖。以下是在 Maven 项目中引入 Mybatis Generator 的步骤:
- 添加依赖:在项目的
pom.xml
文件中添加 Mybatis Generator 的依赖。
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
-
配置 XML 文件:创建一个
generatorConfig.xml
文件,用于配置 Mybatis Generator,包括数据库连接信息、表名和生成的 Java 类及映射文件的路径等。 - 运行生成器:使用命令行工具或 Java 代码运行 Mybatis Generator,生成所需的文件。
示例配置文件 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.dtd">
<generatorConfiguration>
<context id="DB2Tables" targetRuntime="MyBatis3">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/testdb"
userId="root"
password="password">
</jdbcConnection>
<javaTypeResolver>
<property name="unambiguousShortNameSuffix" value="S"/>
</javaTypeResolver>
<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="com.example.mappers" targetProject="src/main/resources"/>
<javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/>
<table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>
</context>
</generatorConfiguration>
- 运行命令:在命令行中运行以下命令来启动 Mybatis Generator。
mvn mybatis-generator:generate
官方生成器的基本配置
在配置文件 generatorConfig.xml
中,有一些重要的配置元素需要理解:
- context:定义生成器的上下文,可以设置多个不同的上下文来生成不同的配置文件。上下文元素通常包含三个子元素:
jdbcConnection
、javaTypeResolver
和javaModelGenerator
等。 - jdbcConnection:配置数据库连接信息,包括 JDBC 驱动类、连接 URL、用户名和密码等。
- javaTypeResolver:配置 Java 类型解析器,控制生成的 Java 类的类型映射规则。
- javaModelGenerator:配置生成 Java 模型类的设置,包括生成的 Java 类的包名、生成的 Java 类的存放位置等。
- table:定义需要生成映射文件和 Java 类的表,可以设置表名、生成的 Java 类名、生成的 SQL 语句类型等。
示例配置文件中的 context
元素:
<context id="DB2Tables" targetRuntime="MyBatis3">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/testdb"
userId="root"
password="password">
</jdbcConnection>
<javaTypeResolver>
<property name="unambiguousShortNameSuffix" value="S"/>
</javaTypeResolver>
<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="com.example.mappers" targetProject="src/main/resources"/>
<javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/>
<table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>
</context>
使用Mybatis官方生成器生成代码
生成器的基本使用方法
Mybatis Generator 可以通过命令行工具或 Java 代码来运行生成器并生成所需的文件。以下是通过 Java 代码调用 Mybatis Generator 的示例:
-
创建配置文件:首先创建一个
generatorConfig.xml
配置文件,该文件用于配置 Mybatis Generator。 - 编写 Java 代码:编写 Java 代码来调用 Mybatis Generator,生成所需的文件。
示例 Java 代码如下:
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class MybatisGeneratorExample {
public static void main(String[] args) throws Exception {
List<String> warnings = new ArrayList<>();
boolean overwrite = true;
File configFile = new File("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);
}
}
- 配置文件:配置文件
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.dtd">
<generatorConfiguration>
<context id="DB2Tables" targetRuntime="MyBatis3">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/testdb"
userId="root"
password="password">
</jdbcConnection>
<javaTypeResolver>
<property name="unambiguousShortNameSuffix" value="S"/>
</javaTypeResolver>
<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="com.example.mappers" targetProject="src/main/resources"/>
<javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/>
<table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>
</context>
</generatorConfiguration>
- 运行代码:运行 Java 代码,生成所需的文件。
Mybatis Generator 的配置文件 generatorConfig.xml
中包含了许多参数,这些参数可以控制生成的文件的类型和内容。以下是一些重要的参数:
- context:定义生成器的上下文,可以设置多个不同的上下文来生成不同的配置文件。上下文元素通常包含三个子元素:
jdbcConnection
、javaTypeResolver
和javaModelGenerator
等。 - jdbcConnection:配置数据库连接信息,包括 JDBC 驱动类、连接 URL、用户名和密码等。
- javaTypeResolver:配置 Java 类型解析器,控制生成的 Java 类的类型映射规则。
- javaModelGenerator:配置生成 Java 模型类的设置,包括生成的 Java 类的包名、生成的 Java 类的存放位置等。
- table:定义需要生成映射文件和 Java 类的表,可以设置表名、生成的 Java 类名、生成的 SQL 语句类型等。
示例配置文件中的 context
元素:
<context id="DB2Tables" targetRuntime="MyBatis3">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/testdb"
userId="root"
password="password">
</jdbcConnection>
<javaTypeResolver>
<property name="unambiguousShortNameSuffix" value="S"/>
</javaTypeResolver>
<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="com.example.mappers" targetProject="src/main/resources"/>
<javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/>
<table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>
</context>
生成器的高级配置
Mybatis Generator 提供了丰富的配置选项,可以满足各种复杂的生成需求。以下是一些高级配置选项:
- 自定义插件:可以通过配置自定义插件来扩展 Mybatis Generator 的功能,如生成注释、生成额外的 SQL 语句等。
- 生成注释:可以在生成的 Java 类和映射文件中添加注释,以便更好地理解和使用生成的代码。
- 生成额外的 SQL 语句:可以通过配置生成额外的 SQL 语句,如分页查询、批量插入等。
- 生成额外的 Java 类:可以通过配置生成额外的 Java 类,如辅助类、工具类等。
示例配置文件中的高级配置:
<context id="DB2Tables" targetRuntime="MyBatis3">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/testdb"
userId="root"
password="password">
</jdbcConnection>
<javaTypeResolver>
<property name="unambiguousShortNameSuffix" value="S"/>
</javaTypeResolver>
<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="com.example.mappers" targetProject="src/main/resources"/>
<javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/>
<table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
<comment>用户表</comment>
<generatedKey column="id" sqlType="INTEGER" identity="true" />
<columnOverride column="username" property="username" />
</table>
</context>
在上述示例中,<comment>
元素用于生成注释,<generatedKey>
元素用于生成主键,<columnOverride>
元素用于覆盖生成的列名和属性名。
为了演示 Mybatis Generator 的使用,首先需要准备一个数据库和相应的表结构。假设我们有一个 users
表,包含以下字段:
id
:主键,自动递增username
:用户名,字符串类型password
:密码,字符串类型email
:电子邮件,字符串类型created_at
:创建时间,日期类型
创建数据库和表结构的 SQL 脚本如下:
CREATE DATABASE testdb;
USE testdb;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
配置生成器XML文件
接下来,需要创建一个 generatorConfig.xml
配置文件,用于配置 Mybatis Generator。配置文件的内容如下:
<?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.dtd">
<generatorConfiguration>
<context id="DB2Tables" targetRuntime="MyBatis3">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/testdb"
userId="root"
password="password">
</jdbcConnection>
<javaTypeResolver>
<property name="unambiguousShortNameSuffix" value="S"/>
</javaTypeResolver>
<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="com.example.mappers" targetProject="src/main/resources"/>
<javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/>
<table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
<comment>用户表</comment>
<generatedKey column="id" sqlType="INTEGER" identity="true" />
<columnOverride column="username" property="username" />
</table>
</context>
</generatorConfiguration>
生成并运行示例代码
生成器配置文件创建完成后,接下来需要通过命令行工具或 Java 代码运行 Mybatis Generator,生成所需的文件。假设我们已经编写了一个 Java 类来调用 Mybatis 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.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class MybatisGeneratorExample {
public static void main(String[] args) throws Exception {
List<String> warnings = new ArrayList<>();
boolean overwrite = true;
File configFile = new File("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);
}
}
运行上述 Java 类后,Mybatis Generator 将根据配置文件生成所需的文件。生成的结果包括:
- Java 模型类:位于
src/main/java/com/example/model
目录下,如User.java
。 - 映射文件:位于
src/main/resources/com/example/mappers
目录下,如UserMapper.xml
。 - Mapper 接口:位于
src/main/java/com/example/mapper
目录下,如UserMapper.java
。
生成的 Java 模型类 User.java
的示例如下:
package com.example.model;
public class User {
private Integer id;
private String username;
private String password;
private String email;
private java.sql.Timestamp createdAt;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public java.sql.Timestamp getCreatedAt() {
return createdAt;
}
public void setCreatedAt(java.sql.Timestamp createdAt) {
this.createdAt = createdAt;
}
}
生成的 Mapper 接口 UserMapper.java
的示例如下:
package com.example.mapper;
import com.example.model.User;
import org.apache.ibatis.annotations.*;
public interface UserMapper {
@Insert("INSERT INTO users (username, password, email) VALUES (#{username}, #{password}, #{email})")
@Options(useGeneratedKeys=true, keyProperty="id")
void insert(User record);
@Update("UPDATE users SET username=#{username}, password=#{password}, email=#{email} WHERE id=#{id}")
void update(User record);
@Delete("DELETE FROM users WHERE id=#{id}")
void delete(Integer id);
@Select("SELECT * FROM users WHERE id=#{id}")
User selectById(Integer id);
@Select("SELECT * FROM users")
List<User> selectAll();
}
生成的映射文件 UserMapper.xml
的示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
INSERT INTO users (username, password, email)
VALUES (#{username}, #{password}, #{email})
</insert>
<update id="update">
UPDATE users SET username=#{username}, password=#{password}, email=#{email} WHERE id=#{id}
</update>
<delete id="delete">
DELETE FROM users WHERE id=#{id}
</delete>
<select id="selectById" resultType="com.example.model.User">
SELECT * FROM users WHERE id=#{id}
</select>
<select id="selectAll" resultType="com.example.model.User">
SELECT * FROM users
</select>
</mapper>
Mybatis官方生成器的常见问题与解决方案
常见错误及解决方法
在使用 Mybatis Generator 过程中,可能会遇到一些常见的错误,以下是一些常见的错误及其解决方法:
-
数据库连接失败:
- 确保数据库服务器运行正常。
- 检查数据库连接配置是否正确,包括 JDBC 驱动类、连接 URL、用户名和密码等。
-
生成文件冲突:
- 如果生成的文件已经存在于目标目录中,可以设置
overwrite
参数为true
,允许覆盖现有文件。 - 也可以手动删除冲突的文件,然后重新运行 Mybatis Generator。
- 如果生成的文件已经存在于目标目录中,可以设置
- 生成的 SQL 语句错误:
- 检查数据库表结构和配置文件中的表名、列名等是否一致。
- 检查 SQL 语句的语法是否正确。
示例错误信息和解决方法:
<!-- 配置文件示例 -->
<generatorConfiguration>
<context id="DB2Tables" targetRuntime="MyBatis3">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/testdb"
userId="root"
password="password">
</jdbcConnection>
<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="com.example.mappers" targetProject="src/main/resources"/>
<javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/>
<table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>
</context>
</generatorConfiguration>
如果出现数据库连接失败错误,可以检查数据库连接配置是否正确。例如:
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/testdb"
userId="root"
password="password">
</jdbcConnection>
确保 connectionURL
和 userId
、password
是正确的。
为了提高 Mybatis Generator 的性能,可以考虑以下优化措施:
- 减少生成的文件数量:只生成必要的文件,避免生成不必要的文件,减少生成时间。
- 并行生成:如果配置文件中有多个上下文,可以考虑并行生成多个上下文,提高生成速度。
- 缓存生成结果:如果数据库表结构不变,可以考虑缓存生成的结果,避免重复生成。
- 优化数据库连接设置:优化数据库连接池配置,提高数据库连接的性能。
示例优化配置:
<generatorConfiguration>
<context id="DB2Tables" targetRuntime="MyBatis3">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/testdb"
userId="root"
password="password">
</jdbcConnection>
<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="com.example.mappers" targetProject="src/main/resources"/>
<javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/>
<table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
<comment>用户表</comment>
<generatedKey column="id" sqlType="INTEGER" identity="true" />
<columnOverride column="username" property="username" />
</table>
</context>
</generatorConfiguration>
例如,减少生成的文件数量:
<generatorConfiguration>
<context id="DB2Tables" targetRuntime="MyBatis3">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/testdb"
userId="root"
password="password">
</jdbcConnection>
<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="com.example.mappers" targetProject="src/main/resources"/>
<!-- 只生成 Java 类和 Mapper 接口,不生成 SQL 映射文件 -->
<javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/>
<table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
<comment>用户表</comment>
<generatedKey column="id" sqlType="INTEGER" identity="true" />
<columnOverride column="username" property="username" />
</table>
</context>
</generatorConfiguration>
生成器配置文件的维护
随着项目的发展,数据库表结构和需求可能会发生变化,需要定期维护生成器配置文件:
- 更新配置文件:根据数据库表结构的变化更新配置文件,确保生成的文件与数据库表结构一致。
- 清理无效配置:删除不再使用的表配置,避免生成不必要的文件。
- 备份配置文件:定期备份配置文件,防止配置文件丢失导致生成的文件无法恢复。
示例维护配置文件:
<generatorConfiguration>
<context id="DB2Tables" targetRuntime="MyBatis3">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/testdb"
userId="root"
password="password">
</jdbcConnection>
<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="com.example.mappers" targetProject="src/main/resources"/>
<javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/>
<!-- 更新表配置,添加新的表 -->
<table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
<comment>用户表</comment>
<generatedKey column="id" sqlType="INTEGER" identity="true" />
<columnOverride column="username" property="username" />
</table>
<!-- 删除不再使用的表配置 -->
<table tableName="old_table" domainObjectName="OldTable" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>
</context>
</generatorConfiguration>
小结与进阶方向
学习小结
本文详细介绍了 Mybatis Generator 的使用方法和配置选项,通过示例演示了如何生成 Java 模型类、映射文件和 Mapper 接口。同时,介绍了 Mybatis Generator 的常见问题及解决方案,及性能优化和配置文件维护的方法。
Mybatis官方生成器的进阶学习方向- 自定义插件:学习如何编写自定义插件,扩展 Mybatis Generator 的功能,如生成注释、生成额外的 SQL 语句等。
- 动态 SQL 的生成:了解如何生成动态 SQL,提高 SQL 的灵活性和强大性。
- 高级配置选项:深入学习高级配置选项,如生成额外的 Java 类、生成额外的 SQL 语句等。
- 集成其他框架:学习如何将 Mybatis Generator 集成到其他框架中,如 Spring Boot、Spring MVC 等。
示例自定义插件配置:
<generatorConfiguration>
<context id="DB2Tables" targetRuntime="MyBatis3">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/testdb"
userId="root"
password="password">
</jdbcConnection>
<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="com.example.mappers" targetProject="src/main/resources"/>
<javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/>
<table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
<comment>用户表</comment>
<generatedKey column="id" sqlType="INTEGER" identity="true" />
<columnOverride column="username" property="username" />
</table>
<!-- 自定义插件配置 -->
<plugin type="com.example.plugin.MyCustomPlugin">
<property name="param1" value="value1"/>
<property name="param2" value="value2"/>
</plugin>
</context>
</generatorConfiguration>
Mybatis与其他框架的集成
Mybatis 可以与许多其他框架集成,如 Spring Boot、Spring MVC 等。以下是一些常见的集成方法:
-
Spring Boot 集成:在 Spring Boot 项目中集成 Mybatis 和 Mybatis Generator,通过 Mybatis Generator 自动生成映射文件和 Java 类。
- Spring MVC 集成:在 Spring MVC 项目中集成 Mybatis 和 Mybatis Generator,通过 Mybatis Generator 自动生成映射文件和 Java 类。
示例 Spring Boot 集成 Mybatis Generator:
<!-- pom.xml -->
<dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
</dependencies>
<!-- application.properties -->
spring.datasource.url=jdbc:mysql://localhost:3306/testdb
spring.datasource.username=root
spring.datasource.password=password
<!-- generatorConfig.xml -->
<generatorConfiguration>
<context id="DB2Tables" targetRuntime="MyBatis3">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/testdb"
userId="root"
password="password">
</jdbcConnection>
<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="com.example.mappers" targetProject="src/main/resources"/>
<javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/>
<table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
<comment>用户表</comment>
<generatedKey column="id" sqlType="INTEGER" identity="true" />
<columnOverride column="username" property="username" />
</table>
</context>
</generatorConfiguration>
通过以上步骤,可以在 Spring Boot 项目中集成 Mybatis 和 Mybatis Generator,生成所需的映射文件和 Java 类。
共同学习,写下你的评论
评论加载中...
作者其他优质文章