06 MP之自动填充+SQL执行的语句和速度分析

news2024/10/6 22:27:11

1. 自动填充

在项目中有一些属性,比如常见的创建时间和更新时间可以设置为自动填充。

1.1 实例

需求: 将创建时间和更新时间设置为自动填充, 这样每次插入数据时可以不用理会这两个字段

1.1.1 在数据库增加字段

在这里插入图片描述
默认开启驼峰映射 createTime --> create_time

1.1.2 实体类增加字段

		//分别指定为插入时自动填充和修改时自动填充
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

1.1.3 编写自动填充处理器,指定填充策略

	//新增时创建时间和修改时间是一样的,因此同步自动填充
	//修改时只要自动填充修改时间即可
	@Component
	public class MyMetaHandler implements MetaObjectHandler {
	    @Override
	    public void insertFill(MetaObject metaObject) {
	        setFieldValByName("createTime",new Date(),metaObject);
	        setFieldValByName("updateTime",new Date(),metaObject);
	    }
	
	    @Override
	    public void updateFill(MetaObject metaObject) {
	        setFieldValByName("updateTime",new Date(),metaObject);
	    }
	}

1.1.4 数据库相关配置

1.1.4.1 时区

先用select now();检查时区是否正确, 否则修改
在这里插入图片描述

1.1.4.2 url

datasource的url也声明插入的时区
在这里插入图片描述

1.1.5 单元测试

@Test
void testFill(){
    User user = new User();
    user.setName("wang");
    user.setAge(35);
    user.setEmail("wang@powernode.com");
    user.setGender(GenderEnum.MAN);

    userMapper.insert(user);
}

可以看到MP自动新增了两个插入字段.
在这里插入图片描述

2. SQL执行的语句和速度分析

可以使用MybatisPlus提供的SQL分析打印的功能,来获取SQL语句执行的时间。

2.1 添加依赖

1】由于该功能依赖于p6spy组件,所以需要在pom.xml中先引入该组件

<dependency>
    <groupId>p6spy</groupId>
    <artifactId>p6spy</artifactId>
    <version>3.9.1</version>
</dependency>

2.2 修改application.yaml

将驱动和url修改

spring:
  datasource:
    driver-class-name: com.p6spy.engine.spy.P6SpyDriver

		#之前之后
		# url: jdbc:mysql://localhost:3306/study
	  url: jdbc:p6spy:mysql://localhost:3306/study

2.3 在resources下,创建 spy.properties配置文件

#3.2.1以上使用modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory

# 自定义日志打印
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger

#日志输出到控制台
appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger

# 使用日志系统记录 sql
#appender=com.p6spy.engine.spy.appender.Slf4JLogger

# 设置 p6spy driver 代理
deregisterdrivers=true

# 取消JDBC URL前缀
useprefix=true

# 配置记录 Log 例外,可去掉的结果集error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,commit,resultset

# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss

# 实际驱动可多个
#driverlist=org.h2.Driver

# 是否开启慢SQL记录
outagedetection=true

# 慢SQL记录标准 2 秒
outagedetectioninterval=2

在这里插入图片描述

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

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

相关文章

10英寸安卓车载平板电脑丨ONERugged车载工业平板:解决农业工作效率

农业是人类社会的基石之一&#xff0c;而农业工作效率的提升一直是农民和农业专业人士关注的重要议题。随着技术的不断进步&#xff0c;车载工业平板成为了解决农业工作效率的创新解决方案。本文将探讨车载工业平板如何为农业带来巨大的改变&#xff0c;提高农民的工作效率和农…

IntelliJ 跨数据源导入数据迁移

有这么一个需求&#xff0c;我们需要把服务器上一个测试表中的输入导入到本地的数据库中。 IntelliJ 已经设置了 2 个数据源。 我们可以通过 IntelliJ 的数据迁移工具在 2 个数据源中进行迁移。 找到需要导出的表 首先我们需要找到需要导出的表&#xff0c;然后从表中选中导…

Unix五种I/O模型(阻塞、非阻塞、多路复用、信号驱动、异步)

文章目录 概要一、I/O基础二、阻塞式I/O三、非阻塞式I/O三、I/O多路复用四、信号驱动I/O五、异步I/O六、小结 概要 在工作中&#xff0c;经常使用Nginx、Redis等开源组件&#xff0c;常提到其高性能的原因是网络I/O的实现是基于epoll&#xff08;多路复用&#xff09;。这次呢…

第1节、电路连接【51单片机+L298N步进电机系列】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;本节介绍如何搭建一个51单片机L298N步进电机控制电路&#xff0c;所用材料均为常见的模块&#xff0c;简单高效的方式搭建起硬件环境。 一、硬件清单 ①51单片机模块 ②恒流模块 ③开关电源 ④L298N模…

JDWP 协议及实现

什么是JDWP &#xff1f; JDWP 是 Java Debug Wire Protocol 的缩写&#xff0c;它定义了调试器&#xff08;debugger&#xff09;和被调试的 Java 虚拟机&#xff08;target vm&#xff09;之间的通信协议。 JDWP 协议介绍 这里首先要说明一下 debugger 和 target vm。Target …

centos 7.6 安装 openldap 2.5.17

centos 7.6 安装ldap 1、下载ldap2、安装ldap2.1、官方参考文档2.2、安装前准备2.2.1、安装gcc2.2.2、安装Cyrus SASL 2.1.272.2.3、安装OpenSSL 1.1.12.2.3.1、下载openssl 3.02.2.3.2、安装依赖包2.2.3.3、编译安装openssl 3.0 2.2.3、安装libevent 2.1.82.2.4、安装libargon…

