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

Mybatis官方生成器入门教程

标签:
Java SSM 数据库
概述

MyBatis是一个优秀的持久层框架,支持自定义SQL语句和存储过程,MyBatis Generator(简称MBG)能够根据数据库表自动生成MyBatis的XML映射文件和Java接口文件,极大地提高开发效率,减少手动编写SQL语句和映射文件的工作量,接下来将详细介绍MyBatis官方生成器入门的相关内容。

MyBatis简介

MyBatis是什么

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

MyBatis的优势

MyBatis提供了强大的持久层支持,具有以下优势:

  1. 灵活性:MyBatis允许开发者通过SQL语句进行数据库操作,并且支持存储过程。
  2. 性能:MyBatis在获取性能方面表现优异,提供了诸如延迟加载、缓存等机制。
  3. 易用性:MyBatis的配置简单,使用方便,易于上手。
  4. 轻量级:MyBatis体积小,易于部署,对任何规模的项目都适用。
  5. 可扩展性:MyBatis提供了插件机制,可以方便地扩展其功能。

MyBatis的基本概念

MyBatis的核心组件包括:

  1. SqlSessionFactory:通过SqlSessionFactory创建SqlSession。
  2. SqlSession:执行数据持久化操作的会话接口。
  3. Configuration:配置信息对象,存储配置文件中的信息。
  4. Mapper:映射器接口,用于映射SQL语句到Java方法。
  5. Executor:执行器,负责执行SQL语句。
  6. Mapper XML文件:定义了SQL语句和映射规则。
MyBatis官方生成器简介

官方生成器的作用

MyBatis Generator(简称MBG)是一个开源项目,其主要作用是根据数据库表自动生成MyBatis的XML映射文件和Java接口文件。MBG能够极大地提高开发效率,简化开发流程。通过MBG生成的代码能够直接用于项目开发,减少了手动编写SQL语句和映射文件的工作量。

官方生成器的优势

MBG的优势体现在以下几个方面:

  1. 自动化生成:能够自动根据数据库表结构生成相应的MyBatis代码。
  2. 减少错误:减少手动编写SQL语句和映射文件时可能出现的错误。
  3. 节省时间:节省了开发人员手动编写代码的时间,加快了开发进度。
  4. 可定制性:支持自定义配置,满足不同项目需求。

官方生成器的基本使用流程

MBG的基本使用流程包括以下几个步骤:

  1. 数据库表设计:设计数据库表结构。
  2. 配置MBG:配置MBG的配置文件,指定数据库连接信息、输出目录等。
  3. 运行MBG:运行MBG生成器,生成MyBatis代码。
  4. 代码集成:将生成的代码集成到项目中,进行相应的开发工作。
安装与环境搭建

开发环境准备

开发环境的准备包括以下几个步骤:

  1. 安装Java开发环境:确保已经安装了JDK,可以使用java -version命令验证。
  2. 安装IDE:推荐使用IntelliJ IDEA或Eclipse。
  3. 安装数据库:安装MySQL或其他支持的数据库系统。确保数据库已经启动。
  4. 数据库连接工具:可以使用Navicat、SQLyog等工具连接数据库。

Maven项目的搭建

创建一个新的Maven项目,使用mvn archetype:generate命令来创建。具体的命令如下:

mvn archetype:generate -DgroupId=com.example -DartifactId=mybatis-generator -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

创建完成后,进入项目目录:

cd mybatis-generator

MyBatis Generator插件的引入

在项目的pom.xml文件中添加MyBatis Generator的依赖:

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

<build>
    <finalName>mybatis-generator</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.3.7</version>
            <configuration>
                <configurationFile>src/main/resources/mybatis-generator.xml</configurationFile>
                <overwrite>true</overwrite>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>8.0.26</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>
MyBatis官方生成器的基本配置

配置文件详解

MBG的配置文件mybatis-generator.xml包含多个配置元素,常见的有:

  1. context:配置生成器的全局配置。
  2. jdbcConnection:配置数据库连接信息。
  3. javaModelGenerator:配置Java模型生成器。
  4. sqlMapGenerator:配置SQL映射文件生成器。
  5. javaClientGenerator:配置Java客户端生成器。

以下是一个基本的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_1_0.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?useSSL=false&useUnicode=true&characterEncoding=UTF-8"
                        userId="root"
                        password="root"/>
        <javaModelGenerator targetPackage="com.example.model"
                            targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaModelGenerator>
        <sqlMapGenerator targetPackage="com.example.mapper"
                         targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.example.mapper"
                             targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <table tableName="mytable" domainObjectName="MyTable"
               enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false">
        </table>
    </context>
