使用mybatis-plus-generator进行代码自动生成的方法

首先,我们需要了解一下mybatis-plus-generator的基本概念和用法。

mybatis-plus-generator是mybatis-plus框架中的一个代码自动生成工具,它能够根据数据库中的表结构自动生成实体类、Mapper接口、以及对应的XML文件等。使用mybatis-plus-generator可以大大提高我们的开发效率。

一、配置mybatis-plus-generator依赖

在使用mybatis-plus-generator之前,我们需要在项目中引入对应的依赖,比如:

<!--引入mybatis-plus-generator依赖-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.4.3</version>
</dependency>

二、配置生成代码所需的参数

在项目中配置好mybatis-plus-generator依赖之后,我们还需要在项目中添加一个配置文件,用于设置代码生成的相关参数。一般而言,我们可以使用yml文件或者properties文件来进行配置。

以下是一个基本的配置文件示例:

# 数据库配置
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: 123456

# mybatis-plus配置
mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: deleted
      id-type: auto
      logic-delete-value: 1
      logic-not-delete-value: 0
  generator:
    outputDir: D:/workspace/mybatis-plus-generator
    author: yourname
    fileOverride: true
    open: false
    basePackage: com.example.mybatisplus
    mapperPackage: mapper
    xmlPackage: mapper.xml
    servicePackage: service
    serviceImplPackage: service.impl
  auto-fill:
    enable: true
    create: false
    update: false
    delete: false
  strategy:
    tablePrefix: tb_
    naming:
      columnNaming: no_change
    exclude:
      # 排除的表名
      - tb_user_log

其中,主要要关注的是generator节点的配置,我们可以通过配置该节点下的属性来控制代码生成的路径、作者、是否覆盖等相关信息。

三、运行mybatis-plus-generator生成代码

在完成配置文件的配置之后,我们就可以启动mybatis-plus-generator来自动生成代码了。一般情况下,我们可以编写一个启动类,然后在该启动类中调用mybatis-plus-generator的API来生成代码。

以下是一个基本的示例启动类:

package com.example.mybatisplus.generator;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfigUtils;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

/**
 * mybatis-plus-generator代码自动生成启动类
 */
public class MybatisPlusGeneratorApplication {

    public static void main(String[] args) {
        // 1.创建代码生成器
        AutoGenerator autoGenerator = new AutoGenerator();

        // 2.设置数据源
        autoGenerator.setDataSource(new DataSourceConfig.Builder("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false", "root", "123456").driver(DbType.MYSQL.getDriverClassName()).build());

        // 3.设置全局配置
        GlobalConfig globalConfig = GlobalConfigUtils.getDefaultGlobalConfig();
        globalConfig.setAuthor("yourname");
        globalConfig.setOutputDir("D:/workspace/mybatis-plus-generator");
        globalConfig.setFileOverride(true);
        globalConfig.setOpen(false);
        globalConfig.setIdType(IdType.AUTO);
        globalConfig.setDateType(DateType.ONLY_DATE);
        autoGenerator.setGlobalConfig(globalConfig);

        // 4.设置包名配置
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent("com.example.mybatisplus");
        packageConfig.setMapper("mapper");
        packageConfig.setXml("mapper.xml");
        packageConfig.setEntity("entity");
        packageConfig.setService("service");
        packageConfig.setServiceImpl("service.impl");
        autoGenerator.setPackageInfo(packageConfig);

        // 5.设置策略配置
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setInclude("tb_user");
        strategyConfig.setTablePrefix("tb_");
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setColumnNaming(NamingStrategy.no_change);
        strategyConfig.setEntityLombokModel(true);
        strategyConfig.setLogicDeleteFieldName("deleted");
        strategyConfig.setVersionFieldName("version");
        autoGenerator.setStrategy(strategyConfig);

        // 6.选择freemarker模板引擎
        autoGenerator.setTemplateEngine(new FreemarkerTemplateEngine());

        // 7.执行代码生成操作
        autoGenerator.execute();
    }
}

在启动该启动类之后,mybatis-plus-generator就会根据我们的配置文件来生成对应的代码。

以上便是使用mybatis-plus-generator进行代码自动生成的完整攻略。下面给出两个实际的示例说明。

示例1:生成单表的CURD代码

假设我们有一张名为tb_user的表,我们可以通过以下配置来生成对应的CURD代码:

mybatis-plus:
  generator:
    outputDir: D:/workspace/mybatis-plus-generator
    author: yourname
    fileOverride: true
    open: false
    basePackage: com.example.mybatisplus
    mapperPackage: mapper
    xmlPackage: mapper.xml
    servicePackage: service
    serviceImplPackage: service.impl
  strategy:
    tablePrefix: tb_
    naming:
      columnNaming: no_change

