Mybatis-plus神技:公共字段填充

背景

在日常开发中,我们经常需要处理一些公共字段的自动填充,例如在每次插入或更新数据时自动设置创建时间和更新时间。这些重复性的工作可以通过 MyBatis-Plus 提供的 MetaObjectHandler 接口来简化,实现公共字段的自动填充,提高开发效率并减少代码冗余。

使用方法

1. 实体类注解配置

首先,我们需要在实体类中使用 @TableField 注解标记出需要自动填充的字段,并指定对应的填充策略:

import com.baomidou.mybatisplus.annotation.*;import java.util.Date;@TableName("your_table")
public class YourEntity {@TableIdprivate Long id;private String name;@TableField(fill = FieldFill.INSERT)private Date createTime;@TableField(fill = FieldFill.UPDATE)private Date updateTime;// 省略 getter 和 setter 方法
}

2. 实现 MetaObjectHandler 接口

接下来,我们实现 MetaObjectHandler 接口,并定义插入和更新时字段的自动填充逻辑:

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import java.util.Date;public class MyMetaObjectHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {this.strictInsertFill(metaObject, "createTime", Date.class, new Date()); // 插入操作自动填充 createTime}@Overridepublic void updateFill(MetaObject metaObject) {this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date()); // 更新操作自动填充 updateTime}
}

3. 配置 MyBatis-Plus

最后,在 MyBatis-Plus 的配置类中注册 MyMetaObjectHandler 实例,并配置插件:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;@Configuration
public class MybatisPlusConfig {@Beanpublic MyMetaObjectHandler myMetaObjectHandler() {return new MyMetaObjectHandler();}@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());// 可以添加其他的拦截器return interceptor;}
}

现在,每当执行插入或更新操作时,MyBatis-Plus 会自动调用 MyMetaObjectHandler 实现的方法来填充 createTimeupdateTime 字段。

总结

MetaObjectHandler 是 MyBatis-Plus 提供的一个强大的接口,用于处理实体类公共字段的自动填充。通过实现此接口,我们可以极大地简化对于创建时间、更新时间等字段的处理逻辑,使得代码更加简洁,并且保持了一致性和可维护性。这种自动填充功能是 MyBatis-Plus 的一大特色,能够有效地提升开发效率。在实践中,我们可以根据实际的业务需求来自定义填充策略,使其更贴合项目的需求。

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

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

相关文章

微信小程序原生<map>地图实现标记多个位置以及map 组件 callout 自定义气泡

老规矩先上效果图: 1 、在pages文件夹下新建image文件夹用来存放标记的图片。 2、代码片段 也可以参考小程序文档:https://developers.weixin.qq.com/miniprogram/dev/component/map.html index.wxml代码 <mapid="map"style="width: 100%; height:100%;&…

mybatis源码阅读系列(二)

前言 上一篇文章mybatis源码阅读系列&#xff08;一&#xff09;介绍了mybatis和原生jdbc的区别&#xff0c;并通过代码展示了两者的运行过程和结果&#xff0c;下面让我们继续详细了解下mybatis的执行过程&#xff1b; package com.wyl.mybatis.service;import com.wyl.mybat…

openCV实现拖拽虚拟方块

一、项目效果&#xff1a; 二、核心流程&#xff1a; openCV读取视频流、在每一帧图片上画一个矩形。使用mediapipe获取手指关键点坐标。根据手指坐标位置和矩形的坐标位置&#xff0c;判断手指点是否在矩形上&#xff0c;如果在则矩形跟随手指移动。 三、代码流程&#xff1…

MySQL 读写分离中的过期读问题及其解决方案

MySQL读写分离是一种常见的数据库架构优化手段&#xff0c;通过将读操作分散到多个从库&#xff0c;以减轻主库的压力&#xff0c;提高系统的响应速度和并发能力。然而&#xff0c;这种架构下会出现“过期读”问题&#xff0c;即由于主从之间数据同步存在延迟&#xff0c;导致从…

【系统架构师】-第3章-信息系统基础知识

1、信息系统的基本功能 输入&#xff1a;决定于系统所要达到的目的及系统的能力和信息环境的许可存储&#xff1a;存储各种信息资料和数据的能力处理&#xff1a;数据处理工具&#xff0c;利用OLAP、DM&#xff08;数据挖掘&#xff09;技术输出&#xff1a;保证最终实现最佳的…

qml 触摸事件

一.qml 触摸事件讲解 QML触摸事件是通过信号和槽机制实现的&#xff0c;在QML中&#xff0c;触摸事件通常使用MouseArea或MultiPointTouchArea元素来处理。 QML中的触摸事件处理背后原理是基于信号和槽机制&#xff0c;当用户与界面交互时&#xff0c;如触摸屏幕&#xff0c;相…

AI人员入侵识别摄像机

AI人员入侵识别摄像机是一种智能监控设备&#xff0c;利用人工智能技术辨认并报警可能的入侵行为。这种摄像机利用深度学习算法实时分析监控画面&#xff0c;识别出普通行人和潜在入侵者之间的差异&#xff0c;从而更准确地预警可能发生的安全事件。 该摄像机通过对比数据库中存…