</generatorConfiguration>
  • context:用于配置生成器的全局参数,如idtargetRuntime
  • commentGenerator:配置生成器的注释生成规则。
  • jdbcConnection:配置数据库连接信息,如驱动类、连接URL、用户ID和密码。
  • javaModelGenerator:配置生成Java模型类的参数,包括目标包名和项目路径。
  • sqlMapGenerator:配置生成SQL映射文件的参数,包括目标包名和项目路径。
  • javaClientGenerator:配置生成Java客户端接口的参数,包括类型、目标包名和项目路径。
  • table:配置具体的表映射规则,如表名和生成的Java类名。

表和字段的映射

在配置文件中,可以通过<table>元素定义表的映射规则。例如:

<table tableName="mytable" domainObjectName="MyTable"
       enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"
       selectByExampleQueryId="false">
</table>

tableName属性设置数据库表名,domainObjectName设置生成的Java类名。

自动生成的代码结构

MBG生成的代码通常包括以下几个部分:

  1. Java模型类com.example.model.MyTable.java,对应数据库表结构的Java类。
  2. SQL映射文件com/example/mapper/MyTableMapper.xml,包含SQL语句的XML文件。
  3. Java接口com.example.mapper.MyTableMapper.java,提供数据库操作的接口方法。
生成器的使用实例

创建数据库表

首先创建一个数据库表mytable,包含以下字段:

CREATE TABLE `mytable` (
    `id` INT NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(100) NOT NULL,
    `age` INT NOT NULL,
    `address` VARCHAR(255),
    PRIMARY KEY (`id`)
);

配置生成器参数

mybatis-generator.xml文件中配置生成器参数,确保数据库连接信息和表名正确:

<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?useSSL=false&useUnicode=true&characterEncoding=UTF-8"
                        userId="root"
                        password="root"/>
        <javaModelGenerator targetPackage="com.example.model"
                            targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaModelGenerator>
        <sqlMapGenerator targetPackage="com.example.mapper"
                         targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.example.mapper"
                             targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <table tableName="mytable" domainObjectName="MyTable"
               enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false">
        </table>
    </context>
</generatorConfiguration>
  • tableName:指定需要生成代码的数据库表名。
  • domainObjectName:指定生成的Java类名。
  • enableCountByExampleenableUpdateByExampleenableDeleteByExampleenableSelectByExample:这些属性控制是否生成相应的查询方法。

自动生成MyBatis相关代码

运行mvn mybatis-generator:generate命令生成MyBatis相关代码:

mvn mybatis-generator:generate

生成完成后,项目目录中会自动生成对应的Java类、XML映射文件和接口文件,例如:

  • Java模型类com.example.model.MyTable.java
  • SQL映射文件com/example/mapper/MyTableMapper.xml
  • Java接口com.example.mapper.MyTableMapper.java
常见问题及解决方法

常见配置错误及解决办法

  1. 数据库连接失败

    • 检查数据库连接信息是否正确。
    • 确保数据库服务已经启动。
    • 检查数据库驱动版本是否兼容。
  2. 表名称错误

    • 确保在<table>元素中指定的表名称正确。
    • 检查数据库中是否存在该表。
  3. 生成器配置文件错误
    • 检查XML配置文件中的语法是否正确。
    • 确保所有必要的属性都已设置。

生成代码的常见问题及解决办法

  1. Java类生成错误

    • 确保Java生成器配置正确,例如<javaModelGenerator>
    • 检查生成的Java类是否有编译错误。
  2. XML映射文件错误

    • 检查XML映射文件是否正确生成。
    • 确保XML映射文件路径正确。
  3. Java接口生成错误
    • 确保Java客户端生成器配置正确,例如<javaClientGenerator>
    • 检查生成的Java接口是否有编译错误。

进阶使用技巧

  1. 自定义代码生成

    • 在配置文件中添加自定义属性,如<property>元素。
    • 使用<table>元素中的自定义属性,例如domainObjectName
  2. 多表生成

    • 在配置文件中添加多个<table>元素,为每个表生成对应的代码。
  3. 配置模板
    • 使用自定义模板生成代码,提高代码的灵活性和可维护性。

通过以上步骤,可以快速地使用MyBatis Generator生成MyBatis相关代码,提高开发效率。

点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消