为了账号安全,请及时绑定邮箱和手机立即绑定

Mybatis官方生成器学习:入门教程

标签:
Java SSM 数据库
概述

本文将详细介绍如何使用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 的主要区别:

  1. 编程模型:JDBC 需要手动处理 SQL 语句的执行和结果集的解析,而 Mybatis 可以通过 XML 或注解配置文件来映射 SQL 语句和 Java 对象。
  2. SQL 语句的执行:在 JDBC 中,你需要手动编写 SQL 语句并传递参数,而在 Mybatis 中,这些 SQL 语句可以通过配置文件或注解来定义,参数绑定也是通过配置文件自动完成的。
  3. 结果映射:JDBC 中需要手动将 ResultSet 映射到 Java 对象,而在 Mybatis 中,通过 XML 映射文件或注解实现了自动映射。
  4. 动态 SQL:JDBC 不支持动态 SQL,而 Mybatis 支持动态 SQL 生成,这使得 SQL 语句更加灵活和强大。
  5. 资源管理:JDBC 中需要手动管理数据库连接和事务,而在 Mybatis 中,这些管理任务可以自动完成。
Mybatis的优点和应用场景

Mybatis 的优点包括:

  1. 灵活性:Mybatis 允许手动编写 SQL 语句,提供了极大的灵活性,可以根据需要调整 SQL 语句。
  2. 性能:Mybatis 直接操作数据库,避免了 ORM 框架的复杂性和性能损耗。
  3. 易用性:Mybatis 通过 XML 或注解配置文件映射 SQL 语句和 Java 对象,简化了开发流程。
  4. 数据库无关性:Mybatis 支持多种数据库,可以轻松地在不同的数据库之间切换。
  5. 社区支持:Mybatis 作为一款开源框架,拥有庞大的社区支持和丰富的文档资源。

Mybatis 的应用场景包括:

  1. 复杂的 SQL 查询:对于需要复杂查询的应用,Mybatis 的灵活性和性能优势使其成为理想的选择。
  2. 性能敏感的应用:在性能要求较高的系统中,Mybatis 的直接数据库操作可以提高系统性能。
  3. 数据库操作频繁的应用:对于需要频繁进行数据库操作的系统,Mybatis 的高效性可以降低数据库访问延迟。
  4. 需要控制 SQL 语句的应用:对于需要精确控制 SQL 语句的应用,Mybatis 的灵活性提供了更大的灵活性。
Mybatis官方生成器简介
官方生成器的作用

Mybatis 官方生成器(Mybatis Generator)是一个强大的工具,可以自动生成和管理 Mybatis 的映射文件、Java 类和 SQL 语句。它能够根据数据库表结构自动生成这些文件,从而大大减少了开发人员编写映射文件和 Java 类的工作量,提高了开发效率。

Mybatis Generator 主要功能包括:

  1. 生成映射文件:根据数据库表结构自动生成 Mybatis 的 XML 映射文件。
  2. 生成 Java 类:自动生成 Java 对象类和对应的 Mapper 接口,这些类和接口可以直接在项目中使用。
  3. 生成 SQL 语句:自动生成常用的 SQL 语句,如插入、更新、删除和查询等。
  4. 维护映射文件:在数据库表结构发生变化时,Mybatis Generator 可以自动生成新的映射文件,保持映射文件与数据库表结构的一致性。
官方生成器的安装与引入

要使用 Mybatis Generator,首先要安装并引入相关依赖。以下是在 Maven 项目中引入 Mybatis Generator 的步骤:

  1. 添加依赖:在项目的 pom.xml 文件中添加 Mybatis Generator 的依赖。
<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.7</version>
</dependency>
  1. 配置 XML 文件:创建一个 generatorConfig.xml 文件,用于配置 Mybatis Generator,包括数据库连接信息、表名和生成的 Java 类及映射文件的路径等。

  2. 运行生成器:使用命令行工具或 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>
  1. 运行命令:在命令行中运行以下命令来启动 Mybatis Generator。
mvn mybatis-generator:generate
官方生成器的基本配置