其中,我们只需要设置需要生成代码的表名即可:

StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setInclude("tb_user");

示例2:生成多表的代码

假设我们有多张表需要生成对应的代码,我们可以通过以下配置来实现:

mybatis-plus:
  generator:
    outputDir: D:/workspace/mybatis-plus-generator
    author: yourname
    fileOverride: true
    open: false
    basePackage: com.example.mybatisplus
    mapperPackage: mapper
    xmlPackage: mapper.xml
    servicePackage: service
    serviceImplPackage: service.impl
  strategy:
    tablePrefix: tb_
    naming:
      columnNaming: no_change
    include:
      - tb_user
      - tb_role

其中,我们只需要在include节点下添加需要生成代码的表名即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用mybatis-plus-generator进行代码自动生成的方法 - Python技术站

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

相关文章

  • mybatis 自定义实现拦截器插件Interceptor示例

    下面是详细讲解“mybatis 自定义实现拦截器插件Interceptor示例”的完整攻略: 什么是MyBatis拦截器? MyBatis 拦截器是一种插件技术,可自定义MyBatis框架自身的行为,是MyBatis框架中的重要组成部分。MyBatis 内置提供了多种拦截器,例如 Executor、StatementHandler 等,每种拦截器都实现了不同…

    Java 2023年5月20日
    00
  • kafka监听问题的解决和剖析

    Kafka 监听问题的解决和剖析 在使用 Kafka 进行消息传递的时候,有时候会遇到无法监听到消息的问题。下面我们来详细讲解这个问题的解决方法和相关分析。 问题背景 假设我们有一个 Kafka 消息队列,其中有一个名为 test-topic 的主题,我们需要监听这个主题并从中获取消息。我们使用 Java 代码编写一个消费者程序来处理消息: import o…

    Java 2023年5月20日
    00
  • Java命令设计模式详解

    Java命令设计模式详解 本文将详细介绍Java命令设计模式。首先,我们会讲解什么是设计模式以及为什么要使用它们。接着,会详细讲解Java命令设计模式的相关概念以及在实际应用中的使用。最后,会提供两个示例说明,以帮助读者更好地掌握Java命令设计模式。 什么是设计模式? 在软件开发阶段,我们经常需要解决一些常见的问题,如对象的创建、系统的分布、通信的实现、异…

    Java 2023年5月26日
    00
  • 基于SpringMVC的全局异常处理器介绍

    【基于SpringMVC的全局异常处理器介绍】完整攻略 前言 在开发 Web 应用程序时,异常是不可避免的问题。当 Web 应用程序运行时发生异常时,SpringMVC 提供了一种集中处理异常的方式 — 全局异常处理器。本文将详细介绍基于 SpringMVC 的全局异常处理器的使用方法以及示例。 步骤1:新建全局异常处理类 我们需要使用一个能够捕获应用程序…

    Java 2023年5月16日
    00
  • java多线程模拟交通灯管理系统

    下面我将详细讲解如何编写一个Java多线程模拟交通灯管理系统。 前言 交通灯是城市中必不可少的重要设施之一,能帮助路面交通管理变得更加有序。为了更好地理解交通灯的工作原理,我们可以开发一个Java多线程模拟交通灯管理系统来模拟交通灯的运行过程。 设计思路 我们的系统需要设计两个交通灯对象,即红绿灯和绿红灯,交替更替地工作。为了实现此目的,我们可以使用多线程的…

    Java 2023年5月19日
    00
  • 利用jsp+Extjs实现动态显示文件上传进度

    利用jsp+Extjs实现动态显示文件上传进度的完整攻略主要有以下几步: 1、前端页面 前端页面需要使用Extjs实现。首先需要在页面中引入相应的js文件,例如: <script src="ext-all.js"></script> <script src="ext-lang-zh_CN.js&qu…

    Java 2023年6月15日
    00
  • Java常用类之日期相关类使用详解

    Java常用类之日期相关类使用详解 Java提供了很多日期相关的类,包括日期、时间、日期时间、时间戳等类型,本文将对这些类的使用进行详解,方便大家在Java开发中更加灵活、方便的操作日期。 Date类 java.util.Date类是Java日期相关类的源头,代表着一个精确到毫秒级别的时间戳。但是,它已经过时不建议使用了。我们现在推荐使用java.time包…

    Java 2023年5月20日
    00
  • 解决zuulGateway网关添加路由异常熔断问题

    解决zuulGateway网关添加路由异常熔断问题 在使用zuulGateway网关时,我们经常需要通过动态添加路由的方式来实现API转发。然而,在高并发或者复杂路由规则时,动态添加路由可能会引发Unexpected error in route导致熔断。本文将详细介绍如何通过修改zuulGateway配置来解决该问题。 问题描述 在使用zuulGatewa…

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