亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Mybatis代碼生成器項目實戰:從零開始的詳細教程

標簽:
Java SSM Spring

本文详细介绍了Mybatis代码生成器项目实战,包括代码生成器的作用、工作原理、准备工作及生成代码后的项目整合与调试,帮助开发者快速掌握Mybatis代码生成器的使用方法。

Mybatis代码生成器简介

Mybatis简介

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

代码生成器的作用和优势

代码生成器的作用主要在于减少开发者手动编写Mapper接口、实体类和SQL语句的工作量。通过代码生成器,开发者只需要配置好相应的参数,就可以生成所需的代码,从而提高了开发效率和代码的一致性。代码生成器的优势还包括:

  • 减少人为错误:手动编写代码时,容易出现拼写错误、类型错误等问题。代码生成器可以减少这些错误。
  • 提高开发效率:代码生成器可以在短时间内生成大量的代码,减少了手动编写代码的时间。
  • 维护一致性:通过代码生成器生成的代码遵循一定的规范,有利于维护代码的一致性和可读性。

Mybatis代码生成器的工作原理

Mybatis代码生成器的工作原理主要是通过读取数据库中的表结构信息,然后根据这些信息生成相应的Mapper接口、实体类和SQL语句。具体步骤如下:

  1. 连接数据库:代码生成器首先需要连接到指定的数据库。
  2. 获取表信息:连接成功后,代码生成器会获取数据库中指定表的结构信息。
  3. 生成代码:根据获取到的表信息,代码生成器会生成相应的Mapper接口、实体类和SQL语句。
  4. 输出代码:代码生成器将生成的代码输出到指定的位置。

代码生成器的配置文件通常包含以下内容:

  • 数据库连接信息:包括数据库的URL、用户名和密码等。
  • 表信息:包括生成代码的表名、生成的包名等。
  • 生成的代码类型:包括Mapper接口、实体类、SQL语句等。
准备工作

环境搭建

IDE

推荐使用IntelliJ IDEA或Eclipse作为开发环境,这两个IDE都支持Mybatis和Java开发。本文以IntelliJ IDEA为例进行说明,具体步骤如下:

  1. 下载并安装IntelliJ IDEA。
  2. 打开IntelliJ IDEA,创建一个Java项目,选择项目的名称和位置。
  3. 在项目中创建一个Maven工程,配置pom.xml文件,引入Mybatis的相关依赖。以下为pom.xml文件中的依赖配置:
<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.6</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.23</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-core</artifactId>
        <version>1.3.7</version>
    </dependency>
</dependencies>

JDK版本

确保使用的JDK版本是8或以上版本,推荐使用JDK 11或17。

数据库准备

  1. 创建数据库和表

首先创建一个测试数据库testdb,然后在该数据库中创建一个测试表user,SQL语句如下:

CREATE DATABASE `testdb` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

USE `testdb`;

CREATE TABLE `user` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `username` VARCHAR(50) NOT NULL,
    `password` VARCHAR(50) NOT NULL,
    `email` VARCHAR(50) DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;
  1. 下载或搭建代码生成器插件

这里以Mybatis Generator插件为例,介绍如何下载和配置Mybatis Generator插件。

  1. 在项目中添加Mybatis Generator的依赖,具体配置已在上述pom.xml中给出。
  2. 创建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_1_0.dtd">
<generatorConfiguration>
    <context id="DB2Tables" targetRuntime="MyBatis3Simple">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
        </commentGenerator>
        <classPathEntry location="mysql-connector-java-8.0.23.jar"/>
        <jdbcConnection driverType="MySQL">
            <property name="connectionURL" value="jdbc:mysql://localhost:3306/testdb"/>
            <property name="driverClass" value="com.mysql.cj.jdbc.Driver"/>
            <property name="password" value="password"/>
            <property name="userId" value="root"/>
        </jdbcConnection>
        <javaModelGenerator targetPackage="com.example.model" targetProject="target/classes">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <sqlMapGenerator targetPackage="com.example.mappers" targetProject="target/classes">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <javaClientGenerator type="ANNOTATED" targetPackage="com.example.mappers" targetProject="target/classes">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
    </context>
