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

Mybatis官方生成器教程:初学者快速入门指南

标签:
Java SSM 数据库
概述

Mybatis官方生成器教程详细介绍了Mybatis Generator的安装、配置及使用方法,帮助开发者自动生成Mybatis相关的Java实体类、Mapper接口和XML映射文件,提高开发效率。文章还涵盖了Mybatis Generator的高级应用,如自定义模板和配置优化等内容。

Mybatis简介

Mybatis 是一个优秀的持久层框架,它支持自定义 SQL 查询,存储过程以及高级映射。它通过使用简单的 XML 或注解进行配置和原始类型映射,将接口和 Java 的 POJO(Plain Old Java Object,普通的 Java 对象)映射成数据库中的记录。Mybatis 与 Mybatis Plus 作为持久层框架,各有优势,Mybatis Plus 作为 Mybatis 的增强工具,在 Mybatis 的基础上提供了更多便捷的功能,但本文主要讲解的是 Mybatis 本身。

Mybatis的基本概念

Mybatis 是基于 Java 的持久层框架,主要用于简化 Java 代码与数据库的交互。它通过 XML 配置文件或注解来配置 POJO 与 SQL 之间的映射关系。Mybatis 支持自定义 SQL 语句、存储过程以及高级映射,能够适应复杂的数据库操作场景。Mybatis 的核心组件包括:

  • SqlSessionFactory:SqlSessionFactory 是 Mybatis 的工厂类,用于创建 SqlSession 对象。
  • SqlSession:SqlSession 提供了执行 SQL 语句、提交事务等常用功能的接口。
  • Mapper 接口:Mapper 接口是 Mybatis 用于定义 SQL 语句的接口,通过实现 Mapper 接口,可以调用对应的 SQL 语句。
  • POJO:POJO(Plain Old Java Object)是 Mybatis 中用于封装数据库记录的 Java 对象。
  • XML 映射文件:XML 映射文件用于指定 POJO 与 SQL 语句之间的映射关系。
  • Configuration:Configuration 类包含了 Mybatis 的各种配置信息,如数据库连接信息、映射文件路径等。
Mybatis的优势和应用场景

Mybatis 有以下几个优势:

  • 灵活性:Mybatis 提供了非常灵活的 SQL 语句编写方式,可以根据具体需求编写复杂 SQL 语句,而不需要使用繁琐的对象关系映射。
  • 性能:Mybatis 使用了动态 SQL 机制,可以针对不同的条件生成不同的 SQL 语句,减少了数据库的查询次数,提高了性能。
  • 轻量级:Mybatis 体积小巧,易于部署和使用,不需要复杂的配置,降低了学习和使用难度。
  • 支持复杂查询:Mybatis 支持存储过程和高级映射,可以满足复杂查询需求。

Mybatis的应用场景

  • 复杂查询:在存在复杂业务逻辑和查询情况下,Mybatis 提供了灵活的 SQL 语句编写方式,支持存储过程和高级映射,可以满足复杂查询需求。
  • 性能要求较高:由于 Mybatis 使用了动态 SQL 机制,可以针对不同的条件生成不同的 SQL 语句,减少了数据库的查询次数,提高了性能。
  • 灵活性要求较高:Mybatis 提供了非常灵活的 SQL 语句编写方式,可以根据具体需求编写复杂 SQL 语句,而不需要使用繁琐的对象关系映射。
  • 轻量级应用:Mybatis 体积小巧,易于部署和使用,不需要复杂的配置,降低了学习和使用难度。
安装与配置Mybatis
下载并安装Mybatis

Mybatis 的安装非常简单,可以通过 Maven 或者直接下载 Mybatis 的 jar 包来安装。推荐使用 Maven 来管理 Mybatis,因为 Maven 可以自动处理依赖关系,管理版本。

Maven 安装

在项目的 pom.xml 文件中添加以下依赖:

<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.2</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.12</version>
    </dependency>
</dependencies>

手动下载安装

Mybatis 的 jar 包可以从其官网下载,下载后将 jar 包添加到项目的 classpath 中。

配置Mybatis环境

配置 Mybatis 环境主要涉及到数据库连接和 Mybatis 配置文件的编写。

数据库连接配置

创建一个数据库连接文件,例如 src/main/resources/config.properties,内容如下:

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydatabase
jdbc.username=root
jdbc.password=root

Mybatis配置文件

创建一个 Mybatis 配置文件,例如 src/main/resources/mybatis-config.xml,内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <typeAliases>
        <typeAlias alias="User" type="com.example.model.User"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/example/mapper/UserMapper.xml"/>
    </mappers>
</configuration>
Mybatis官方生成器介绍
什么是Mybatis Generator

