mybatis-plus 代码自动生成配置

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

代码自动生成

拿来即用,只需修改配置文件即可。

增加以下两个文件即可,然后增加依赖。

在这里插入图片描述

增加依赖:

swagger,lombok在Generate开启了,所以需要依赖。或者修改Generate。

在这里插入图片描述

pom.xml 自动生成环境

<!--mybatis-plus 代码生成器依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.4.1</version>
        </dependency>
        <!--freemarker 依赖生成mapper.xml 的模板 -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
        </dependency>
<!-- 连接驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

生成后的文件需要的环境

pom.xml 生成后代码环境

	<properties>
        <knife4j.version>2.0.2</knife4j.version>
        <lombok.version>1.18.4</lombok.version>
        <druid.version>1.1.10</druid.version>
        <mybatis-plus.version>3.3.0</mybatis-plus.version>
    </properties>
<!-- 接口管理工具 -->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>${knife4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
            <scope>provided</scope>
        </dependency>
 <!-- mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${druid.version}</version>
        </dependency>
<!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
            <scope>provided</scope>
        </dependency>

Generate.java

import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.Scanner;

/**
 * @author ppliang
 * @title: Generate
 * @projectName db-generate
 * @description: 代码自动生成器
 * @date 2021-03-30 17:26
 */
public class Generate {

    private Logger logger = LoggerFactory.getLogger(Generate.class);

    private String URL;
    private String DRIVER;
    private String USERNAME;
    private String PASSWORD;
    private String PARENTPATH;
    private String AUTHOR;

    /**
     * @param
     * @return void
     * @description: 读取jdbc配置文件
     * @author ppliang
     * @date 2021/4/14 16:16
     */
    public void init() {
        InputStream jdbcStream = Object.class.getResourceAsStream("/config/generate-jdbc.properties");
        try {
            Properties jdbcProperties = new Properties();
            if (jdbcStream==null) {
                System.out.println("resources/config/generate-jdbc.properties 文件不存在");
                return;
            }
            jdbcProperties.load(jdbcStream);
            URL = jdbcProperties.getProperty("URL");
            DRIVER = jdbcProperties.getProperty("DRIVER");
            USERNAME = jdbcProperties.getProperty("USERNAME");
            PASSWORD = jdbcProperties.getProperty("PASSWORD");
            PARENTPATH = jdbcProperties.getProperty("PARENTPATH");
            AUTHOR = jdbcProperties.getProperty("AUTHOR");
            if(URL.length()>PASSWORD.length()) {
                System.out.println("数据读取成功");
            }
        } catch (IOException e) {
            logger.error("读取文件失败");
            e.printStackTrace();
        }catch (NullPointerException e) {
            logger.error("读取数据失败,查看配置文件的key是否匹配");
            e.printStackTrace();
        }
    }

    /**
     * 读取控制台内容
     */
    public 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.isNotBlank(ipt)) {
                return ipt;
            }
        }
        throw new MybatisPlusException("请输入正确的" + tip + "!");
    }


    public void create() {
        // 代码生成器
        AutoGenerator mpg = new AutoGenerator();

        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        gc.setOutputDir(projectPath  + "/src/main/java");
        //作者
        gc.setAuthor(AUTHOR);
        //打开输出目录
        gc.setOpen(false);
        //xml开启 BaseResultMap
        gc.setBaseResultMap(true);
        //xml 开启BaseColumnList
        gc.setBaseColumnList(true);
        // 实体属性 Swagger2 注解
        gc.setSwagger2(true);
        mpg.setGlobalConfig(gc);

        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl(URL);
        dsc.setDriverName(DRIVER);
        dsc.setUsername(USERNAME);
        dsc.setPassword(PASSWORD);
        mpg.setDataSource(dsc);

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

        // 自定义配置
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                // to do nothing
            }
        };

        // 如果模板引擎是 freemarker
        String templatePath = "/templates/mapper.xml.ftl";
        // 如果模板引擎是 velocity
        // String templatePath = "/templates/mapper.xml.vm";

        // 自定义输出配置
        List<FileOutConfig> focList = new ArrayList<>();
        // 自定义配置会被优先输出
        focList.add(new FileOutConfig(templatePath) {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
                return projectPath   + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper"
                        + StringPool.DOT_XML;
            }
        });
        cfg.setFileOutConfigList(focList);
        mpg.setCfg(cfg);

        // 配置模板
        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);
        //lombok模型
        strategy.setEntityLombokModel(true);
        //生成 @RestController 控制器
        strategy.setRestControllerStyle(false);
        strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
        strategy.setControllerMappingHyphenStyle(true);
        //表前缀
        strategy.setTablePrefix("t_");
        mpg.setStrategy(strategy);
        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
        mpg.execute();
    }


    public static void main(String[] args) {
        Generate generate = new Generate();
        generate.init();
        generate.create();
    }
}