在配置文件 generatorConfig.xml 中,有一些重要的配置元素需要理解:

  1. context:定义生成器的上下文,可以设置多个不同的上下文来生成不同的配置文件。上下文元素通常包含三个子元素:jdbcConnectionjavaTypeResolverjavaModelGenerator 等。
  2. jdbcConnection:配置数据库连接信息,包括 JDBC 驱动类、连接 URL、用户名和密码等。
  3. javaTypeResolver:配置 Java 类型解析器,控制生成的 Java 类的类型映射规则。
  4. javaModelGenerator:配置生成 Java 模型类的设置,包括生成的 Java 类的包名、生成的 Java 类的存放位置等。
  5. 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 的示例:

  1. 创建配置文件:首先创建一个 generatorConfig.xml 配置文件,该文件用于配置 Mybatis Generator。

  2. 编写 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);
    }
}
  1. 配置文件:配置文件 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>
  1. 运行代码:运行 Java 代码,生成所需的文件。
生成器参数详解

Mybatis Generator 的配置文件 generatorConfig.xml 中包含了许多参数,这些参数可以控制生成的文件的类型和内容。以下是一些重要的参数:

  1. context:定义生成器的上下文,可以设置多个不同的上下文来生成不同的配置文件。上下文元素通常包含三个子元素:jdbcConnectionjavaTypeResolverjavaModelGenerator 等。
  2. jdbcConnection:配置数据库连接信息,包括 JDBC 驱动类、连接 URL、用户名和密码等。
  3. javaTypeResolver:配置 Java 类型解析器,控制生成的 Java 类的类型映射规则。
  4. javaModelGenerator:配置生成 Java 模型类的设置,包括生成的 Java 类的包名、生成的 Java 类的存放位置等。
  5. 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 提供了丰富的配置选项,可以满足各种复杂的生成需求。以下是一些高级配置选项:

  1. 自定义插件:可以通过配置自定义插件来扩展 Mybatis Generator 的功能,如生成注释、生成额外的 SQL 语句等。
  2. 生成注释:可以在生成的 Java 类和映射文件中添加注释,以便更好地理解和使用生成的代码。
  3. 生成额外的 SQL 语句:可以通过配置生成额外的 SQL 语句,如分页查询、批量插入等。
  4. 生成额外的 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官方生成器案例实战
准备数据库和表结构

为了演示 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 将根据配置文件生成所需的文件。生成的结果包括:

  1. Java 模型类:位于 src/main/java/com/example/model 目录下,如 User.java
  2. 映射文件:位于 src/main/resources/com/example/mappers 目录下,如 UserMapper.xml
  3. 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 过程中,可能会遇到一些常见的错误,以下是一些常见的错误及其解决方法:

  1. 数据库连接失败

    • 确保数据库服务器运行正常。
    • 检查数据库连接配置是否正确,包括 JDBC 驱动类、连接 URL、用户名和密码等。
  2. 生成文件冲突

    • 如果生成的文件已经存在于目标目录中,可以设置 overwrite 参数为 true,允许覆盖现有文件。
    • 也可以手动删除冲突的文件,然后重新运行 Mybatis Generator。
  3. 生成的 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>

确保 connectionURLuserIdpassword 是正确的。

生成器性能优化

为了提高 Mybatis Generator 的性能,可以考虑以下优化措施:

  1. 减少生成的文件数量:只生成必要的文件,避免生成不必要的文件,减少生成时间。
  2. 并行生成:如果配置文件中有多个上下文,可以考虑并行生成多个上下文,提高生成速度。
  3. 缓存生成结果:如果数据库表结构不变,可以考虑缓存生成的结果,避免重复生成。
  4. 优化数据库连接设置:优化数据库连接池配置,提高数据库连接的性能。

示例优化配置:

<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>
生成器配置文件的维护

随着项目的发展,数据库表结构和需求可能会发生变化,需要定期维护生成器配置文件:

  1. 更新配置文件:根据数据库表结构的变化更新配置文件,确保生成的文件与数据库表结构一致。
  2. 清理无效配置:删除不再使用的表配置,避免生成不必要的文件。
  3. 备份配置文件:定期备份配置文件,防止配置文件丢失导致生成的文件无法恢复。

示例维护配置文件:

<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官方生成器的进阶学习方向
  1. 自定义插件:学习如何编写自定义插件,扩展 Mybatis Generator 的功能,如生成注释、生成额外的 SQL 语句等。
  2. 动态 SQL 的生成:了解如何生成动态 SQL,提高 SQL 的灵活性和强大性。
  3. 高级配置选项:深入学习高级配置选项,如生成额外的 Java 类、生成额外的 SQL 语句等。
  4. 集成其他框架:学习如何将 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 等。以下是一些常见的集成方法:

  1. Spring Boot 集成:在 Spring Boot 项目中集成 Mybatis 和 Mybatis Generator,通过 Mybatis Generator 自动生成映射文件和 Java 类。

  2. 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 类。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消