当前位置: 首页 > news >正文

MyBatis-Plus 框架中的自定义元对象处理器

目录

  • 一、代码展示
  • 二、代码解读

一、代码展示

package com.minster.yanapi.handler;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;import java.util.Date;
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {//实现MetaObjectHandler//配置自动填充 拦截器//insert操作时填充方法@Overridepublic void insertFill(MetaObject metaObject) {this.setFieldValByName("createTime", new Date(), metaObject);   //创建时间this.setFieldValByName("updateTime", new Date(), metaObject);   //创建时间this.setFieldValByName("avatar","https://pic4.zhimg.com/v2-53a632ca6e89dcdc31b31b3d193fe55b_r.jpg",metaObject);
//        this.setFieldValByName("status",3,metaObject);}//update操作时填充方法@Overridepublic void updateFill(MetaObject metaObject) { //填充 更新时间this.setFieldValByName("updateTime", new Date(), metaObject);}
}

二、代码解读

这段代码是一个 MyBatis-Plus 框架中的自定义元对象处理器(MetaObjectHandler)。主要用于在执行数据库操作时,自动填充一些字段的值,例如创建时间和更新时间。

  1. 包结构和导入:

    • com.minster.yanapi.handler 是代码所在的包路径。
    • com.baomidou.mybatisplus.core.handlers.MetaObjectHandler 是 MyBatis-Plus 框架提供的元对象处理器接口。
    • org.apache.ibatis.reflection.MetaObject 是 MyBatis 框架提供的反射工具类。
    • org.springframework.stereotype.Component 是 Spring 框架的注解,用于声明该类是一个 Spring 组件。
  2. 类声明:

    • MyMetaObjectHandler 类实现了 MetaObjectHandler 接口。
    • 使用了 @Component 注解,将该类标记为一个 Spring 组件,使其能够被 Spring 容器扫描并进行管理。
  3. 自动填充方法:

    • insertFill 方法用于在执行插入操作时进行自动填充。通过调用 setFieldValByName 方法设置字段的值。
      • createTime 字段被填充为当前的日期时间。
      • updateTime 字段同样被填充为当前的日期时间。
      • avatar 字段被填充为固定的图片链接。
      • 注释中提到的 status 字段被注释掉,没有进行填充。
    • updateFill 方法用于在执行更新操作时进行自动填充。只填充了 updateTime 字段,将其设置为当前的日期时间。
  4. 总结:

    • 该类主要通过实现 MyBatis-Plus 的 MetaObjectHandler 接口,实现了插入和更新时的自动填充功能,为指定的字段赋予特定的值,简化了数据库操作中的字段填充过程。
    • 在 Spring 中通过 @Component 注解,将其纳入 Spring 容器进行管理。
http://www.lryc.cn/news/311592.html

相关文章:

  • Node.js_基础知识(fs模块 - 文件操作)
  • 基于C#开发OPC DA客户端——搭建KEPServerEX服务
  • 让你的函数,返回你需要的“两个值” (函数传址、结构体作为参数传参)
  • 快速上手:在 Android 设备上运行 Pipy
  • 【操作系统学习笔记】文件管理1.3
  • 基于springboot+vue的酒店管理系统
  • Linux 相关命令
  • 阿里云搭建私有docker仓库(学习)
  • MySQL数据库基本操作(一)
  • 【暗月安全】2021年渗透测试全套培训视频
  • HTML极速入门
  • Django框架——请求与响应
  • rearrangement-challenge-2022环境使用学习(一)
  • [Uniapp]携带参数跳转界面(两种方法)
  • Scrapy与分布式开发(2.1.2):python常用网络请求库httpx
  • 07. Nginx进阶-Nginx负载均衡
  • windows/linux下其他位置调用指定nodejs脚本报错Error: Cannot find module ‘esm’
  • 2024-03-05 linux 分区老显示满,Use 100%,原因是SquashFS 是一种只读文件系统,它在创建时就已经被填满,所有空间都被使用。
  • 蓝桥杯倒计时 41天 - KMP 算法
  • 《汇编语言》- 读书笔记 - 第13章-int 指令
  • 深入了解 Golang 条件语句:if、else、else if 和嵌套 if 的实用示例
  • 大数据和机器学习在气象预报中的应用-张平文院士
  • C#高级:Winform桌面开发中DataGridView的详解
  • java八股文复习-----2024/03/05----基础---反射,动态代理。序列化
  • 【人工智能】Anthropic发布强大的Claude3对齐GPT-4,大模型杂谈个人感想
  • 基于openKylin与RISC-V的MindSpore AI项目实践
  • 【牛客】VL64 时钟切换
  • Java设计模式——桥连模式
  • 数据结构与算法:堆排序和TOP-K问题
  • 【NR 定位】3GPP NR Positioning 5G定位标准解读(三)