clean.java

package com.ppl.dbgenerate;

import java.io.File;

/**
 * @author ppliang
 */
public class Clean {


    //项目中间路径
    private final static String midPath="\\src\\main\\java\\com\\ppl\\dbgenerate\\";
    //清除模块下文件夹
    private final static String[] paths={"controller","mapper","pojo","service"};

    public static void main(String[] args) {
        for (String path:paths){
            File file = getFile(path);
            deleteFiles(file);
        }
        //删除mapper下的文件
        clearResources();
        System.out.println("数据已清空");
    }

    //删除mapper下的文件
    private static boolean deleteFiles(File directory){
        File [] files = directory.listFiles();
        if(files==null||files.length<1){
            return true;
        }
        for (File file:files){
            if(file.isDirectory()){
                deleteFiles(file);
            }else {
                file.delete();
            }
        }
        return true;
    }

    private static void clearResources(){
        String path=System.getProperty("user.dir")+"\\src\\main\\resources\\mapper";
        File file = new File(path);
        deleteFiles(file);
    }
    
    //获取文件
    private static File getFile(String name){
        String path=System.getProperty("user.dir")+midPath+name;
        File file = new File(path);
        return file;
    }
}

generate-jdbc.properties

#配置连接数据库的信息
URL=jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
DRIVER=com.mysql.cj.jdbc.Driver
USERNAME=root
PASSWORD=123456

#项目路径
PARENTPATH=com.ppl.xk
#作者名称
AUTHOR=ppliang
几何非线性-屈曲分析 结构系统的破坏分为两种,一类是因材料软化而引起的强度破坏,另一类是几何软化使得结构的几何形状发生极大变化,从而使结构丧失承载能力。在材料力学中是这样定义压杆失稳的:中心受压直杆(理想模型)在直线状态下平衡,由稳定平衡转化为不稳定平衡时所受的轴向压力的界限值,称为临界压力。中心受压直杆在临界压力的作用下,其直线形态的平衡开始丧失稳定性,简称为失稳。显然,这个定义只使用于理想的压杆模型,那么关于失稳和屈曲是否存在一般性定义呢? 阅读详情

相关推荐

14003.xilinx系统移植

文章目录1 xilinx 系统移植 sd卡版本1.1 创建项目1.2 拷贝 *.hdf 到工程目录1.3 根据hdf文件对系统进行配置1.3.1 设置内核源码路径为本地1.3.2 设置分区的名称与大小1.4 清除本地缓存并编译成功1.5 打包生成BOOT.BIN并拷贝到sd卡1.6 问题1.7 系统启动成功1.8 配置设备树文件丰富系统外设 1 xilinx 系统移植 sd卡版本 芯片型号 ZYNQ UltraScale+ XAZU2EG ,对应厂家提供的demo板为 zu102或zu104 1.1 创建

写给自己的笔记 460

mybatis-plus代码生成器(旧)

mp代码生成器(旧)

IDEA_guo的博客 348

《QEMU/KVM源码分析与应用》读书笔记4 —— 第2章 QEMU基本组件(1)

《QEMU/KVM源码分析与应用》读书笔记4 —— 第2章 QEMU基本组件(1)

phmatthaus的专栏 1445

MyBatis-plus-Generate 自动生成代码结构实践

MyBatis-plus-Generate 自动生成代码结构实践

nnzhuilian的博客 627

MyBatis-Plus使用——配置yml参数 & 常用的注解@Table,@TableId,@IdType,@TableField,CRUD的API接口

本篇博客介绍MyBatis-Plus配置,常用的注解,API接口,以及查询的LambdaQueryWrapper的使用方法。

Arya的博客,专注后端领域 4253

mybatis plus generator配置

mybatis plus generator配置 代码生成器AutoGenerator AutoGenerator autoGenerator = new AutoGenerator(); GlobalConfig 全局配置,定义文件的输出目录,设置文件的@author信息等公共配置 GlobalConfig gc = new GlobalConfig(); String projectPath = System.getProperty("user.dir");// 获取用户程序当前路径(项目根的路径)

qq_43203949的博客 2958

MyBatis-Plus 之Lambda条件构造器

MyBatis-Plus 之Lambda条件构造器 首先创建一个数据库表,如下图所示: 然后创建一个Spring Boot项目,pom.xml和配置如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sc

kaven 1万+

