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

Mybatis官方生成器教程:新手入门指南

标签:
Java SSM 数据库
概述

本文详细介绍了如何使用Mybatis官方生成器教程进行数据库操作的自动化生成,包括安装、配置和基本用法等内容,帮助新手快速入门。文章还涵盖了自定义生成器配置以及高级功能的使用方法,确保读者能够灵活高效地使用Mybatis官方生成器教程。

Mybatis官方生成器教程:新手入门指南
MyBatis简介

MyBatis是什么

MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解进行配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。

MyBatis的核心概念

  • SqlSessionFactory: 创建 SqlSession 的工厂。SqlSessionFactory 不是线程安全的,因此它应该在所有线程间共享。SqlSessionFactory 的最佳单例模式可以做到这一点。

  • SqlSession: SqlSession 是 MyBatis 执行持久化操作的一个会话对象。它不仅能够直接执行 SQL 语句,还能管理事务。SqlSession 是线程不安全的,因此不应该在多个线程之间共享一个 SqlSession 实例。

  • Mapper (SQL 映射器): MyBatis 的核心就是使用 XML 或注解来配置映射信息,从而将 POJO (Plain Old Java Objects, 普通的 Java 对象) 映射为数据库中的记录。Mapper 接口中的每个方法都表示一条映射语句。

MyBatis的优势

  • 灵活性: MyBatis 支持自定义 SQL 语句,这对数据库操作的灵活性提供了强有力的支持。
  • 性能: MyBatis 的性能优于 Hibernate,因为它避免了对象和数据库记录之间的转换,直接操作 SQL。
  • 易于维护: 由于 SQL 语句是静态的,不需要像 Hibernate 那样在运行时解析,使得 MyBatis 更易于维护。
  • 强大的映射能力: MyBatis 提供了丰富的映射功能,可以满足大部分复杂的数据库映射需求。
安装和配置MyBatis官方生成器

下载MyBatis官方生成器插件

MyBatis Generator 插件可以从 Maven 中央仓库下载,或者直接从 GitHub 仓库下载源码并编译。下载或安装完成后,将依赖添加到项目的 pom.xml 文件中如下所示:

<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.7</version>
</dependency>

安装和配置环境

首先,需要配置项目的数据库连接信息。可以在项目的 src/main/resources 目录下创建一个名为 generatorConfig.xml 的文件,该文件用于配置数据库连接信息和生成器的配置。以下是一个基本的 generatorConfig.xml 文件示例:

<generatorConfiguration>
    <classPathEntry location="path/to/jdbc-driver.jar"/>
    <context id="DB2Tables" targetRuntime="MyBatis3">
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mydb"
                        userId="root"
                        password="password">
        </jdbcConnection>
        <javaModelGenerator targetPackage="com.example.model"
                            targetProject="src/main/java">
        </javaModelGenerator>
        <sqlMapGenerator targetPackage="com.example.mapper"
                         targetProject="src/main/java">
        </sqlMapGenerator>
        <javaClientGenerator type="ANNOTATED"
                             targetPackage="com.example.mapper"
                             targetProject="src/main/java">
        </javaClientGenerator>
    </context>
</generatorConfiguration>

生成器的基本配置

generatorConfig.xml 文件中,需要指定生成器需要操作的数据库表。可以使用 <table> 标签来指定需要生成的表名:

<table tableName="user"
       domainObjectName="User"
       enableCountByExample="false"
       enableUpdateByExample="false"
       enableDeleteByExample="false"
       enableSelectByExample="false"
       selectByExampleQueryId="false">
</table>

此配置文件告诉 MyBatis Generator 生成 User 类,并生成相应的 SQL 映射文件和 Java 客户端。

生成器的基本用法

生成器的工作原理

MyBatis Generator 读取配置文件 generatorConfig.xml,解析其中定义的数据库表信息,并使用这些信息生成相应的 SQL 映射文件和 Java 实体类。生成器会根据配置文件中的定义生成 CRUD 操作的 SQL 语句。

创建配置文件

创建一个 XML 文件,例如 generatorConfig.xml,并在其中定义数据库连接信息和需要生成的表信息。以下是一个完整的 generatorConfig.xml 文件示例:

<generatorConfiguration>
    <classPathEntry location="path/to/mysql-connector-java-5.1.47.jar"/>
    <context id="DB2Tables" targetRuntime="MyBatis3">
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mydb"
                        userId="root"
                        password="password">
        </jdbcConnection>
        <javaModelGenerator targetPackage="com.example.model"
                            targetProject="src/main/java">
        </javaModelGenerator>
        <sqlMapGenerator targetPackage="com.example.mapper"
                         targetProject="src/main/java">
        </sqlMapGenerator>
        <javaClientGenerator type="ANNOTATED"
                             targetPackage="com.example.mapper"
                             targetProject="src/main/java">
        </javaClientGenerator>
        <table tableName="user"
               domainObjectName="User"
               enableCountByExample="false"
               enableUpdateByExample="false"
               enableDeleteByExample="false"
               enableSelectByExample="false"
               selectByExampleQueryId="false">
        </table>
    </context>
</generatorConfiguration>

生成SQL映射文件和Java代码

生成 SQL 映射文件和 Java 代码的过程需要通过 MyBatis Generator 命令来实现。在命令行中运行以下命令:

mvn mybatis-generator:generate

