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虚拟机(JVM)中的一项重要功能,它可以卸载运行时的类。在Java应用程序中,当一个类没有被引用时,JVM会自动释放该类所占用的内存。这个过程称为“类卸载”。 类卸载的实现是通过垃圾收集器完成的。在JVM中,垃圾收集器会判断一个类是否完全没有被引用,如果没有引用,则该类不再被使用。当该类不再被使用时,JVM会卸载该类,释放其内存,并将该类从方…

    Java 2023年5月11日
    00
  • 基于Java SpringBoot的前后端分离信息管理系统的设计和实现

    基于Java SpringBoot的前后端分离信息管理系统的设计和实现攻略 一、背景介绍 随着互联网时代的到来,信息管理成为重要的需求。而采用前端和后端分离的开发方式可以提高开发效率和减轻后端压力。本文将介绍基于Java SpringBoot的前后端分离信息管理系统的设计和实现攻略。 二、技术栈 后端:Java SpringBoot、MyBatis、Swag…

    Java 2023年6月3日
    00
  • BeanUtils.copyProperties在拷贝属性时忽略空值的操作

    BeanUtils.copyProperties方法是Apache Commons BeanUtils库中非常常用的方法之一,它用于将一个JavaBean的属性值拷贝到另一个JavaBean中。 默认情况下,当源JavaBean的某个属性值为null时,调用BeanUtils.copyProperties方法会将目标JavaBean相应属性的值也设置为nul…

    Java 2023年6月15日
    00
  • Java设计模式之java原型模式详解

    Java设计模式之Java原型模式详解 原型模式是一种创建型设计模式,其基本思想是利用已有的原型对象来创建新的对象实例,而不是通过昂贵的创建过程来创建对象。这种模式涉及到实现一个原型接口,该接口用于创建当前对象的克隆。 实现原型模式 实现原型模式需要以下几个步骤: 定义一个原型接口,该接口至少要定义一个克隆方法。 实现原型接口的具体原型类,该类实现原型接口中…

    Java 2023年5月26日
    00
  • 开发实例:JSP中实现全文检索

    下面我将详细讲解“开发实例:JSP中实现全文检索”的完整攻略,包括开发环境的搭建、代码实现、运行调试等内容。 开发环境搭建 在进行本项目的开发之前,我们需要准备好以下工具: Java 8及以上版本 Apache Tomcat 8及以上版本 Eclipse IDE 步骤: 安装Java并设置环境变量; 下载并解压Tomcat,配置Tomcat的环境变量; 下载…

    Java 2023年6月15日
    00
  • Java实现批量导出导入数据及附件文件zip包

    下面我来详细讲解一下“Java实现批量导出导入数据及附件文件zip包”的完整攻略。 一、准备工作 1.引入相关依赖 我们需要引入以下依赖: <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-compress</ar…

    Java 2023年5月19日
    00
  • JSP教程(一)

    下面是“JSP教程(一)”的完整攻略: JSP教程(一) 什么是JSP JSP(Java Server Pages) 是一种动态网页开发技术,它是由Servlet API的编程模型衍生而来的。JSP技术将Java代码嵌入到HTML文档中,用于动态处理网页的内容。当客户端发起请求时,JSP容器会将JSP编译为Servlet并执行。 JSP的特点 处理动态内容 …

    Java 2023年6月15日
    00
  • SpringMVC框架整合Junit进行单元测试(案例详解)

    SpringMVC框架整合Junit进行单元测试(案例详解) 在 SpringMVC 中,我们可以使用 Junit 进行单元测试。本文将详细讲解 SpringMVC 框架整合 Junit 进行单元测试的完整攻略,包括如何配置 SpringMVC、如何使用 Junit 进行单元测试、如何编写测试用例等。 配置 SpringMVC 在使用 Junit 进行单元测…

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