Mybatis Generator 是一个代码生成工具,可以自动生成 Mybatis 的 Java 实体类(POJO)、Mapper 接口和对应的 XML 映射文件。它可以根据数据库表结构自动生成这些代码,减少了手动编写代码的工作量,提高了开发效率。

Mybatis Generator的优势及其作用

Mybatis Generator 的优势包括:

  • 自动化:Mybatis Generator 可以自动根据数据库表结构生成 Mybatis 的相关代码,减少了手动编写代码的工作量。
  • 一致性:生成的代码保持一致的风格和规范,减少了由于手工编写代码而导致的错误。
  • 灵活性:Mybatis Generator 支持各种配置选项,可以根据需求自定义生成的代码。
  • 维护性:生成的代码可以方便地进行维护和更新,如果数据库表结构发生变化,可以重新生成代码。

Mybatis Generator 的作用:

  • 代码生成:根据数据库表结构自动生成 Mybatis 的 Java 实体类(POJO)、Mapper 接口和对应的 XML 映射文件。
  • 数据库表结构变更:如果数据库表结构发生变化,可以重新生成代码,保持代码与数据库表结构的一致性。
  • 减少错误:自动生成的代码减少了由于手工编写代码而导致的错误,提高了开发效率。
Mybatis Generator的安装与配置
下载并安装Mybatis Generator

Mybatis Generator 可以通过 Maven 或者直接下载 jar 包来安装。推荐使用 Maven 来管理 Mybatis Generator,因为 Maven 可以自动处理依赖关系,管理版本。

Maven 安装

在项目的 pom.xml 文件中添加以下依赖:

<dependencies>
    <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.12</version>
    </dependency>
</dependencies>

手动下载安装

Mybatis Generator 的 jar 包可以从其官网下载,下载后将 jar 包添加到项目的 classpath 中。

配置Mybatis Generator

配置 Mybatis Generator 主要涉及到配置文件的编写。

配置文件

创建一个 Mybatis Generator 配置文件,例如 src/main/resources/mybatis-generator.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">
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mydatabase"
                        userId="root"
                        password="root"/>
        <javaModelGenerator targetPackage="com.example.model"
                            targetProject="src/main/java"/>
        <sqlMapGenerator targetPackage="com.example.mapper"
                         targetProject="src/main/resources"/>
        <javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.example.mapper"
                             targetProject="src/main/java"/>
        <table tableName="user" domainObjectName="User" enableCountByExample="false"
               enableUpdateByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" selectByExampleQueryId="false">
            <columnOverride column="email" javaType="String"/>
        </table>
    </context>
</generatorConfiguration>
使用Mybatis Generator生成代码
生成POJO、Mapper接口、XML映射文件等

Mybatis Generator 可以生成 Java 实体类(POJO)、Mapper 接口和对应的 XML 映射文件。

生成POJO

Mybatis Generator 会根据数据库表结构自动生成 Java 实体类(POJO)。例如,对于数据库表 user,生成的 POJO 类如下:

package com.example.model;

public class User {
    private Integer id;
    private String name;
    private String email;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

生成Mapper接口

Mybatis Generator 会根据数据库表结构自动生成 Mapper 接口。例如,对于数据库表 user,生成的 Mapper 接口如下:

package com.example.mapper;

import com.example.model.User;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.ResultHandler;
import java.util.List;

public interface UserMapper {
    int deleteByPrimaryKey(Integer id);
    int insert(User record);
    int insertSelective(User record);
    User selectByPrimaryKey(Integer id);
    int updateByPrimaryKeySelective(@Param("record") User record);
    int updateByPrimaryKey(@Param("record") User record);
    List<User> selectAllUsers(ResultHandler resultHandler);
}

生成XML映射文件

Mybatis Generator 会根据数据库表结构自动生成对应的 XML 映射文件。例如,对于数据库表 user,生成的 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">
    <resultMap id="BaseResultMap" type="com.example.model.User">
        <result column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="email" property="email"/>
    </resultMap>
    <sql id="Base_Column_List">
        id, name, email
    </sql>
    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
        SELECT
        <if test="selective">
            <if test="columns != null and columns.length > 0">
                ${selectColumns}, id
            </if>
            <if test="columns == null or columns.length == 0">
                id, name, email
            </if>
        </if>
        <if test="notSelective">
            id, name, email
        </if>
        FROM user WHERE id = #{id,jdbcType=INTEGER}
    </select>
    <select id="selectAllUsers" resultMap="BaseResultMap">
        SELECT
        <if test="columns != null and columns.length > 0">
            ${selectColumns}, id
        </if>
        <if test="columns == null or columns.length == 0">
            id, name, email
        </if>
        FROM user
    </select>
    <insert id="insert" parameterType="com.example.model.User">
        INSERT INTO user (id, name, email)
        VALUES (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR})
    </insert>
    <update id="updateByPrimaryKeySelective" parameterType="com.example.model.User">
        UPDATE user SET
        <if test="name != null">
            name = #{name,jdbcType=VARCHAR},
        </if>
        <if test="email != null">
            email = #{email,jdbcType=VARCHAR},
        </if>
        WHERE id = #{id,jdbcType=INTEGER}
    </update>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
        DELETE FROM user WHERE id = #{id,jdbcType=INTEGER}
    </delete>