运行上述命令后,MyBatis Generator 将根据配置文件生成相应的 Java 实体类和 SQL 映射文件。

自定义生成器配置

修改生成器的配置参数

可以根据需要修改 generatorConfig.xml 文件中的配置参数。例如,可以修改生成的类的包名,以适应项目结构:

<javaModelGenerator targetPackage="com.example.model"
                    targetProject="src/main/java">
</javaModelGenerator>

自定义生成的代码结构

可以通过 <table> 标签中的各种配置参数来自定义生成的代码结构。例如,可以指定是否生成示例查询:

<table tableName="user"
       domainObjectName="User"
       enableCountByExample="true"
       enableUpdateByExample="true"
       enableDeleteByExample="true"
       enableSelectByExample="true"
       selectByExampleQueryId="true">
</table>

常见配置项详解

  • tableName: 必须配置的属性,表示数据库表名。
  • domainObjectName: 表示生成的 Java 类名。
  • enableCountByExample: 是否生成 countByExample 方法。
  • enableUpdateByExample: 是否生成 updateByExample 方法。
  • enableDeleteByExample: 是否生成 deleteByExample 方法。
  • enableSelectByExample: 是否生成 selectByExample 方法。
  • selectByExampleQueryId: 是否为 selectByExample 方法生成查询结果 ID。
生成器的高级功能

生成关联查询

MyBatis Generator 支持生成关联查询。可以在 <table> 标签中配置关联查询:

<table tableName="user"
       domainObjectName="User"
       enableCountByExample="true"
       enableUpdateByExample="true"
       enableDeleteByExample="true"
       enableSelectByExample="true"
       selectByExampleQueryId="true">
    <association property="address" javaType="Address" column="address_id">
        <select selectProperty="address" column="id"/>
    </association>
</table>

上述配置将生成关联查询代码,使得 User 类可以关联 Address 类。下面是具体的 Java 代码示例:

// User.java
public class User {
    private int id;
    private String name;
    private Address address;

    // getters and setters
}

// Address.java
public class Address {
    private int id;
    private String location;

    // getters and setters
}

生成缓存配置

MyBatis Generator 支持生成缓存配置,可以在 <table> 标签中配置缓存策略:

<table tableName="user"
       domainObjectName="User"
       enableCountByExample="true"
       enableUpdateByExample="true"
       enableDeleteByExample="true"
       enableSelectByExample="true"
       selectByExampleQueryId="true">
    <cache/>
</table>

上述配置将生成缓存配置,使得 User 类可以使用缓存机制。

结合Spring Boot使用生成器

可以在 Spring Boot 项目中使用 MyBatis Generator。首先需要在 pom.xml 文件中添加必要的依赖:

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.3</version>
</dependency>

然后在 application.ymlapplication.properties 文件中配置数据库连接信息:

spring:
  database:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: password

在 Spring Boot 项目中使用 MyBatis Generator 时,可以使用 Spring Boot 的 CommandLineRunner 接口来运行生成器:

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 org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@Component
public class MyBatisGeneratorRunner implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        List<String> warnings = new ArrayList<>();
        boolean overwrite = true;
        String configFilePath = "src/main/resources/generatorConfig.xml";
        try {
            ConfigurationParser cp = new ConfigurationParser(warnings);
            Configuration config = cp.parseConfiguration(configFilePath);
            DefaultShellCallback callback = new DefaultShellCallback(Bo
            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
            myBatisGenerator.generate(null);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}
常见问题与解决方法

生成器运行时的常见错误

  • 找不到数据库驱动: 确保已经将数据库驱动 JAR 文件添加到了 classPathEntry 标签中。
  • 数据库连接失败: 检查数据库 URL 和用户名、密码是否正确。
  • 生成代码失败: 确保配置文件中的 tableNamedomainObjectName 等属性配置正确。

示例错误代码

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.IOException;
import java.util.ArrayList;
import java.util.List;

public class MyBatisGeneratorRunner {
    public static void main(String[] args) {
        List<String> warnings = new ArrayList<>();
        boolean overwrite = true;
        String configFilePath = "src/main/resources/generatorConfig.xml";
        try {
            ConfigurationParser cp = new ConfigurationParser(warnings);
            Configuration config = cp.parseConfiguration(configFilePath);
            DefaultShellCallback callback = new DefaultShellCallback(overwrite);
            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
            myBatisGenerator.generate(null);
        } catch (Exception e) {
            e.printStackTrace();
            // 处理错误
        }
    }
}

解决配置问题的技巧

  • 检查配置文件: 确保 generatorConfig.xml 文件中所有配置正确无误。
  • 调试日志: 启用 MyBatis Generator 的调试日志,便于发现和解决问题。

代码生成最佳实践

  • 使用一致的命名规范: 确保生成的类名、方法名等遵循项目命名规范。
  • 使用注释: 在生成的代码中添加必要的注释,便于理解和维护。
  • 定期更新生成器: 保持 MyBatis Generator 版本的更新,确保能够利用最新的功能和修复。

通过以上内容,您应该能够顺利地使用 MyBatis Generator 生成所需的 SQL 映射文件和 Java 代码,并根据项目需求进行自定义配置。通过实践示例,您可以更好地理解 MyBatis Generator 的工作原理,并提高开发效率。如果您需要进一步了解 MyBatis Generator 的详细用法,可以参考官方文档。

点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消