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

Mybatis官方生成器教程:入门与实践指南

标签:
Java SSM 数据库
概述

本文提供了详细的Mybatis官方生成器教程,包括MBG的使用场景、准备工作、配置和代码生成等步骤。通过本文,读者可以快速掌握Mybatis Generator的入门知识,并实际应用生成所需的Java实体类和Mapper文件。文中还涵盖了常见问题及解决方法,帮助开发者在使用过程中遇到问题时能够及时解决。

Mybatis官方生成器教程:入门与实践指南
Mybatis生成器简介

Mybatis生成器的作用

Mybatis Generator (MBG) 是一个强大的工具,用于自动生成 Mybatis 的 Java 实体类以及对应的 Mapper 接口和 XML 映射文件。通过使用 MBG,开发人员可以避免手动编写这些样板代码,从而节省时间并减少错误。

Mybatis生成器的适用场景

MBG 主要适用于以下几个场景:

  1. 需要频繁操作数据库:对于数据库操作频繁的项目,使用 MBG 可以显著提高开发效率。
  2. 需要生成大量代码:对于包含大量表的数据库,手动编写代码会非常耗时。
  3. 一致性要求高:保证代码的一致性,减少人工错误。
  4. 快速原型开发:对于快速原型开发,MBG 可以快速生成必要的代码。
准备工作

安装配置Mybatis环境