</generatorConfiguration>

上述配置文件中,<generatorConfiguration>标签是配置文件的根标签,<context>标签用于配置代码生成器的具体行为,包括数据库连接信息、生成的代码类型等。其中,<jdbcConnection>标签用于配置数据库连接信息,<javaModelGenerator>标签用于配置生成的实体类信息,<sqlMapGenerator>标签用于配置生成的SQL映射文件信息,<javaClientGenerator>标签用于配置生成的Mapper接口信息。

使用Mybatis代码生成器生成实体类和Mapper接口

配置代码生成器插件的参数

generatorConfig.xml配置文件中,可以通过修改配置文件中的标签属性,来配置代码生成器的具体行为。例如,可以在<jdbcConnection>标签中修改数据库连接信息,可以在<javaModelGenerator>标签中修改生成的实体类信息,可以在<javaClientGenerator>标签中修改生成的Mapper接口信息。

生成过程详解

生成过程主要包括以下几个步骤:

  1. 读取数据库表信息:代码生成器会读取数据库中指定表的结构信息。
  2. 生成代码:根据读取到的表信息,代码生成器会生成相应的Mapper接口、实体类和SQL语句。
  3. 输出代码:代码生成器将生成的代码输出到指定的位置。

生成代码的具体步骤如下:

  1. 打开IntelliJ IDEA,找到项目中的generatorConfig.xml配置文件。
  2. 右键点击generatorConfig.xml文件,选择Run MybatisGenerator.main(),运行代码生成器。
  3. 查看生成的代码,生成的代码会输出到配置文件中指定的位置,例如target/classes目录下。

自定义生成的代码模板

如果需要自定义生成的代码模板,可以在generatorConfig.xml配置文件中,通过修改标签属性,来配置代码生成器的具体行为。例如,可以在<javaModelGenerator>标签中,修改生成的实体类的包名、生成实体类的根目录等。具体的配置如下:

<javaModelGenerator targetPackage="com.example.model" targetProject="target/classes">
    <property name="enableSubPackages" value="true"/>
    <property name="trimStrings" value="true"/>
</javaModelGenerator>

在上述配置中,targetPackage属性用于指定生成的实体类的包名,targetProject属性用于指定生成的实体类的根目录。enableSubPackages属性用于指定是否生成子包,trimStrings属性用于指定是否去掉字符串前后的空白字符。

生成的实体类示例如下:

package com.example.model;

public class User {
    private Integer id;
    private String username;
    private String password;
    private String email;

    // getters and setters
}

生成的Mapper接口示例如下:

package com.example.mappers;

import com.example.model.User;

public interface UserMapper {
    List<User> selectAll();
}
代码生成后项目的整合与调试

将生成的代码整合到现有项目中

  1. 将生成的Mapper接口和实体类复制到项目中指定的位置,例如src/main/java/com/example/mapperssrc/main/java/com/example/model目录下。
  2. 在项目中引入Mybatis的相关依赖,具体配置已在上述pom.xml中给出。
  3. 在Mybatis的配置文件mybatis-config.xml中,配置生成的Mapper接口,具体配置如下:
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/testdb"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/example/mappers/UserMapper.xml"/>
    </mappers>
</configuration>

在上述配置中,<mappers>标签用于配置生成的Mapper接口,<mapper>标签用于指定生成的Mapper接口的XML文件位置。

调试代码,确保生成的Mapper接口和实体类能够正常使用

  1. 编写测试代码,测试生成的Mapper接口和实体类的功能。测试代码示例如下:
import com.example.model.User;
import com.example.mappers.UserMapper;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
import java.util.List;

