SpringBoot 结合 Mybatis Plus 自动生成代码

mybatis-plus自动生成代码 一、介绍 本教程将介绍如何使用 mybatis-plus 工具自动给我们生成 Controller、Service、Entity、Mapper、Mapper.xml 层代码 要求: ① 生成的Controller类,需要继承 BaseController ② 生成的Entity 类,需要继承 BaseEntity ③ 生成的 Service,默认名称下是以 I 开头的接口, 在生成Se... 阅读详情

SpringBoot 结合 Mybatis Plus 自动生成代码

具体实现如下

导入依赖

在使用SpringBoot结合Mybatis Plus自动生成代码之前,需要导入Mybatis Plus自动生成代码对应的依赖,具体如下:

	<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>VersionId</version>
    </dependency>

在后续自动生成器实现中,需要使用到模板引擎,所以我们也需要导入模板引擎依赖,在本文中使用的是Freemarker模板引擎,所以依赖为:

	<dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>${freemarker.version}</version>
    </dependency>

补充:Mybtis-Plus支持 Velocity(默认)、Freemarker、Beetl,三种模板引擎,用户也可以选择自己定义的模板引擎。

代码实现

在实现中,首先应该定义一个代码生成器:AutoGenerator autoGenerator = new AutoGenerator();,然后需要进行一些全局配置、数据源配置、包配置、自定义配置(可选)、模板配置、策略配置、模板引擎配置,最后开始执行代码生成器autoGenerator。
具体代码如下:

package com.example.codeAutoGenerate.utils;

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 java.awt.geom.AffineTransform;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @Date: 2021/2/1
 * @Msg:
 */
public class MyCodeGenerator {

    /**
     * <p>
     * 读取控制台内容
     * </p>
     */
    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 autoGenerator = new AutoGenerator();

        String projectPath = System.getProperty("user.dir"); // D:\github\projectName

        // 全局配置
        autoGenerator.setGlobalConfig(initGlobal(projectPath));

        // 数据源配置
        autoGenerator.setDataSource(initDataSource());

        // 包配置
        PackageConfig pc = new PackageConfig();
        autoGenerator.setPackageInfo(initPackage(pc));

        //自定义配置
        autoGenerator.setCfg(initInjection(projectPath));

        // 配置模板
        autoGenerator.setTemplate(initTemplate());

        // 策略配置
        autoGenerator.setStrategy(initStrategy(pc));

        //模板引擎设置
        autoGenerator.setTemplateEngine(new FreemarkerTemplateEngine());

        //执行
        autoGenerator.execute();
    }

    private static StrategyConfig initStrategy(PackageConfig pc){
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        strategy.setEntityLombokModel(true);
        strategy.setRestControllerStyle(true);
        strategy.setInclude(scanner("表名"));
        strategy.setSuperEntityColumns("id");
        strategy.setControllerMappingHyphenStyle(true);
        strategy.setTablePrefix(pc.getModuleName() + "_");
        return strategy;
    }

    private static TemplateConfig initTemplate(){
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig.setXml(null);
        return templateConfig;
    }

    private static InjectionConfig initInjection(String projectPath){
        // 如果模板引擎是 freemarker
        String templatePath = "/templates/mapper.xml.ftl";
        // 自定义输出配置
        List<FileOutConfig> focList = new ArrayList<>();
        // 自定义配置会被优先输出
        focList.add(new FileOutConfig(templatePath) {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定义输出文件名
                return projectPath + "/src/main/resources/mapper/" + "/" + tableInfo.getMapperName() + StringPool.DOT_XML;
            }
        });
        // 自定义配置
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                // to do nothing
            }
        };
        cfg.setFileOutConfigList(focList);
        return cfg;
    }

    private static PackageConfig initPackage(PackageConfig pc){
        pc.setParent("com.example");
        pc.setModuleName(scanner("模块名"));
        return pc;
    }

    private static GlobalConfig initGlobal(String projectPath){
        GlobalConfig gc = new GlobalConfig();
        gc.setOutputDir(projectPath + "/src/main/java");
        gc.setAuthor("lana");
        gc.setOpen(false);
        gc.setEntityName("%sEntity");
        gc.setMapperName("%sMapper");
        gc.setXmlName("%sMapper");
        gc.setServiceName("%sService");
        gc.setServiceImplName("%sServiceImpl");
        gc.setControllerName("%sController");
        return gc;
    }

    private static DataSourceConfig initDataSource(){
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://hostIP:3306/schemaName?characterEncoding=UTF-8&serverTimezone=UTC");
        dsc.setSchemaName("schemaName");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("userName");
        dsc.setPassword("password");
        return dsc;
    }

}