springboot项目学习-瑞吉外卖(1)

第一天任务如下&#xff1a; 建立基本架构完成登录、退出功能 注意&#xff1a;本博客没有使用网上教程里的mybatis-plus&#xff0c;使用的是mybatis&#xff1b;数据库连接池也没有使用教程里的druid&#xff0c;使用的是spring自带的连接池 基本架构 common包&#xff1a;存…

Xml文件解析

Xml文件解析 在Python中解析XML文件通常使用标准库中的xml.etree.ElementTree模块&#xff0c;或者使用第三方库如lxml。下面将分别介绍使用这两种方法来解析XML文件。 使用xml.etree.ElementTree解析XML文件 xml.etree.ElementTree是Python的内置库&#xff0c;用于解析XML文…

【Linux进程状态】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、直接谈论Linux的进程状态 看看Linux内核源代码怎么说 1.1、R状态 -----> 进程运行的状态 1.2、S状态 -----> 休眠状态(进程在等待“资源”就绪) 1.3、T状…

奇怪的比赛(Python,递归,状态压缩动态规划dp)

目录 前言&#xff1a;题目&#xff1a;思路&#xff1a;递归&#xff1a;代码及详细注释&#xff1a; 状态压缩dp&#xff1a;代码及详细注释&#xff1a; 总结&#xff1a; 前言&#xff1a; 这道题原本是蓝桥上的题&#xff0c;现在搜不到了&#xff0c;网上关于此题的讲解…

echo,date,bc命令详解

文章目录 echo&#xff0c;date&#xff0c;bc命令详解echo(输出文本)date(显示日期的命令)date命令的--date选项date命令 bc(高精度计算器) echo&#xff0c;date&#xff0c;bc命令详解 echo(输出文本) echo命令是一个常用的Shell命令&#xff0c;用于在终端上输出文本。它…

Python爬虫:原理与实战

引言 在当今的信息时代&#xff0c;互联网上的数据如同浩瀚的海洋&#xff0c;充满了无尽的宝藏。Python爬虫作为一种高效的数据抓取工具&#xff0c;能够帮助我们轻松地获取这些数据&#xff0c;并进行后续的分析和处理。本文将深入探讨Python爬虫的原理&#xff0c;并结合实战…

企业的数据治理如何评估

在数字化时代&#xff0c;企业对数据的管理和利用已经成为了一个关键的竞争力。通过有效的数据治理&#xff0c;企业能够更好地理解、分析和应用数据&#xff0c;从而提升决策的准确性和效率。然而&#xff0c;要构建一个高效可靠的数据管理体系&#xff0c;并进行评估&#xf…

acp认证考试费用多少?

2023年阿里云大数据ACP认证费用为1200元。请注意&#xff0c;此费用涵盖一次考试机会&#xff0c;若未能通过考试&#xff0c;需要重新缴费才能再次参加考试。 二、考试方式与地点 阿里云大数据ACP认证考试采用线上或线下考试方式。无论你身在何处&#xff0c;都可以方便地参…

Docker环境快速搭建RocketMq

window上面安装&#xff1a; 1.Namesrv docker pull rocketmqinc/rocketmq创建C:/docker/rocketmq/data/namesrv/logs:/root/logs C:/docker/rocketmq/data/namesrv/store:/root/store 目录 namesrv: docker run -d --restartalways --name rmqnamesrv -p 9876:9876 -v C:/do…

kkview远程控制: 内网远程桌面控制软件

内网远程桌面控制软件&#xff1a;高效、安全的远程管理方案 在信息技术日新月异的今天&#xff0c;内网远程桌面控制软件已成为许多企业和个人用户不可或缺的工具。这类软件允许用户通过内部网络&#xff0c;实现对其他计算机的远程访问和控制&#xff0c;从而大大提高工作效…

LLM大语言模型(七):部署ChatGLM3-6B并提供HTTP server能力

目录 HighLight 部署ChatGLM3-6B并开启HTTP server能力 下载embedding模型bge-large-zh-v1.5 HTTP接口问答示例 LLM讲了个尴尬的笑话~ HighLight 将LLM服务化&#xff08;如提供HTTP server能力&#xff09;&#xff0c;才能在其上构建自己的应用。 部署ChatGLM3-6B并开启…

[Windows] Win11 常用快捷键

文章目录 &#x1f680; [Windows] Win11 常用快捷键&#x1f310; Windows 操作系统&#x1f525; Windows 11 &#x1f310; Windows 11 快捷键概览&#x1f525; 基本快捷键&#x1f525; 窗口快捷键&#x1f525; 功能快捷键 &#x1f4dd; 小结 &#x1f680; [Windows] W…

工欲善其事,必先利其器,Markdown和Mermaid的梦幻联动(2)

该文章Github地址&#xff1a;https://github.com/AntonyCheng/typora-notes/tree/master/chapter03-mermaid 在此介绍一下作者开源的SpringBoot项目初始化模板&#xff08;Github仓库地址&#xff1a;https://github.com/AntonyCheng/spring-boot-init-template & CSDN文…