首页 > 其他分享 >【MyBatis-Plus】 代码生成器使用指南——快速上手最好用的代码生成器!

【MyBatis-Plus】 代码生成器使用指南——快速上手最好用的代码生成器!

时间:2024-07-09 11:29:10浏览次数:18  
标签:代码生成 java 配置 Plus MyBatis new com

MyBatis-Plus 代码生成器使用指南


在这里插入图片描述

1. 简介

MyBatis-Plus 是一个 MyBatis 的增强工具,简化了 MyBatis 的开发过程。作为一个 ORM 框架,MyBatis-Plus 提供了很多便捷的功能,其中之一就是代码生成器。代码生成器可以根据数据库表结构自动生成相应的实体类、Mapper 接口、Service 接口及其实现类等,大大提高了开发效率,减少了重复劳动。

本文将详细介绍如何使用 MyBatis-Plus 的代码生成器生成 Java 代码,以便快速开始项目开发。

2. 环境准备

在开始之前,请确保已经安装并配置好了以下环境:

  • JDK 1.8 或以上版本
  • MySQL 数据库
  • IntelliJ IDEA 或 Eclipse 等 IDE
  • Maven 或 Gradle 构建工具

3. 项目结构

首先,我们需要创建一个标准的 Maven 项目,目录结构如下:

mybatis-plus-generator
├── src
│   ├── main
│   │   ├── java
│   │   └── resources
├── pom.xml
└── README.md

4. 引入依赖

pom.xml 文件中引入 MyBatis-Plus 和代码生成器的依赖:

<dependencies>
    <!-- MyBatis-Plus 依赖 -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.4.1</version>
    </dependency>
    
    <!-- MyBatis-Plus 代码生成器依赖 -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-generator</artifactId>
        <version>3.4.1</version>
    </dependency>

    <!-- 数据库连接池 -->
    <dependency>
        <groupId>com.zaxxer</groupId>
        <artifactId>HikariCP</artifactId>
        <version>3.4.5</version>
    </dependency>

    <!-- MySQL 驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.21</version>
    </dependency>

    <!-- 模板引擎 -->
    <dependency>
        <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
        <version>2.3.30</version>
    </dependency>
</dependencies>

5. 编写代码生成器配置类

src/main/java 目录下创建一个名为 GeneratorCodeConfig 的类,代码如下:

package com.stu.test;

import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.Scanner;

/**
 * 自动生成mybatisplus的相关代码
 */
public class GeneratorCodeConfig {

    public static String scanner(String tip) {
        Scanner scanner = new Scanner(System.in);
        StringBuilder help = new StringBuilder();
        help.append("请输入" + tip + ":");
        System.out.println(help.toString());
        if (scanner.hasNext()) {
            String ipt = scanner.next();
            if (StringUtils.isNotEmpty(ipt)) {
                return ipt;
            }
        }
        throw new MybatisPlusException("请输入正确的" + tip + "!");
    }

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

        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir"); // D:\123\ZiRu

        // 代码生成的地址: D:/Stu/src/main/java
        System.out.println(projectPath + "/src/main/java");

        gc.setOutputDir(projectPath + "/src/main/java");
        gc.setAuthor("bruce"); //作者信息
        gc.setOpen(false);

        //实体属性 Swagger2 注解
        gc.setSwagger2(true);
        mpg.setGlobalConfig(gc);

        // 配置自己数据源-----------数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://127.0.0.1:3306/stu?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("123456");
        mpg.setDataSource(dsc);

        // 配置自己包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.ziru");
        pc.setEntity("bean");
        pc.setMapper("mapper");
        pc.setService("service");
        pc.setServiceImpl("service.impl");
        mpg.setPackageInfo(pc);


        // 配置模板
        TemplateConfig templateConfig = new TemplateConfig();

        templateConfig.setXml(null);
        mpg.setTemplate(templateConfig);

        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);

        strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
        strategy.setControllerMappingHyphenStyle(true);
        //数据库表的前缀
        //strategy.setTablePrefix("tb_");
        mpg.setStrategy(strategy);
        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
        mpg.execute();
    }
}

6. 配置解释

以下是主要配置项的详细解释:

6.1 全局配置

GlobalConfig 类用于配置全局参数:

  • setOutputDir:设置代码生成的输出目录。
  • setAuthor:设置作者信息。
  • setOpen:生成后是否打开输出目录。
  • setSwagger2:是否生成 Swagger2 注解。
6.2 数据源配置

DataSourceConfig 类用于配置数据源参数:

  • setUrl:数据库连接 URL。
  • setDriverName:数据库驱动名称。
  • setUsername:数据库用户名。
  • setPassword:数据库密码。
6.3 包配置

PackageConfig 类用于配置包名:

  • setParent:父包名。
  • setEntity:实体类包名。
  • setMapper:Mapper 接口包名。
  • setService:Service 接口包名。
  • setServiceImpl:Service 实现类包名。
6.4 模板配置

TemplateConfig 类用于配置模板路径:

  • setXml:设置 XML 文件模板路径。此处设置为 null,表示不生成 XML 文件。
6.5 策略配置