MyBatis-Plus自动生成代码 最开始,要在 Java 中使用数据库时,需要使用 JDBC,创建 Connection、ResultSet 等,然后我们又对 JDBC 的操作进行了封装,创建了许多类似于 DBUtil 等工具类。再慢慢的,出现了一系列持久层的框架:Hibernate、JPA,Mybatis 等。Hibernate:一个全自动的 ORM 框架,实现了数据库中表和 Java 对象的映射,通过调用 Java对象的方法,我们就可以实现数据库表中数据的操作。而且通过该框架,我们能够不用修改代码就访问到不同的数据库。 阅读详情

相关推荐

SpringBoot快速教程四整合Mybatis-plus

SpringBoot3版本整合最新版Mybatis-plus的教程方便自己日常无缝迁移,那么来了,本篇教程就是基于SpringBoot3.3.4整合最新版的Mybatis-plus的3.5.7的SpringBoot3专属版本,希望大家可以和之前的Mybatis做一下对比,俗话说,没有对比,就没有伤害!

程序员Feri 1667

springboot整合mybatis代码快速生成

spring boot项目整合实战 springboot整合mybatis代码逆向生成

qq_35771266的博客 4423

【SpringBoot】26、SpringBoot中整合MyBatis-Plus实现数据库操作

MyBatis 框架相信大家都用过,虽然 MyBatis 可以直接在 xml 中通过 SQL 语句操作数据库,很是灵活。但正其操作都要通过 SQL 语句进行,就必须写大量的 xml 文件,很是麻烦。于是 MyBatis-Plus 应运而生,作为 MyBatis 的增强工具,更是为我们开发效率得到了质的飞跃。 一、简介 1、MyBatis MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBa

JACKAL 21万+

springboot整合Mybatis,自动生成代码

springboot整合Mybatis,自动生成代码

qq_23000805的博客 1543

SpringBoot整合Swagger与MyBatis-Plus实战项目