public class TestMybatisGenerator {
    public static void main(String[] args) {
        String resource = "mybatis-config.xml";
        InputStream inputStream = TestMybatisGenerator.class.getClassLoader().getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        try (SqlSession session = sqlSessionFactory.openSession()) {
            UserMapper mapper = session.getMapper(UserMapper.class);
            List<User> users = mapper.selectAll();
            for (User user : users) {
                System.out.println(user.getId() + " " + user.getUsername() + " " + user.getPassword());
            }
        }
    }
}

在上述测试代码中,首先读取Mybatis的配置文件mybatis-config.xml,然后创建一个SqlSessionFactory对象,使用SqlSessionFactory对象创建一个SqlSession对象,获取生成的Mapper接口对象,执行相应的SQL语句,查询数据库中的数据。

  1. 运行测试代码,查看生成的Mapper接口和实体类的功能是否正常。
实战案例

实例演示:从数据库生成代码并集成到项目中

  1. 创建一个测试数据库testdb,然后在该数据库中创建一个测试表user,SQL语句已在上述章节中给出。
  2. 下载并安装IntelliJ IDEA,创建一个Java项目,配置pom.xml文件,引入Mybatis的相关依赖,具体配置已在上述章节中给出。
  3. 创建Mybatis Generator的配置文件generatorConfig.xml,配置文件内容已在上述章节中给出。
  4. 运行代码生成器,生成Mapper接口、实体类和SQL语句。
  5. 将生成的代码整合到现有项目中,具体步骤已在上述章节中给出。
  6. 调试代码,确保生成的Mapper接口和实体类能够正常使用。

常见问题解决与注意事项

  1. 生成的代码中存在错误,例如,生成的Mapper接口中的方法名称、生成的实体类中的属性名称等与实际的数据库表结构不一致。此时,可以通过修改generatorConfig.xml配置文件中的标签属性,来调整代码生成器的行为。

  2. 生成的Mapper接口中的SQL语句存在错误,例如,SQL语句中缺少某些关键字。此时,可以通过修改generatorConfig.xml配置文件中的标签属性,来调整代码生成器的行为。或者,可以在生成的Mapper接口中手动修改SQL语句,使其符合实际的数据库表结构。

如何维护和更新生成的代码

  • 定期清理生成的代码:当数据库表结构发生更改时,需要重新生成代码,并清理之前的代码。
  • 使用版本控制系统:可以使用版本控制系统(如Git)来管理生成的代码,便于维护和回滚。
  • 自动化生成代码:可以使用自动化工具(如Mybatis Generator插件)来自动化生成代码,减少手动操作。
总结与进阶

本教程回顾与总结

本教程介绍了Mybatis代码生成器的基本概念和使用方法,包括Mybatis简介、代码生成器的作用和优势、Mybatis代码生成器的工作原理、准备工作、使用Mybatis代码生成器生成实体类和Mapper接口、代码生成后项目的整合与调试、实战案例等。通过本教程,读者可以掌握Mybatis代码生成器的基本使用方法,快速生成Mapper接口、实体类和SQL语句。

Mybatis代码生成器的进阶使用方法

  • 自定义生成代码的模板:
    • 通过修改generatorConfig.xml配置文件中的标签属性,来调整代码生成器的行为。
    • 通过修改生成的代码模板文件,来自定义生成的代码模板。
  • 自定义生成代码的规则:
    • 通过修改generatorConfig.xml配置文件中的标签属性,来调整代码生成器的行为。
    • 通过修改生成的代码模板文件,来自定义生成的代码模板。
  • 自定义生成代码的位置:
    • 通过修改generatorConfig.xml配置文件中的标签属性,来调整代码生成器的行为。
    • 通过修改生成的代码模板文件,来自定义生成的代码模板。

推荐学习资源和社区交流

通过上述资源,开发者可以深入学习Mybatis和Mybatis Generator的相关知识,提高自己的开发能力。

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消