StrategyConfig 类用于配置生成策略:

  • setNaming:数据库表映射到实体的命名策略。
  • setColumnNaming:数据库表字段映射到实体的命名策略。
  • setInclude:需要生成的表名,多个表名用逗号分割。
  • setControllerMappingHyphenStyle:是否开启驼峰转连字符。

7. 运行代码生成器

运行 GeneratorCodeConfig 类的 main 方法,根据提示输入表名,代码生成器将自动生成与表对应的实体类、Mapper 接口、Service 接口及其实现类等文件。

8. 生成的代码结构

生成的代码结构如下:

src/main/java
└── com
    └── ziru
        ├── bean
        │   └── <Entity>.java
        ├── mapper
        │   └── <Entity>Mapper.java
        ├── service
        │   └── <Entity>Service.java
        └── service
            └── impl
                └── <Entity>ServiceImpl.java

9. 总结

通过 MyBatis-Plus 的代码生成器,开发者可以快速生成基础的 CRUD 代码,大大提高了开发效率,减少了重复劳动。本文详细介绍了如何配置和使用 MyBatis-Plus 的代码生成器,帮助开发者更好地理解和应用这一工具。更多详细信息和高级配置可以参考 MyBatis-Plus 官方文档

标签:代码生成,java,配置,Plus,MyBatis,new,com
From: https://blog.csdn.net/m0_67414667/article/details/140290786

相关文章

  • mybatis缓存
    MyBatis提供了两级缓存机制:一级缓存(本地缓存)和二级缓存(全局缓存)。这两级缓存可以显著提高数据查询的效率,减少数据库访问的次数。下面介绍MyBatis的一级缓存和二级缓存的原理、配置和使用方法。题外话:......
  • c++ primer plus 第15章友,异常和其他:异常,15.3.5 异常规范和 C++11
    c++primerplus第15章友,异常和其他:异常,15.3.5异常规范和C++1115.3.5异常规范和C++11文章目录c++primerplus第15章友,异常和其他:异常,15.3.5异常规范和C++1115.3.5异常规范和C++1115.3.5异常规范和C++11有时候,一种理念看似有前途,但实际的使用效果并......
  • c++ primer plus 第15章友,异常和其他:15.3.1 调用abort()02
    c++primerplus第15章友,异常和其他:15.3.1调用abort()02调用abort()02文章目录c++primerplus第15章友,异常和其他:15.3.1调用abort()0215.3.1调用abort()15.3.1调用abort()对于这种问题,处理方式之一是,如果其中一个参数是另一个参数的负值,则调用abort(......
  • c++ primer plus 第15章友,异常和其他:异常,15.3.3 异常机制
    #c++primerplus第15章友,异常和其他:异常,15.3.3异常机制异常,15.3.3异常机制文章目录15.3.3异常机制15.3.3异常机制程序清单15.9error3.cpp程序清单15.10excmean.h程序清单15.11error4.cpp15.3.3异常机制15.3.3异常机制下面介绍如何使用异常机制来处......
  • MybatisX插件使用
    什么是MybatisX插件:MybatisX是idea的一个插件,可以方便地生成MyBatis的映射文件和对应的Java代码。MybatisX的优点:提高开发效率,提高开发效率更方便进行数据库操作怎么使用MybatisX:创建一个springboot项目,在pom.xml文件中引入mybatis-plus依赖建立MySQL连接输入......
  • 使用mybatis切片实现数据权限控制
     数据权限控制需要对查询出的数据进行筛选,对业务入侵最少的方式就是利用mybatis或者数据库连接池的切片对已有业务的sql进行修改。切片逻辑完成后,仅需要在业务中加入少量标记代码,就可以实现对数据权限的控制。这种修改方式,对老业务的逻辑没有入侵或只有少量入侵,基本不影响老业......
  • 使用MybatisPlus为字段值进行自动填充
    使用MybatisPlus为字段值进行自动填充保存或更新数据时,前端通常不会传入诸如isDeleted、createTime、updateTime这三个字段,因此我们需要手动赋值。但是数据库中几乎每张表都有上述字段,所以手动去赋值就显得有些繁琐。为简化上述操作,我们可采取以下措施。首先是is_deleted字段在......
  • MybatisPlus使用分页功能
    MybatisPlus使用分页功能分页查询是一个很常见的需求,故Mybatis-Plus提供了一个分页插件,使用它可以十分方便的完成分页查询。下面介绍Mybatis-Plus分页插件的用法,详细信息可参考[官方文档](分页插件|MyBatis-Plus(baomidou.com))首先为分页编写一个配置类:@Configurationpub......
  • MybatisPlus配置逻辑删除
    MybatisPlus配置逻辑删除逻辑删除,可以方便地实现对数据库记录的逻辑删除而不是物理删除。逻辑删除是指通过更改记录的状态或添加标记字段来模拟删除操作,从而保留了删除前的数据,便于后续的数据分析和恢复。物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除的数......
  • C primer plus Chapter2
    ASimpleExampleofC#include<stdio.h>intmain(void)/*asimpleprogram*/{intnum;/*defineavariablecallednum*/num=1;/*assignavaluetonum*/printf("Iamasimple");/*usetheprintf()function*/printf("......