</mapper>
配置生成规则

Mybatis Generator 支持多种配置选项,例如表名、列名、包名等。

表名

可以在配置文件中指定表名,例如:

<table tableName="user" domainObjectName="User" enableCountByExample="false"
       enableUpdateByExample="false" enableDeleteByExample="false"
       enableSelectByExample="false" selectByExampleQueryId="false">
    <columnOverride column="email" javaType="String"/>
</table>

列名

可以在配置文件中指定列名,例如:

<table tableName="user" domainObjectName="User" enableCountByExample="false"
       enableUpdateByExample="false" enableDeleteByExample="false"
       enableSelectByExample="false" selectByExampleQueryId="false">
    <columnOverride column="email" javaType="String"/>
</table>
生成过程中的常见问题及解决方法

生成失败

如果生成过程中出现错误,可以检查数据库连接信息是否正确,数据库表结构是否符合生成规则。

生成的代码不一致

如果生成的代码与预期不符,可以调整配置文件中的选项,例如修改表名、列名等。

Mybatis Generator的高级应用
自定义模板

Mybatis Generator 支持自定义模板,可以通过模板来自定义生成的代码。模板文件可以指定生成的 Java 类、Mapper 接口和 XML 映射文件的具体内容。

示例:自定义Java类模板

可以在配置文件中指定自定义的 Java 类模板文件路径,例如:

<javaModelGenerator targetPackage="com.example.model"
                     targetProject="src/main/java">
    <property name="enableSubPackages" value="true"/>
    <property name="trimStrings" value="true"/>
    <property name="modelType" value="flat"/>
    <property name="enableCache" value="true"/>
    <property name="templateLocation" value="src/main/resources/templates"/>
</javaModelGenerator>

示例:自定义Mapper接口模板

可以在配置文件中指定自定义的 Mapper 接口模板文件路径,例如:

<javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.example.mapper"
                      targetProject="src/main/java">
    <property name="enableSubPackages" value="true"/>
    <property name="templateLocation" value="src/main/resources/templates"/>
</javaClientGenerator>

示例:自定义XML映射文件模板

可以在配置文件中指定自定义的 XML 映射文件模板文件路径,例如:

<sqlMapGenerator targetPackage="com.example.mapper"
                 targetProject="src/main/resources">
    <property name="enableSubPackages" value="true"/>
    <property name="templateLocation" value="src/main/resources/templates"/>
</sqlMapGenerator>
生成器配置的优化

Mybatis Generator 支持多种配置选项,可以通过调整配置文件中的选项来优化代码生成的过程。

生成子包

可以通过配置文件中的 enableSubPackages 选项来生成子包,例如:

<javaModelGenerator targetPackage="com.example.model"
                     targetProject="src/main/java">
    <property name="enableSubPackages" value="true"/>
</javaModelGenerator>

生成缓存

可以通过配置文件中的 enableCache 选项来生成缓存,例如:

<javaModelGenerator targetPackage="com.example.model"
                     targetProject="src/main/java">
    <property name="enableCache" value="true"/>
</javaModelGenerator>

生成可选的Mapper方法

可以通过配置文件中的 enableSelectByExampleenableInsertByExampleenableUpdateByExampleenableDeleteByExample 选项来生成可选的 Mapper 方法,例如:

<table tableName="user" domainObjectName="User" enableCountByExample="false"
       enableUpdateByExample="false" enableDeleteByExample="false"
       enableSelectByExample="false" selectByExampleQueryId="false">
</table>
维护和更新生成的代码

如果数据库表结构发生变化,可以重新生成代码。生成的代码可以方便地进行维护和更新。

维护代码

可以通过修改配置文件中的选项来维护生成的代码,例如修改表名、列名等。

更新代码

如果数据库表结构发生变化,可以重新生成代码,保持代码与数据库表结构的一致性。

通过以上介绍,可以了解到 Mybatis Generator 是一个非常强大的代码生成工具,可以帮助开发人员快速生成 Mybatis 的相关代码,提高开发效率。

点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消