mybatis plus自动生成器解析(及遇到的坑)

下面我将为你详细讲解 Mybatis Plus 自动生成器解析及遇到的坑。

1. 简介

Mybatis Plus 是一款基于 Mybatis 的快速开发框架,提供了常用的 CRUD 操作、分页、逻辑删除等功能,大大减少了代码量,提升了开发效率。而其中的代码生成器,更是可以帮助我们一键生成实体、Mapper、Service、Controller 等文件,减少了手写代码的时间和难度。

2. 使用 Mybatis Plus 自动生成器

2.1 添加依赖

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

<!-- Mybatis Plus 自动生成器 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.4.2</version>
</dependency>

2.2 配置文件

在 resources 目录下创建 generator 目录,并在其中创建 generator.properties 配置文件,其主要内容如下:

# 数据库驱动
jdbc.driver=com.mysql.jdbc.Driver

# 数据库连接地址
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8

# 数据库用户名
jdbc.username=root

# 数据库密码
jdbc.password=123456

# 包名
package.name=com.example.demo

# 生成文件输出目录
out.dir=src/main/java

2.3 执行命令

在执行代码生成命令时,需要指定 generator.properties 配置文件的路径,以及代码生成器的模板路径:

import com.baomidou.mybatisplus.generator.AutoGenerator;

public class CodeGenerator {
    public static void main(String[] args) {
        // 代码生成器
        AutoGenerator mpg = new AutoGenerator();

        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        gc.setOutputDir("D:\\Blog\\test");
        gc.setAuthor("");
        gc.setOpen(false);
        gc.setFileOverride(false);
        gc.setSwagger2(true);
        mpg.setGlobalConfig(gc);

        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
        dsc.setDriverName("com.mysql.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("123456");
        mpg.setDataSource(dsc);

        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.example.demo");
        pc.setEntity("entity");
        pc.setMapper("mapper");
        pc.setService("service");
        pc.setServiceImpl("service.impl");
        pc.setController("controller");
        mpg.setPackageInfo(pc);

        // 配置模板
        TemplateConfig tc = new TemplateConfig();
        tc.setEntity("/template/entity.java.vm");
        tc.setMapper("/template/mapper.java.vm");
        tc.setXml("/template/mapper.xml.vm");
        tc.setService("/template/service.java.vm");
        tc.setServiceImpl("/template/serviceImpl.java.vm");
        tc.setController("/template/controller.java.vm");
        mpg.setTemplate(tc);

        // 执行生成
        mpg.execute();
    }
}

执行上述命令,即可生成实体类、Mapper、Service、Controller 等文件。

3. 遇到的坑

3.1 配置文件路径问题

在执行命令时,需要指定 generator.properties 配置文件的绝对路径,否则可能会出现找不到文件的错误。

3.2 模板文件路径问题

在 Mybatis Plus 自动生成器中,默认使用的是 Velocity 模板引擎,而在指定模板文件路径时,需要使用相对路径。

举例说明:

假设模板文件的路径是 resources/template/entity.java.vm。如果直接指定为 entity.java.vm,程序就会找不到该文件。正确的做法是使用 /template/entity.java.vm,表示相对于 resources 目录的路径。

4. 示例

4.1 自动生成实体类

配置 generator.properties 配置文件并执行 CodeGenerator 类的 main 方法,即可生成如下代码:

package com.example.demo.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 
 * </p>
 *
 * @since 2021-10-12
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("user")
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 姓名
     */
    @TableField("name")
    private String name;

    /**
     * 年龄
     */
    @TableField("age")
    private Integer age;


}

4.2 自动生成 Mapper、Service、Controller 等文件

以生成 UserController 为例,执行以下代码:

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.TemplateConfig;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

public class GenerateCodeTest {

    public static void main(String[] args) {
        // 代码生成器
        AutoGenerator mpg = new AutoGenerator().setTemplateEngine(new FreemarkerTemplateEngine());

        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        gc.setOutputDir(System.getProperty("user.dir") + "/src/main/java");
        gc.setAuthor("wangsan");
        gc.setOpen(false);
        gc.setSwagger2(true);
        mpg.setGlobalConfig(gc);

        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8");
        dsc.setDriverName("com.mysql.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("123456");
        mpg.setDataSource(dsc);

        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.zhangzhenguang.springboot");
        pc.setEntity("entity");
        pc.setMapper("mapper");
        pc.setService("service");
        pc.setServiceImpl("service.impl");
        pc.setController("controller");
        mpg.setPackageInfo(pc);

        // 配置模板
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig.setXml(null);
        mpg.setTemplate(templateConfig);

        // 执行生成
        mpg.execute();
    }
}

将上述代码保存并执行,即可在 com.zhangzhenguang.springboot.controller 包下生成以下 UserController 类:

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @since 2021-10-12
 */
@RestController
@RequestMapping("/user")
public class UserController {

}

5. 总结

Mybatis Plus 自动生成器是一款非常方便的工具,可以大大减少代码量,提高开发效率。在使用过程中,需要注意配置文件路径、模板文件路径等问题,以便顺利生成代码。

阅读剩余 81%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis plus自动生成器解析(及遇到的坑) - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • Spring Boot集成MyBatis访问数据库的方法

