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

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

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

相关文章

  • Java使用JDBC或MyBatis框架向Oracle中插入XMLType数据

    下面是Java使用JDBC或MyBatis框架向Oracle中插入XMLType数据的完整攻略: 准备工作 确认Oracle数据库支持XMLType类型 在确认需要向Oracle中插入XMLType数据之前,需要先确认所使用的Oracle数据库是否支持XMLType数据类型。可以通过以下方式确认: 登录Oracle数据库,使用SYS用户执行以下SQL查询: …

    Java 2023年5月20日
    00
  • Spring Security实现添加图片验证功能

    Spring Security是一个非常强大的安全框架,提供了很多实用的安全特性,可以使web应用程序更加安全可靠。其中,添加图片验证功能可以提高网站的安全性。下面是实现添加图片验证功能的完整攻略。 步骤一:添加依赖 在pom.xml文件中添加如下依赖: <dependency> <groupId>org.springframewor…

    Java 2023年5月20日
    00
  • java实现动态时钟并设置闹钟功能

    Java实现动态时钟并设置闹钟功能 概述 本攻略将介绍如何使用Java语言实现一个动态时钟并设置闹钟功能。该时钟将会不断更新并显示当前的时间,并允许用户设置一个闹钟时间。当时钟时间到达设置的闹钟时间时,用户将会收到一条提示消息。 实现过程 步骤一:创建界面和布局 我们可以使用Swing工具箱来创建用户界面,如下所示: public class Clock e…

    Java 2023年5月20日
    00
  • Java springboot项目jar发布过程解析

    下面是关于“Java springboot项目jar发布过程解析”的完整攻略: Java SpringBoot 项目Jar发布过程解析 简介 SpringBoot是Spring家族的一个全新框架,它使用了约定优于配置的理念,更加简化了Spring项目的搭建和配置过程。通过SpringBoot,我们可以快速高效地构建一个企业级的Java Web应用程序。 在使…

    Java 2023年5月19日
    00
  • Java实现经典游戏2048的示例代码

    以下是“Java实现经典游戏2048的示例代码”的完整攻略: 1. 确定游戏规则和逻辑 在开始编写游戏代码之前,需要先确认游戏规则和逻辑。2048游戏的规则是:玩家通过移动方块,让相同数字的方块叠加在一起,最终得到2048方块。每次移动时,所有方块会向移动的方向靠拢,相同数字的方块叠加在一起,如果四个方向都没有可以移动的方块,则游戏结束。 2. 创建代码框架…

    Java 2023年5月19日
    00
  • Mac下安装tomcat的教程详解

    Mac下安装Tomcat的教程详解 Tomcat是一个流行的Java Web服务器,它可以运行Java Servlet和JSP应用程序。在Mac上安装Tomcat可以帮助开发人员快速开发Java Web应用程序。本教程将介绍如何在Mac上安装Tomcat,并启动一个简单的Web应用程序。 步骤一:安装Java 在安装Tomcat之前,必须先安装Java。在M…

    Java 2023年5月19日
    00
  • JDK如何配置环境变量 JDK的安装与环境变量配置图文教程

    JDK如何配置环境变量 简介 JDK(Java Development Kit)是Java开发的核心环境,要想在计算机上开发和运行Java代码,必须先安装JDK,然后配置环境变量,才能在计算机上使用Java相关的软件或执行Java程序。 安装JDK 在JDK官网(https://www.oracle.com/java/technologies/javase-…

    Java 2023年5月26日
    00
  • SpringMVC参数的传递之如何接收List数组类型的数据

    当用户在前端页面通过表单提交数据时,SpringMVC框架负责将数据传递给后端控制器,以便进行相关的业务处理。这些数据通常是参数,可以是基本数据类型、实体类、List数组等。本文将重点介绍如何在SpringMVC控制器中接收List数组类型的数据。 接收List数组类型参数的配置 SpringMVC的数据绑定机制非常灵活,可以通过使用@RequestPara…

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