MyBatis-Plus的设计哲学围绕“减少冗余编码,聚焦业务逻辑”展开。传统MyBatis项目中,每个实体类都需要手动编写Mapper XML文件、定义增删改查方法,并在Service层逐一调用。这种模式虽然灵活,但在面对大量基础表时极易陷入“复制粘贴式开发”,不仅耗时且易出错。MyBatis-Plus通过提供通用Mapper接口(和ServiceImpl基类(,将90%以上的单表CRUD操作自动化处理。

weixin_30415591的博客 786

从零构建:如何用MATLAB工具箱打造你的第一个多体动力学仿真模型

本文详细介绍了如何使用MATLAB的Simscape Multibody工具箱从零开始构建多体动力学仿真模型,特别适合初学者学习倒立摆系统的建模与仿真。文章涵盖环境准备、坐标系设置、物理模型构建、参数化建模及性能优化等关键步骤,帮助工程师快速掌握这一强大的仿真工具。

water的专栏 964

[项目总结] Springboot 构建微服务 之 Mybatis 根据数据库表快速生成代码

如何使用已经有的轮子,快速创建Springboot 子项目,并开始微服务的开始项目业务方面的开发,加速迭代效率。这篇文章主要聚焦在快速生成java 实体类, Mapper接口和XML Mapper映射文件。根据以下配置可以通过连接数据库,根据配置好的数据库表和字段配置,在各种IDE(Eclipse, STS, VS Code, IDEA)中运行生成相应文件。

Alice Dong的技术总结博客 1474

树莓派使用 OLED 屏显示图片及文字

树莓派默认是不带显示屏的,如果想要查看系统的一些信息,需要使用电脑登录到树莓派,或者通过 HDMI 连接外接显示器查看。这样做总是有点麻烦,我们可以通过外接一个 OLED 屏来显示一些关键参数或者图片。本文将详细介绍操作方法。 OLED 模组介绍 OLED 屏主要有两种:128×32 和 128×64 ,主要颜色是白、黄、蓝。OLED 屏的特点是功耗低,价格便宜,使用 I2C 接口与主机连接。本文所使用的是 128×64 尺寸的屏幕,外形如下: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直

码到成功 3743

SpringBoot集成Mybatis【使用generatorConfig.xml配置自动生成代码】

SpringBoot集成Mybatis【使用generatorConfig.xml配置自动生成代码】

感谢阅读 9087

YOLO系列算法改进 | 自研篇 | C3k2融合Circulant Attention注意力模块 | 给局部特征提取器装上了全局动态卷积核,兼顾效率、精度与泛化能力!| AAAI 2026

YOLO系列算法改进 | 自研篇 | C3k2融合Circulant Attention注意力模块 | 给局部特征提取器装上了全局动态卷积核,兼顾效率、精度与泛化能力!| AAAI 2026 (以YOLO26最新目标检测模型为基础,融合C3k2_Circulant创新模块改进Backbone)

2502_91881744的博客 242

43_AI短片实战第十六弹:AIGC补充特写镜头——首尾帧衔接与多图抽卡技巧

本文介绍了使用Templa AI平台生成"怪兽爬车"特写镜头并衔接"甩尾摔下"动作的完整流程。首先通过AI生成4张怪兽趴在车顶的特写画面,重点选择展示怪兽与车顶关系的构图(16:9比例)。然后将选定的首帧图与已有尾帧图输入AI,生成7秒左右的过渡视频,实现从"稳定趴车"到"开始摔落"的自然衔接。整个过程展示了单图抽卡策略、首尾帧选择标准,以及如何利用AI生成时间进行其他剪辑任务的并行处理方法。最终产出包括特写首帧图、过渡视频文件和更新后的剪辑项目。

Open 76

Spring Boot使用Mybatis-plus插件自动生成代码

【代码】Spring Boot使用Mybatis-plus插件自动生成代码。

chao_1218的博客 1018

【linux】linux 出现一个网卡绑定多个ip怎么处理

我的原因是我使用了dhcp,这个会自动分配ip, 将 BOOTPROTO 参数由 dhcp 改为 static,并移除或注释掉与动态分配地址 10.0.2.15 相关的配置行(如果存在)。执行后,您可以再次使用 ip -4 a 或 ifconfig 命令确认 IP 地址已被移除。输出可以看出,您的虚拟机(k8s003)中存在一个名为 enp0s3 的网卡绑定了多个 IPv4 地址。对于某些 Linux 发行版(如 Ubuntu、Debian),您可能需要编辑网络接口的配置文件来移除多余的 IP 地址。

九师兄 297

SpringBoot结合MyBatis Plus 自动生成代码

SpringBoot结合MyBatis Plus 自动生成代码 本来这一章要介绍Redis+AOP优化权限,可是发现还是需要先介绍一些MyBatis Plus自动生成代码 MyBatis Plus简介 MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 MyBatis Plus特性 无侵入:只做增强不做改变,引入它不会

zhoubangbang1的博客 2231

orange软件:入门使用

orange做数据分析契机实验手册目录orange软件部分界面展示小试牛刀:数据导入和展示小试牛刀:散点图绘制总结 契机 今天在上大数据时代实验课,作为一名软件工程专业的大三学生,在上这节公选课之前就决定这节课做完这个学期所有的实验报告,可以说“有亿点”不屑;尤其当老师说Python很麻烦的时候,我更是震惊了,因为我接触过这么多编程语言,Python真的很友好了,很傻瓜,但是当老师打开实验手册的时候,我真香了!!!下面先来看看手册的目录: 实验手册目录 为什么会真香呢,因为目录里这些有好多机器学习算法!

weixin_45880844的博客 1万+

【即插即用模块】Transformer篇 | MICCAI 2025 | ReLULA:Q/K双ReLU线性注意力,既轻又准!

本文介绍了一种基于线性注意力的多实例学习模块(Lin-MIL),适用于高分辨率视觉任务。该模块通过转置计算顺序和使用ReLU激活,将计算复杂度从O(n²d)降至O(nd²),同时提升特征判别性。核心创新包括Q/K双ReLU激活、可学习温度系数和数值稳定归一化。实验表明,该模块在轻量化视觉任务中优于传统线性注意力和Mamba架构。代码实现了模块化矩阵乘法,支持即插即用替换ViT自注意力层。该模块特别适合计算病理学等需要处理大量图像补丁的任务。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 140

Springboot之Mybatis-Plus逆向配置

Springboot之Mybatis-Plus逆向配置 一、依赖 <!-- mybatis-plus orm --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> ...

学习和工作总结,共勉! 440

015:机载三维激光扫描技术相关知识

机载三维激光扫描系统(LiDAR)是集激光、GPS、INS等尖端技术于一体的三维航空遥感技术,能高效准确获取地表三维信息。该系统由GPS、INS、激光扫描测距系统、成像装置和工作平台组成,各部件协同工作以获取精确的空间定位、运动状态、地表三维坐标及真实色彩信息。通过制定飞行计划、安置GPS基站、激光扫描测量、惯性测量及获取高清数码影像等步骤,机载LiDAR技术能实时获取大范围高精度三维数据。该技术具有扫描速度快、精度高、全数字特征等优势,广泛应用于测绘、工程、环境监测和城市建设等领域,如城市三维模型重建、灾

qq_31762031的博客 1726

(四)springboot + mybatis plus详细拆解CRUD

吐槽 : mmp…, 谁能理解我现在的心情,这篇文章是第三次写了,吐槽一,谷歌最新版和搜狗输入法冲突导致浏览器崩溃的问题。真的mmp文章写到一半浏览器蹦了,再次恢复的时候文章没了。。。重写。吐槽二,csdn的Markdown编辑器为什么不自动保存。。。mmp第二遍重写。这是第三遍md。废话不说了开始说正事 注明 : 本篇文章将介绍springboot+mybatis-plus通过AutoGenerator自动生成entrty、controller、service、dao、mapper后对于基本的CRUD的

IT学院 295

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

springboot用mybatis-plus自动生成代码

springboot用mybatis-plus自动生成代码。

每天都充一点电 575

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

mybatis plus(二)

介绍springboot+mybatis-plus通过AutoGenerator自动生成entrty、controller、service、dao、mapper后对于基本的CRUD的操作和注意事项。 初始化项目搭建 初始化项目我就不在一一阐述了,如果有不知道的童鞋可以去Gitee下载源码 源码地址 Gitee 层级代码展示 上图为自动生成后的层级展示,那么下面就开始我们的测试之路 在测...

u013862444的博客 299

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

springboot项目使用mybatis-plus一键生成所有代码

springboot项目使用mybatis-plus一键生成所有代码 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" ...

lmsfv的博客 382

SpringBoot整合Mybatis-plus及用法

一、mybatis-plus简介: Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这是官方给的定义,关于mybatis-plus的更多介绍及特性,可以参考mybatis-plus官网。那么它是怎么增强的呢?其实就是它已经封装好了一些crud方法,我们不需要再写xml了,直接调用这些方法就行,就类似于JPA。并且3.X系列支持lambda语法,让我在写条件构造的时候少了很多的"魔法值",从代码结构上更简洁了.

qq_42281649的博客 7万+

SpringBoot项目mybatis-plus自动生成代码

本文参考自mybatis-plus自动生成代码 创建数据库测试数据 DROP TABLE IF EXISTS user; CREATE TABLE user ( id BIGINT(20) NOT NULL COMMENT '主键ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', age INT(11) NULL DEFAULT NULL COMMENT '年龄', email VARCHAR(50) NULL DEFAULT NULL CO

南城的博客 1744

springboot集成mybatis-plus自动生成代码

springboot集成mybatis-plus自动生成代码 1.导包 <!--mybatis-plus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> ...

马尾与发圈 1795
上一篇: ping 命令的作用和原理
下一篇: Java深度拷贝
Lana啦啦啦
博客等级 码龄9年 5粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值