发送get请求并且发送请求头(header),java实现

发送get请求时&#xff0c;发送请求头&#xff08;Header&#xff09;中的内容 方便第二次调用其他url时传递参数&#xff0c;例如userCode或者租户编码 调用方式 Autowired private HttpServletRequest request;先注入HttpServletRequestpublic xxx xxx(){String url &quo…

SpringBoot集成axis发布WebService服务

文章目录 1、使用maven-web项目生成server-config.wsdd文件1.1、新建maven-web项目1.1.1、新建项目1.1.2、添加依赖 1.2、编写服务接口和实现类1.2.1、OrderService接口1.2.2、OrderServiceImpl实现类 1.3、配置deploy.wsdd文件deploy.wsdd文件 1.4、配置tomcat1.4.1、配置tomc…

基于springboot+vue+mysql员工宿舍管理系统

直达视频演示 技术栈 jdk8springboot vueelement-plusMySQL 包含功能点 管理员端 登录员工管理宿舍管理留言板管理物品报修管理公告管理 员工端 登录首页个人中心物品报修留言板 功能截图(部分) 管理员 管理员登录 员工管理 宿舍管理 物品报修管理 公告管理 留言管理 …

火山引擎ByteHouse:如何为OLAP设计高性能向量检索能力?

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 背景 随着 LLM 技术应用及落地&#xff0c;数据库需要提高向量分析以及 AI 支持能力&#xff0c;向量数据库及向量检索等能力“异军突起”&#xff0c;迎来业界持续…

Bytebase 签约 Vianova,助力欧洲城市交通智能平台中 Snowflake 和 PG 的变更自动化及版本控制

在数字化发展的浪潮中&#xff0c;自动化数据库变更管理成为提升产品上线效率、降低人为失误风险的关键工具&#xff0c;同时促进流程的一致性与标准化&#xff0c;确保合规性和变更的可追溯性。近日&#xff0c;数据库 DevOps 团队协同管理工具 Bytebase 签约欧洲交通数据管理…

【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)

前言 大家好吖&#xff0c;欢迎来到 YY 滴单片机系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过单片机的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…

synchoronized 为什么不能锁 int 或者 long 类型

前言 synchronized(Object) 不能用String常量 因为字符串常量是在内存中同一个地方。如果两个线程锁一个&#xff0c;可能导致死锁。一个线程多次可能导致重入。 也不能用Integer&#xff0c;Long等基础类型。 因为当锁定int或者long时&#xff0c; jvm就会调用Interger.valu…

VXLAN网关技术及应用实例详解

1.特性概述 VXLAN是VLAN扩展方案草案&#xff0c;是NVo3中的一种网络虚拟化技术。采用MAC in UDP封装方式&#xff0c;将二层报文用三层协议进行封装&#xff0c;可对二层网络在三层范围进行扩展&#xff0c;同时支持24bits的VNIID ( 16M租户能力&#xff09;&#xff0c;满足…

甲辰龙年,中国科技十大趋势

先给各位拜个早年。 年关岁末&#xff0c;各大科技厂商、研究机构纷纷发布自己研判的新年十大科技趋势。这些内容当然大有裨益&#xff0c;相信热爱科技的读者朋友也没少关注。 但说句掏心窝子的话&#xff0c;种种十大趋势看多了&#xff0c;不免发现两个问题&#xff0c;一个…

vite+vue3发布自己的npm组件+工具函数

记录一下个人最近一次发布npm组件的过程&#xff1a; 一、创建组件和工具函数 执行命令创建一个空项目&#xff1a; npm create vite 创建过程稍微有些慢&#xff0c;不知何故&#xff1f;其中选择vue , 个人暂时使用的JS 。在 src 目录下面创建一个文件 package 存放组件和公…

Antd+React+react-resizable实现表格拖拽功能

1、先看效果 2、环境准备 "dependencies": {"antd": "^5.4.0","react-resizable": "^3.0.4",},"devDependencies": {"types/react": "^18.0.33","types/react-resizable": "^…

【知识图谱+大模型的紧耦合新范式】Think-on-Graph:解决大模型在医疗、法律、金融等垂直领域的幻觉

Think-on-Graph&#xff1a;解决大模型在医疗、法律、金融等垂直领域的幻觉 Think-on-Graph 原理ToG 算法步骤&#xff1a;想想再查&#xff0c;查查再想实验结果 论文&#xff1a;https://arxiv.org/abs/2307.07697 代码&#xff1a;https://github.com/IDEA-FinAI/ToG Think…

【Linux系统学习】1.初识Linux

初识Linux 操作系统概述 初识Linux 虚拟机介绍 VMware WorkStation安装 1.操作系统概述 了解操作系统的作用 了解常见的操作系统 1.1 硬件和软件 计算机由哪两个主要部分组成&#xff1f; 硬件&#xff1a;计算机系统中由电子&#xff0c;机械和光电元件等组成的各种物理装置的…

AI专题:海外科技巨头指引,AI主线逻辑依旧坚挺

今天分享的是AI 系列深度研究报告&#xff1a;《AI专题&#xff1a;海外科技巨头指引&#xff0c;AI主线逻辑依旧坚挺》。 &#xff08;报告出品方&#xff1a;华西证券&#xff09; 报告共计&#xff1a;54页 本周热点:海外科技巨头指引&#xff0c;AI主线逻辑依旧坚挺 硬件…