SpringBoot---集成MybatisPlus

介绍

使用SpringBoot集成MybatisPlus框架。

第一步:添加MybatisPlus依赖

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.2</version>
</dependency>

第二步:创建MybatisPlus配置类

package com.example.config;import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
@MapperScan("com.example.system.mapper")
public class MybatisPlusConfig {/*** 添加分页插件*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//如果配置多个插件,切记分页最后添加interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());//配置乐观锁插件return interceptor;}
}

第二步:创建添加时间和修改时间自动填充类

package com.example.config;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;import java.util.Date;/*** MybatisPlus自动填充添加时间和修改时间*/
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {this.strictInsertFill(metaObject, "addTime", Date.class, new Date()); // 起始版本 3.3.0(推荐使用)}@Overridepublic void updateFill(MetaObject metaObject) {this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date()); // 起始版本 3.3.0(推荐)}
}

需要再字段上添加注解配置

/*** 添加时间*/
@TableField(fill = FieldFill.INSERT)
private Date addTime;
/*** 修改时间*/
@TableField(fill = FieldFill.UPDATE)
private Date updateTime;

第三步:application.yml添加数据库连接

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/enroll_sysusername: rootpassword: 666666

第四步:配置代码生成器

添加依赖

<!--代码生成器-->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.4</version><scope>runtime</scope>
</dependency>
<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.32</version><scope>runtime</scope>
</dependency>

编写生成代码

注意:生成代码类一定要创建在test下面,不然FastAutoGenerator类无法导入
在这里插入图片描述

package com.example;import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;import java.sql.Types;
import java.util.Collections;public class FastAutoGeneratorTests {public static void main(String[] args) {String outputDir = "/Users/mac/gitee/enroll-sys/src/main/java/";String mapperOutputDir = "/Users/mac/gitee/enroll-sys/src/main/resources/mapper/";
//        String outputDir = "E:\\gitee\\enroll-sys\\src\\main\\java\\";
//        String mapperOutputDir = "E:\\gitee\\enroll-sys\\src\\main\\resources\\mapper\\";FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/enroll_sys", "root", "666666").globalConfig(builder -> {builder.author("guochao") // 设置作者
//                            .enableSwagger() // 开启 swagger 模式.disableOpenDir()
//                            .fileOverride() // 覆盖已生成文件.outputDir(outputDir); // 指定输出目录}).dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {int typeCode = metaInfo.getJdbcType().TYPE_CODE;if (typeCode == Types.TINYINT) {// 自定义类型转换return DbColumnType.INTEGER;}return typeRegistry.getColumnType(metaInfo);})).packageConfig(builder -> {builder.parent("com.example") // 设置父包名.moduleName("system") // 设置父包模块名.pathInfo(Collections.singletonMap(OutputFile.xml, mapperOutputDir)); // 设置mapperXml生成路径}).strategyConfig(builder -> {builder.addInclude("enroll_input_field") // 设置需要生成的表名.addTablePrefix("sys_", "c_"); // 设置过滤表前缀}).templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板.execute();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/693625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

雷卯有多种5V低压ESD防静电元器件供您选择

一、5V单路ESD产品推荐 二、5V多路产品推荐 三、多路特色ESD内部结构图展示 四、方案推荐 USB3.0/TYPE-C 静电滤波保护方案 方案优点&#xff1a;USB3.0提供5.0Gbps的传输速度&#xff0c;本方案采用多路集成器件防护, 可节约空间&#xff0c;可保证信号完整性&#xff0c;可…

将 mixamo 中的动画重定向到 UE 的小白人中

动画网站 https://www.mixamo.com/ 导入网格和动画 导入网格 为了方便可以在 Content 目录下面创建一个文件夹用于放 Mixamo 导入的项目。 进入 Mixamo 的官方。 按照图片中的步骤进行下载。 将下载好的文件拖入到 UE4 项目中创建好的文件夹 Character 中。导入时设置直接…

多端开发围炉夜话

文章目录 一、多端开发 一、多端开发 uni-app 官网 UNI-APP中的UI框架&#xff1a;介绍常用的UI框架及其特点 uView UIVant WeappColor UIMint UI

Redis之缓存雪崩问题解决方案

文章目录 一、书接上文二、介绍三、解决方案1. 锁2. 不同的过期时间3. 缓存预热和定时任务 一、书接上文 Redis之缓存穿透问题解决方案实践SpringBoot3Docker 二、介绍 缓存雪崩&#xff0c;指大量的缓存失效&#xff0c;大量的请求又同时落在数据库。主要的一种诱因是key设…

jenkins的nmp install命令无法下载包

问题&#xff1a;在jenkin的流水线脚本中执行到&#xff1a;npm install命令后无法下载前端依赖包 1、进到jenkins的工作目录&#xff0c;一般在底层为/var/lib/jenkins/workspace/任务名称 cd /var/lib/jenkins/workspace/xkc处理方式&#xff1a; # 查看镜像源 npm config …

电路设计(24)——循环彩灯控制器的proteus仿真

1.设计要求 实先循环彩灯&#xff0c;功能如下&#xff1a; 8个LED从上到下依次亮&#xff0c;然后从上到下依次灭。重复以上过程 4个LED从上到下依次亮&#xff0c;然后从上到下依次灭。重复以上过程 2.设计思路 将两片74194级联&#xff0c;就可以实现八位的移位寄存器&…

最优二叉搜索树 C#实现

最优二叉搜索树 C#实现 介绍一下 上一篇博文搞半天挺烧脑&#xff0c;没搞清楚继续… 主要是练习动态规划算法。最关键的一个是这个最优二叉搜索树能干啥。我认为如果数据稳定&#xff0c;统计出概率来&#xff0c;用最优二叉树保存&#xff0c;以后搜索应该是效率比较高的。…

openGauss学习笔记-224 openGauss性能调优-系统调优-数据库系统参数调优-数据库并发队列参数调优

文章目录 openGauss学习笔记-224 openGauss性能调优-系统调优-数据库系统参数调优-数据库并发队列参数调优224.1 全局并发队列224.2 局部并发队列 openGauss学习笔记-224 openGauss性能调优-系统调优-数据库系统参数调优-数据库并发队列参数调优 数据库提供两种手段进行并发队…

教师工龄工资每一年加多少上限多少年

每当提及教师的工资&#xff0c;人们总会关心工龄工资这一部分。毕竟&#xff0c;教师作为人类灵魂的工程师&#xff0c;他们的辛勤付出和岁月沉淀都应当得到应有的回报。那么&#xff0c;教师的工龄工资每一年会增加多少&#xff1f;又是否存在一个上限呢&#xff1f; 我们先…

第五篇【传奇开心果系列】Python文本和语音相互转换库技术点案例示例:详细解读pyttsx3的`preprocess_text`函数文本预处理。

传奇开心果短博文系列 系列短博文目录Python文本和语音相互转换库技术点案例示例系列 短博文目录前言一、pyttsx3的preprocess_text函数文本预处理基本用法示例代码二、实现更复杂的文本预处理逻辑示例代码三、去除停用词、词干提取示例代码四、词形还原、拼写纠正示例代码五、…

代码随想录算法训练营第57天 | 1143.最长公共子序列 1035.不相交的线 53.最大子序和

最长公共子序列 dp[i][j] 表示字符串1中 [0, i-1] 子串与字符串2中 [0, j-1] 子串之间的最长公共子序列长度。注意这里并不要求公共子序列一定以下标 i-1 或 j-1 结尾。因为这里的公共子序列不必须连续&#xff0c;这样定义可以使得递推方便一些。 当进行遍历递推时&#xff0c…

三防平板丨手持工业平板丨ONERugged工业三防平板丨推动数字化转型

随着科技的发展&#xff0c;数字化转型已经成为企业转型升级的必由之路。而在数字化转型中&#xff0c;三防平板作为一种重要的工具&#xff0c;可以极大地推动企业的数字化转型。本文将从以下几个方面探讨三防平板如何推动数字化转型。 一、提高工作效率 ONERugged加固平板的…

Web自动化测试基础篇

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、目的 web自动化测试作为软件自动化测试领域中绕不过去的一…

shopify如何在元字段中使用元对象

在Shopify中&#xff0c;您可以使用元字段&#xff08;Metafields&#xff09;来存储和管理自定义的附加数据。元字段允许您在产品、变体、订单和其他实体中添加额外的信息&#xff0c;以满足特定的业务需求。而元对象&#xff08;Metaobject&#xff09;是指在元字段中存储的实…

Cell |从实验室到田间,还有多远?

期刊&#xff1a;Cell 时间&#xff1a;2023年8月 植物微生物群是指植物表面、细胞间隙、器官内寄生的细菌、真菌、病毒、古菌群落。植物与微生物群的互作在植物生理、生态和进化过程中扮演重要角色。有益微生物定殖植物&#xff0c;可以持续对植物生产力产生表型效应&…

Django学习记录03——员工部门案例

1、项目初始化 1.1 项目创建 1.2 APP的创建 1.2.1 方法一 命令配置 python manage.py startapp app011.2.2 方法二 Pycharm配置 在Django Structure 中创建APP 2.设计表结构 2.1 表结构 注意&#xff1a; 1.员工表与部门表关联时id关联 节省存储&#xff0c;但是查找耗时…

2024信息工程、软件与计算机工程国际会议(ICIESCE2024)

2024信息工程、软件与计算机工程国际会议&#xff08;ICIESCE2024) 会议简介 随着互联网的不断创新&#xff0c;信息工程、软件和计算机工程在各个领域得到了广泛应用。为了为来自世界各地的专家学者提供一个分享通信和计算机工程领域研究成果的平台&#xff0c;2024年信息工…

Leetcode刷题笔记题解(C++):203. 移除链表元素

思路&#xff1a;不同的情况出现了&#xff0c;就是第一个节点要是为等于val的节点&#xff0c;可以新建一个节点&#xff0c;并next指向head&#xff0c;这样就可以遍历新的链表来删除节点 /*** Definition for singly-linked list.* struct ListNode {* int val;* L…

Java最全面试总结——5. MyBatis篇

1、什么是MyBatis &#xff08;1&#xff09;Mybatis是一个半ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;它内部封装了JDBC&#xff0c;开发时只需要关注SQL 语句本身&#xff0c;不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直…

深度解析Sora的核心技术

Sora要解决的核心问题 Sora面临的挑战是将不同类型的视觉信息&#xff0c;如视频、文本、图像和声音等&#xff0c;整合为一种共同的表征形式。这种转换是实现统一训练过程的关键&#xff0c;旨在将各类数据集中到一个训练框架中&#xff0c;以便于进行大规模的统一学习。简而…