mybatis-plus自动生成代码(详细配置

使用mybatis-plus自动生成代码是开发过程中提效必不可少的,下面就一起来详细的配置自动生成代码的过程

c103363的博客 3141

MyBatis-Plus自动生成代码工具的配置

在使用了MyBatis-Plus的强大的CURD的功能后,再给大家推荐下MyBatis-Plus代码自动生成工具. 我这还是继上一章的介绍,如有疑问请查看上一篇

曙哥哥 2266

SpringBoot配置Mybatis以及使用Mybatis-plus自动生成代码

SpringBoot配置Mybatis以及使用Mybatis-plus自动生成代码SpringBoot配置Mybatis使用Mybatis-plus自动生成pojos,dao和xml SpringBoot配置Mybatis 首先配置pom文件引入MyBatis依赖 <dependency> <groupId>org.mybatis.spring.boot</grou...

doubleRighttt的博客 838

JavaMyBatis Plus 自动生成代码相关配置 (图解)

代码生成器配置所对应的依赖以及生成大致流程与效果

麻辣香蝈蝈的博客 1462

mybatis自动生成的html,mybatis_plus代码自动生成插件配置

mybatis-plus代码自动生成配置1、导入模板引擎依赖org.apache.velocityvelocity-engine-core2.2io.swaggerswagger-annotations1.5.222、编辑执行类public static void main(String[] args) {// 需要构建一个 代码自动生成器对象AutoGenerator mpg = new Aut...

weixin_36231529的博客 271

【Spring Boot】Mybatis Plus 2.X 自动生成代码配置

【引言】 在前面的博客《知道Mybatis,知道Mybatis-Plus么?》一文中,对Mybatis-Plus做了一个简单的认识及demo示例,Mybatis的增强版,确实很强大,更加简单高效。其中有提到一个强大的功能之一是内置代码生成器,也是本篇博客的主要内容,下面主要总结下demo搭建的过程。 【demo】 1. 新建项目spring-boot-mybatis-plus-generator ...

Dream it Possible 3185

Mybatis-PLUS代码自动生成配置记录

Mybatis-PLUS代码自动生成配置记录,这货确实有点坑,各种配置的地方踩了许多坑记录下~ package com.commerce.mall.headline.utils; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.generator.AutoGenerator; i

qq_18347653的博客 308

配置mybatis-plus-generator自动生成实体相关代码

配置mybatis-plus-generator自动生成实体相关代码

nandao158的博客 1688

SpringBoot配置Mybatis-plus 自动生成代码

<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> ...

Lycode 845

史上最简单5分钟配置MyBatis plus自动生成代码

MyBatis plus自动生成模板代码 前言: mybatis plus是一款国人写的无侵入的数据层操作框架,使用简单,无需做太多的配置即可使用,在mybatis框架的基础上做了增强(最最主要的是文档能看的懂,这才是最重要的,本人英文基础比较差),最近的项目需要使用这个框架,所以特意写下这篇文章,为即将使用这个框架的同学提供些微不足道的帮助,本篇教程只关于自动生成代码的部分,非常的简单,可以说5...

qq_24286273的博客 551

SpringBoot整合Mybatis-Plus代码自动生成,以及接口文档配置

springboot 整合mybatis-plus 代码生成器,接口文档,美化

xiaobaijun_ge的博客 928

使用Mybatis-plus 代码自动生成器的配置

Mybatis-Plus自动生成mapper,service,controller Mybatis-Plus官网 工具类 // 执行 main 方法控制台输入模块表名回车自动生成对应项目目录中 public class CodeGenerator { /** * <p> * 读取控制台内容 * </p> */ public static String scanner(String tip) { Scanner

GHCI-Li的博客 419

Springboot+Mybatis-plus+Swagger2配置自动生成代码(最新)

Springboot版本 2.3.4 1.导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency>

qq_40600613的博客 1126

mybatis-plus代码自动生成generator配置实现

简介 mybatis-plusmybatis的升级版,在 mybatis 的基础上只做增强不做改变,主要目的是简化开发、提高开发效率。它内置通用的 Mapper与Service,仅仅通过少量配置即可实现单表大部分 简单的CRUD 操作,还有强大的条件构造器,满足各类使用需求。即使涉及到咱们最头疼的表结构调整,只要没调整业务逻辑,也可以不用手动改变代码,只需从新使用generator生成一次即可。且其可以直接丢掉xml编写sql,直接在java代码中通过wrapper编写(个人不太支持非简单CRUD的s.

liu649983697的专栏 1万+
上一篇: JVM入门介绍
下一篇: EasyExcel的简单使用 读写表格
黄二马
博客等级 码龄8年 701粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值