    下面我将详细讲解如何在Spring Boot中集成MyBatis,访问数据库的完整步骤。 第一步:引入相关依赖 在pom.xml文件中添加以下依赖,其中包括Spring Boot的启动器、MyBatis的启动器、MySQL数据库连接驱动、MyBatis的Spring Boot集成包以及数据库连接池依赖。 <dependency> <grou…

    Java 2023年5月20日
    00
  • Java设计模式之java外观模式详解

    Java外观模式是一种结构型设计模式,它可以为复杂的子系统提供一个简单的接口。通过使用外观模式,我们可以将整个子系统的复杂性隐藏在一个简单的接口后面,让客户端只需要与这个简单的接口进行交互,不需要关心具体实现细节。 外观模式的使用场景 外观模式在以下情况下可以得到应用: 当一个复杂的系统需要被分成多个子系统时,可以使用外观模式对外提供一个简单的接口,以隐藏子…

    Java 2023年5月24日
    00
  • Android图片的Base64编码与解码及解码Base64图片方法

    针对这个话题,以下是详细讲解“Android图片的Base64编码与解码及解码Base64图片方法”的完整攻略。 什么是Base64编码 Base64编码是一种用于将二进制数据转为文本数据的编码方式,主要用途是将数据在网络上进行传输,例如在网页中展示图片等。 如何在Android中进行Base64编码 在Android中,我们可以使用Base64类进行Bas…

    Java 2023年5月20日
    00
  • SpringBoot yaml语法与JRS303校验超详细讲解

    下面我就给你介绍一下Spring Boot中的yaml语法和JRS303校验的全面攻略。 一、Spring Boot yaml语法 1.1 简介 在Spring Boot项目中,我们可以通过yaml语法来配置项目相关信息。yaml是一种人类可读的数据序列化格式,而且在Spring Boot中默认使用了yaml作为配置文件的语法。相比于xml和properti…

    Java 2023年5月19日
    00
  • jdbc操作mysql数据库实例

    一、前言 Java Database Connectivity(JDBC)是Java提供的一种操作各种关系型数据库的API。本攻略将介绍如何使用JDBC操作MySQL数据库,包括连接MySQL数据库、创建表、插入记录、查询记录、更新记录和删除记录等操作。 二、依赖和环境需求 在开始实践之前,我们需要准备以下依赖和环境: MySQL数据库(可以是本地安装的,也…

    Java 2023年6月16日
    00
  • Java实现向Word文档添加文档属性

    下面我将详细讲解如何使用Java向Word文档添加文档属性。 1. Word文档属性 在Word文档中,文档属性是描述文档特性的元数据,例如作者、标题、主题等等。它们可以加强搜索效果、提取有用信息和跟踪文档版本。文档属性通常包含在文档内部,并不会在文档中显示出来,但可以通过Word菜单中的文件属性信息查看。 2. Java实现方法 Java可以通过POI库(…

    Java 2023年5月19日
    00
  • 常见的Java性能调优工具有哪些?

    Java性能调优是提高应用程序性能和并发运行效率的必要手段,为了提高Java应用程序的性能,需要使用一些专业的性能调优工具。 常见的Java性能调优工具有以下几种: JProfiler:JProfiler是一种动态的Java代码性能分析工具,主要特点是高效和低侵入性,可以帮助开发人员快速定位Java应用程序的性能瓶颈,并提出优化建议。使用JProfiler进…

    Java 2023年5月11日
    00
  • JAVA8 十大新特性详解

    JAVA8 十大新特性详解 1. Lambda表达式 Lambda表达式是JAVA8中最重要的特性之一,它为JAVA引入了类似于函数式编程语言的概念。它可创建实现函数式接口的匿名函数。Lambda表达式具有简洁、清晰和易于使用的优点。Lambda表达式可以替代所有的匿名内部类。 public class LambdaTest { public static …

    Java 2023年5月24日
    00
合作推广
合作推广
分享本页
返回顶部