在开始使用 Mybatis Generator 之前,需要确保 Mybatis 环境已经正确配置。以下是配置步骤:

  1. 添加依赖
    确保项目中添加了 Mybatis 和 Mybatis Generator 的依赖。例如,如果你使用 Maven 作为构建工具,可以在 pom.xml 文件中添加以下依赖:

    <dependencies>
       <!-- Mybatis核心依赖 -->
       <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis</artifactId>
           <version>3.5.6</version>
       </dependency>
       <!-- Mybatis Generator 依赖 -->
       <dependency>
           <groupId>org.mybatis.generator</groupId>
           <artifactId>mybatis-generator-core</artifactId>
           <version>1.3.7</version>
       </dependency>
    </dependencies>
  2. 添加数据库驱动依赖
    根据你使用的数据库(如 MySQL、Oracle 等),添加相应的驱动依赖。例如,使用 MySQL 驱动:

    <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>8.0.23</version>
    </dependency>
  3. 创建数据库
    在使用 MBG 之前,需要事先准备好数据库。例如,创建一个名为 mydatabase 的数据库:

    CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  4. 准备数据库表结构
    为了生成 Mybatis 所需的代码,需要事先准备好数据库表结构。例如,创建一个简单的 User 表:

    CREATE TABLE `user` (
       `id` int(11) NOT NULL AUTO_INCREMENT,
       `username` varchar(255) DEFAULT NULL,
       `email` varchar(255) DEFAULT NULL,
       PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
配置Mybatis生成器

编写生成器配置文件

生成器配置文件(generatorConfig.xml)定义了生成器的行为和参数。以下是配置文件的基本结构,包括更多配置项的示例:

<generatorConfiguration>
    <context id="default" targetRuntime="MyBatis3" defaultModelType="flat">
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <databaseConfiguration type="MYSQL">
            <property name="useCatalogForCatalog" value="false"/>
            <property name="useSchemaForCatalog" value="true"/>
        </databaseConfiguration>
        <classPathEntry location="lib/mysql-connector-java-8.0.23.jar"/>
        <table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>
        <table tableName="category" domainObjectName="Category" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>
    </context>
</generatorConfiguration>

配置数据库连接信息

generatorConfig.xml 文件中,需要配置数据库连接信息。具体配置如下:

<jdbcConnection driverType="MYSQL" connectionURL="jdbc:mysql://localhost:3306/mydatabase" userId="root" password="password"/>

property 设置的具体作用如下:

  • useCatalogForCataloguseSchemaForCatalog 这些属性用于控制数据库的目录和模式设置,根据数据库的具体要求进行配置。

配置表映射规则

配置表映射规则可以帮助生成器根据数据库表生成相应的 Java 类和 Mapper 文件。例如:

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

在这个例子中,tableName 指定了数据库表名,domainObjectName 指定了生成的 Java 类的名字。enableCountByExampleenableUpdateByExampleenableDeleteByExampleenableSelectByExample 属性用于控制是否生成特定的示例查询和更新方法。selectByExampleQueryId 用于控制查询 ID 的生成。

生成代码

使用命令行生成代码

生成器可以通过命令行工具生成代码。使用以下命令:

java -jar mybatis-generator-core-1.3.7.jar -configfile generatorConfig.xml -overwrite

这个命令会读取 generatorConfig.xml 文件中的配置信息并生成相应的代码。

检查生成的代码

生成器会根据配置文件生成对应的 Java 类、Mapper 接口和 XML 映射文件。例如,生成的 UserMapper.javaUserMapper.xml 文件内容如下:

// UserMapper.java
public interface UserMapper {
    int deleteByPrimaryKey(Integer id);
    int insert(User record);
    int insertSelective(User record);
    User selectByPrimaryKey(Integer id);
    int updateByPrimaryKeySelective(User record);
    int updateByPrimaryKey(User record);
}
<!-- UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper">
    <resultMap id="BaseResultMap" type="com.example.model.User">
        <id column="id" property="id" jdbcType="INTEGER"/>
        <result column="username" property="username" jdbcType="VARCHAR"/>
        <result column="email" property="email" jdbcType="VARCHAR"/>
    </resultMap>
    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
        SELECT
            id,
            username,
            email
        FROM
            user
        WHERE
            id = #{id,jdbcType=INTEGER}
    </select>
</mapper>
使用生成的代码

调整Mapper接口

生成的 Mapper 接口可能需要根据实际需求进行调整。例如,添加或修改接口方法:

public interface UserMapper {
    int deleteByPrimaryKey(Integer id);
    int insert(User record);
    int insertSelective(User record);
    User selectByPrimaryKey(Integer id);
    int updateByPrimaryKeySelective(User record);
    int updateByPrimaryKey(User record);

    // 自定义方法
    List<User> selectAllUsers();
}

使用Mapper XML文件

生成的 XML 文件定义了具体的 SQL 查询语句。可以根据实际需求调整这些 SQL 语句,例如完整的 UserMapper.xml 文件内容如下:

<mapper namespace="com.example.mapper.UserMapper">
    <resultMap id="BaseResultMap" type="com.example.model.User">
        <id column="id" property="id" jdbcType="INTEGER"/>
        <result column="username" property="username" jdbcType="VARCHAR"/>
        <result column="email" property="email" jdbcType="VARCHAR"/>
    </resultMap>
    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
        SELECT
            id,
            username,
            email
        FROM
            user
        WHERE
            id = #{id,jdbcType=INTEGER}
    </select>

    <!-- 自定义查询 -->
    <select id="selectAllUsers" resultMap="BaseResultMap">
        SELECT
            id,
            username,
            email
        FROM
            user
    </select>
</mapper>
常见问题与解决

生成器配置常见错误

  1. 配置文件路径错误:确保 generatorConfig.xml 文件路径正确。
  2. 数据库连接信息错误:确保数据库连接信息正确,包括 IP 地址、端口号、数据库名、用户名和密码。
  3. 依赖加载问题:确保所有依赖都正确添加到项目中。

代码生成后的问题排查

  1. 生成的代码与预期不符:检查 generatorConfig.xml 文件中的配置是否正确。
  2. 生成的代码无法编译:确保生成的代码与项目中的其他代码兼容。
  3. 生成的 SQL 语句错误:检查生成的 SQL 语句是否正确,可以手动编写 SQL 进行验证。
点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消