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

26.自动填充 逻辑删除

课次26:自动填充 & 逻辑删除
一、教学目标
配置自动填充(createTime, updateTime)。
验证逻辑删除功能。
二、核心知识点(简要)
MetaObjectHandler:字段自动填充处理器。
@TableField(fill):指定填充时机(INSERT, UPDATE等)。
逻辑删除:UPDATE deleted字段代替物理删除,查询自动过滤。
三、操作步骤

  1. 继续在上次课(25次课)的基础上更改:
    上次课的工程目录如下图所示:(仔细对照一下,看看自己的工程目录结构是否有错误)

image

  1. 创建自动填充处理器:
    右键config文件夹,创建MyMetaObjectHandler类

image

类中的代码如下所示:

package com.weitoutiao.config;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
}
}
3.在News实体中确认已有updateTime字段(已在课次24添加)
4. 测试逻辑删除:
在testSelect文件的最后继续添加测试类NewsMapperTest,添加的位置和代码代码如下:

image

@SpringBootTest
class NewsMapperTest {
@Autowired
private NewsMapper newsMapper;
@Test
void testDelete() {
int rows = newsMapper.deleteById(1);
System.out.println("删除条数:" + rows);
// 控制台应输出UPDATE news SET deleted=1 WHERE id=1
}
}
有红色错误,就鼠标悬停错误位置,选择导入类。

  1. 运行测试
    逻辑删除前,通过SQLyog查看news表中的数据如下:

image

运行测试程序,点击图示中的运行按钮
image

控制台输出如下:
image

news表中id为1的这条数据,其中的deleted变为了1,代表删除成功。
image

四、本次课最终的目录结构
{{image.png(uploading...)}}
数据,只是通过一个字段用来标识被删除的记录,数据仍然保存在数据库中。

在实际的工作当中,因为数据非常重要,为了防止因用户误操作删除数据后无法恢复的问题,我们通常不会对数据做物理删除,即将数据从数据库中直接删除。而是多采用逻辑删除的方式,即不会真正在删除库删除数据,而是使用一个字段来标识它已经被删除。

如使用 isDeleted 字段标识该条记录是否已经被删除,0代表未删除,1代表已删除。此时对数据库做增删改查的SQL语句会发生如下变化:

• 插入:没有变化;

• 删除:转变为修改操作,即修改字段 isDeleted 为1;

• 修改:需要追加 where 子句,以排除 isDeleted 为1 的数据;

• 查询:需要追加 where 子句,以排除 isDeleted 为1 的数据。

例如:

查询数据:select * from user WHERE isDeleted=0

删除数据:UPDATE user SET isDeleted=1 WHERE id=10 AND isDeleted=0

http://www.jsqmd.com/news/1029929/

相关文章:

  • 2026年安徽普高落榜择校指南,适合低分孩子的学校推荐 - 小张zc
  • 基于LCU API的英雄联盟客户端工具包架构设计与技术实现
  • 2026年 缠绕机厂家推荐排行榜:托盘/在线/自动缠绕机及薄膜裹包机优质品牌深度解析与选购指南 - 企业推荐官【官方】
  • 揭秘PyWxDump 4.0:如何破解微信数据解析的四大技术壁垒
  • AI公司介绍:每个老板都应该准备一份AI能读懂的公司介绍 - 招财兔数字员工
  • Microsoft Office LTSC 2021 for Mac 16.110 发布 - 文档、电子表格、演示文稿和电子邮件
  • 跨平台APK资源编辑:开源工具的完整解决方案与技术架构解析
  • Java毕设项目:基于 Spring Boot 的会议室使用登记与预约管理系统设计 高效办公配套会议室预约服务系统设计与实现(源码+文档,讲解、调试运行,定制等)
  • Claude Code CLI无缝切换Gemini 2.5 Pro实战指南
  • HPE SPP 2026.05.00.00 - HPE 服务器固件、驱动程序和系统软件包
  • 近五成学子顺利深造!就业学生超半数入职国企!东北大学资源与土木工程学院解锁多元未来 - 品牌2026
  • 中年转行数据科学家:用行业经验撬动真实项目
  • 喜马拉雅音频下载终极指南:3步轻松保存付费内容到本地
  • VirtualBox 7.2.10 (macOS, Linux, Windows) - 开源跨平台虚拟化软件
  • 国产大模型合规落地指南:从RAG优化到政务AI审计要点
  • 基于NXP JN516x-EK003套件的ZigBee RF4CE无线遥控开发实战指南
  • 寄重货怎么便宜?试试这招省一半运费 - 快递物流资讯
  • 国产大模型平替Gemini:免登录合同审查实战指南
  • 2026江苏阳光房安装公司 TOP5实测 - LYL仔仔
  • 院士团队领衔!探秘东北大学资源与土木工程学院硬核师资与科研平台 - 品牌2026
  • 2026年6月北京长途搬家公司推荐:五大榜专业评测跨省搬家防损坏价格适用场景 - 品牌推荐
  • 2026江苏不锈钢包边公司 实测本地 - LYL仔仔
  • 返聘协议起草律师事务所:退休返聘协议怎么写?北京专业律所协议起草与风险防范 - 品牌2026
  • 喜马拉雅VIP音频下载难题破解:这款跨平台工具如何安全保存你的付费内容?
  • 高端腕表保养周期到底怎么算?亨得利维修预约官方联系电话与送修前必知的五条判断标准 - 亨得利官方售后
  • 2026长沙高端系统门窗定制全攻略:断桥铝隔音隔热与极窄边框品牌深度横评 - 优质企业观察收录
  • 2026年气动打包机厂家推荐排行榜:捆扎机、塑钢带打包机、拉紧器品牌与源头公司深度解析 - 品牌发掘
  • 2026深圳黄金回收横评|走访多家实体门店,称重透明全程不压价,黄金变现避坑指南 - 奢侈品回收测评
  • 推荐一下福州专业的雅思一对一培训正规机构:首发 - 品牌推广大师
  • 从Jupyter Notebook到生产环境的机器学习模型部署实战