SpringBoot+Mybatis-Plus实现逻辑删除

Spring Boot整合MyBatis-Plus:从零搭建到分页逻辑删除实战 在Java后端开发中,对象关系映射与数据库操作往往是工程效率的关键瓶颈。Spring Boot通过自动配置简化了项目搭建,而MyBatis-Plus作为MyBatis的增强工具,在保留原生SQL能力的同时,对单表CRUD、分页查询、逻辑删除等高频操作提供了近乎零配置的解决方案。其核心设计在于BaseMapper与IService接口的内置通用方法,以及条件构造器对动态SQL的封装,让开发者无需编写繁琐的XML映射即可完成大部分数据访问。这种组合特别适合企业内部管理系统、后台管理界面等以单表操作为主的业务场景 阅读详情

SpringBoot+Mybatis-Plus实现逻辑删除

所谓逻辑删除根本上就是我们指定一个字段更改它的状态来标记这条数据是否被删除,和普通的删除相比逻辑删除的数据并不会真正的丢失,只是不展示出来而已。但是我们在查询的时候也是要考虑到的。Mybatis-Plus提供了这个功能。

在这里插入图片描述

官网的截图:侵删

注意只对自动注入的sql有效,自己去写的sql还是要加入限制条件的


下面就讲怎么去使用

1. 建表

必须要有代表逻辑删除的字段,类型在第一张图里 最好将这个字段设置成初始值为0,代表着未删除

CREATE TABLE `user`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `username` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名',
  `password` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码',
  `age` int(10) NULL DEFAULT NULL COMMENT '年龄',
  `deleted` int(1) NULL DEFAULT NULL COMMENT '是否删除',
  PRIMARY KEY (`id`) USING BTREE
)

2. 创建一个Spring boot项目

具体怎么来可以百度搜
在这里插入图片描述
大约是这种结构,小鸟是因为插件

3. 引入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <!--        数据库-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
<!--        lombok 可以不用引入 如果不引入记得实体类生成get/set方法-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--        mabtis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-core</artifactId>
            <version>3.4.1</version>
        </dependency>
    </dependencies>
</project>

4.编写spring boot的配置文件 applicetion.yml

!!!注意数据库用自己的

server:
#  启动后的端口号
  port: 8080
spring:
#  数据库设置  记得换成自己的设置
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/charts?serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
#  mybatis xml文件的位置
  mapper-locations: classpath:mapper/*.xml
  global-config:
    db-config:
#      字段删除时的标记
      logic-delete-value: 1
#      字段未删除时的标记
      logic-not-delete-value: 0
#      全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
      logic-delete-field: deleted

5.实体类

一定要加上这个注解

package com.example.pojo;

import java.io.Serializable;

import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;

/**
 * @TableName user
 */
//这个注解如果报错就是没有引入lombok 或者没有安装lombok插件 删除之后生成get/set方法即可
@Data
public class User implements Serializable {
    /**
     * id
     */
    private Long id;

    /**
     * 用户名
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 年龄
     */
    private Integer age;

    /**
     * 是否删除
     * 这里一定要加这个注解  代表删除字段的标记
     */
    @TableLogic
    private Integer deleted;
}

6.Dao层

package com.example.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.pojo.User;
import org.springframework.stereotype.Repository;

/**
 * 注意继承BaseMapper类,里面有mybatis-plus为我们提供的一些方法
 * 而且只有这些提供的方法才能使用逻辑删除
 */
@Repository
public interface UserDao extends BaseMapper<User> {

}

太麻烦就不写service层了,直接从Conrtoller层调用Dao层,但是大家在学习和工作要养成规范的好习惯

7.Controller层

package com.example.controller;


import com.example.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("user")
public class UserController {
    @Autowired
    UserDao userDao;
    @PostMapping("deleteUserById")
    public boolean deleteUserById(long id){
        //调用mybatis-plus提供的删除方法
        int result = userDao.deleteById(id);
        if (result>0){
            return true;
        }else {
            return false;
        }
    }
}

8.注意

最后别忘了在启动类加这个注解,参数是dao包
在这里插入图片描述

启动

如果看到下面的东西就是启动成功了
在这里插入图片描述

测试一下

数据库
在这里插入图片描述
请求返回
在这里插入图片描述
再看数据库
在这里插入图片描述
最后查看数据库的时候别忘了刷新一下

查询我就不写了,感兴趣的可以写一个查询试试看看是否回过滤掉,当然写个博客更好了
最后附上Gitee地址:https://gitee.com/CXYxiaoming/mybatisplus_luojishanchu.git
有问题可以私信,不一定回复的及时

Springboot整合MyBatis-plus:单条数据删除、批量删除、条件删除、逻辑删除 Springboot整合MyBatis-plus:单条数据删除、批量删除、条件删除、逻辑删除 一、单条数据删除 //单个删除 @Test public void testDeleteById(){ stuMapper.deleteById(2); } 二、批量删除 @Test public void testDeleteBatchId(){ stuMapper.deleteBatchIds(Arrays.asList(3,4,5 阅读详情

相关推荐

langchain4j+milvus实战

本文主要研究一下如何使用langchain4j来对接向量数据库milvus。

go4it 1472

SpringBoot实现增删改查

查询(Get): controller: @RequestMapping("/user") public class UserController { @Autowired private UserMapper userMapper; @GetMapping public List<User> index(){ List<User> all = userMapper.findAll(); return all;

CoCo629vanilla的博客 9648

告别理论!手把手教你用Vivado 2020.2为ZYNQ PL端打造一个AXI4-Full读写DDR的IP核

本文详细介绍了如何使用Vivado 2020.2为ZYNQ PL端创建AXI4-Full主控IP核,实现高效读写DDR内存的实战指南。通过环境配置、IP核创建、系统集成到软件调试的全流程讲解,帮助开发者快速掌握AXI4-Full协议在ZYNQ平台上的应用,提升PL与PS协同工作的数据传输效率。

weixin_30300225的博客 467

mysql一行多列变成一列多行_MySQL ------ 删除数据(DELETE) (二十二)

delete : 删除表中的数据主要分为两种方式: 从表中删除所有的行和从表中删除特定的行,就看使不使用你条件过滤删除表中所有数据 使用delete 时一定要注意,要不是完全确定建议不要一下 删除所有行。1、删除单行-- delete from 表名 where 主键列 = 主键值 ; 2、删除多行delete 注意:  1、delete 不需要列名或通配符,delete 删除的是整行而不是整...

weixin_39970064的博客 389

瑞萨RA6M4平台I2C驱动移植实战:MPU6050传感器集成指南

本文详细介绍了在瑞萨RA6M4平台上进行I2C驱动移植并集成MPU6050传感器的实战指南。通过FSP配置工具添加I2C主栈,适配MPU6050官方驱动,实现传感器数据读取与调试,为嵌入式开发提供完整的解决方案。

banana的博客 109

C#实战:如何用Chart控件打造专业级数据可视化报表(附完整代码)

本文详细介绍了如何使用C#的Chart控件创建专业级数据可视化报表,涵盖柱状图、饼图和雷达图等多种图表类型的高级定制与交互增强。通过完整的代码示例,展示了从环境配置到动态数据绑定的全流程,助力开发者提升企业级应用的数据可视化能力。

ipfs8storage的博客 420

SpringBoot逻辑删除

文章目录前言一、逻辑删除是什么?二、使用步骤1.后端配置文件2.实体类字段3.后端Controller调用4.数据库字段总结 前言 随着后端技术的不断发展,SpringBoot也越来越常用,很多人都开始使用这个框架,本文就介绍了关于这个框架的逻辑删除的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、逻辑删除是什么? 逻辑删除是基于SpringBoot自带的一种删除方法,该方法可以进行软删除,而不是真正的删除。 二、使用步骤 1.后端配置文件 代码如下(示例): mybatis-plus

又菜又爱写 2267

新版ThingsBoard 4.2.0在windows上用IDEA编译记录

编译thingsboard4.2.0在windows上使用Idea

hssjf的专栏 1482

Springboot+MybatisPlus新特性之逻辑删除、乐观锁、自动填充

公共字段的自动填充功能 自动更新全局属性,比如创建的时间修改的时间,这样就不用每执行一次插入更新操作都带上一个set大大节省了很多效率,从而也避免为了因为时间格式的不统一问题。 为了输出日志到控制台引入日志的依赖: <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</ver

阿P的技术博客 1099

SAP ABAP 实用小技巧合集 (一)

本合集包含了笔者从事 ABAP 开发 17 年以来积累的小技巧。持续更新。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3224

Silvaco TCAD 半导体器件仿真全攻略:从入门到精通

本文介绍了Silvaco TCAD半导体器件仿真平台的核心功能与应用方法。主要内容包括: Silvaco TCAD的核心模块组成(ATHENA工艺仿真和ATLAS器件仿真)及其在半导体研发中的重要作用,能够通过数值仿真预测器件电学特性,显著降低研发成本。 环境配置要点,包括内存分配、文件目录管理和许可证验证,为仿真工作提供基础保障。 仿真核心概念:详细讲解了网格划分策略和物理模型选择原则,强调基于物理直觉的自适应加密网格方法。 以PN结二极管为例,提供了完整的仿真代码示例,涵盖从网格定义、掺杂设置到结果分析

huanghm88的专栏 201

springboot注解方式实现逻辑删除

问题: springboot注解方式实现逻辑删除 1.增加配置插件 2.增加实体类相关字段注解

柯小帅的博客 978

[QMT量化交易小白入门]-十二、QMT回测龙头打首板和连板的策略

class a():passA = a() #创建空的类的实例 用来保存委托状态field_list定义了需要的市场数据字段,而类a用于保存交易状态。

木头大左的博客 4759

《第14节》SpringBoot3之MyBatis Plus逻辑删除

本文介绍了MyBatis Plus中的逻辑删除功能实现方法。逻辑删除通过设置删除标识来保留数据而非物理删除,MyBatis Plus可自动拦截SQL实现该功能。文章详细说明了两种配置方式:全局配置文件设置和@TableLogic注解。重点强调了逻辑删除必须结合字段自动填充功能,并提供了测试代码验证效果。最后指出可能导致逻辑删除失效的两种情况:未使用自动填充字段或配置字段名称不一致。该功能简化了开发中的删除操作,保留了数据安全性。

✅ Java 开发工程师 1070

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SpringBoot之Mybatis-plus逻辑删除

SpringBoot之Mybatis-plus逻辑删除 1. 添加deleted字段 2.实体类添加deleted 字段,并加注解@TableLogic 3.由于使用了自动填充注解@TableField,所以需要添加元对象处理器 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObject; import org.slf4j.Logger;

qq_43791139的博客 1209

SpringBoot项目中使用Mybatis-plus实现逻辑删除

SpringBoot项目中使用Mybatis-plus实现逻辑删除 删除分为:物理删除、批量删除、逻辑删除 物理删除: 删除数据库表中的数据 逻辑删除: 通过表中的字段标志,表示数据是否被删除,比如设置表中字段deleted的值为0或者1,1表示已经被删除了,则查询操作不能查到该数据,如果是0表示数据没有被删除,查询能够查询到数据 物理删除 @Test public void deleteById(){ userMapepr.deleteById("13423144758189547

weixin_51370812的博客 1790

springBoot-MyBatis-Plus逻辑删除@TableLogic

总的来说,@TableLogic 注解只能对 MyBatis Plus 自动注入的 SQL 生效,不能对手写 SQL 生效,如果需要使用逻辑删除功能,就需要选用 MyBatis Plus 的自动注入 SQL 功能来实现。但是,@TableLogic 注解只对 MyBatis Plus 自动注入的 SQL 生效,不针对手写 SQL 生效,这是因为逻辑删除的原理是在 MyBatis Plus 自动注入的 SQL 中做了特殊处理,实现了逻辑删除功能。即: and 定义的逻辑删除字段 = 定义的正常值;

拽着尾巴的鱼儿的博客 4038

Spring Boot+MyBatis-Plus逻辑删除实现

如果你需要更复杂的删除逻辑,可以这样实现:java@Override// 方式1:使用UpdateWrapper// 或者方式2:先查询再更新if (file!= null) {字段名不是默认的deleted删除标识的值不是默认的 1/0(比如使用 Y/N、true/false 等)多个实体类使用不同的逻辑删除配置对于你的代码,最简单的做法是:java@Data@TableLogic // 使用默认配置:字段名deleted,值1/0。

BillKu的博客 639

SpringBoot3+MyBatis Plus逻辑删除实战指南

逻辑删除是数据库设计中常用的数据保留技术,通过在表中设置标记字段实现软删除效果。其核心原理是将删除操作转换为更新操作,既满足业务删除需求,又保留历史数据完整性。MyBatis Plus框架提供了开箱即用的逻辑删除支持,能自动过滤已删除数据、转换删除操作为更新语句。在电商系统、订单管理等企业级应用中,逻辑删除能有效避免误删重要数据的问题。本文以SpringBoot3项目为例,详细演示如何配置MyBatis Plus逻辑删除功能,包括依赖引入、实体类注解、全局配置等关键步骤,并分享实际项目中的最佳实践和性能优化

weixin_30575517的博客 262

SpringBoot3+MyBatis-Plus实战:5分钟搭建并落地分页与逻辑删除

Java后端开发中,SpringBoot与MyBatis-Plus的组合长期是CRUD工程的高效选择,但进入SpringBoot3时代后,JDK17成为硬门槛,自动配置机制与Servlet包名变更也让部分旧版Starter失效。理解版本兼容原理,是避免启动成功但Mapper注入为空等诡异问题的关键。MyBatis-Plus的分页插件、自动填充与逻辑删除等高频能力,不仅减少模板代码,更影响查询性能和数据安全。在实际项目中,正确引入mybatis-plus-spring-boot3-starter、注册分页拦截

weixin_32247165的博客 137

(二)springboot中使用mybatis-plus,CRUD,主键自增,逻辑删除

一、insert 1、插入操作 @RunWith(SpringRunner.class) @SpringBootTest public class CRUDTests { @Autowired private UserMapper userMapper; @Test public void testInsert(){ User user = new User(); user.setName("Helen"); user.s

TheGreatButton的博客 3891

OpenCore-ISO故障排查合集:Secure Boot、CD/DVD挂载、鼠标冻结等8大常见启动失败场景与解决方案

在 Proxmox VE 或 QEMU/KVM 上用 **OpenCore-ISO** 创建 macOS 虚拟机时,很多新手会卡在“虚拟机起不来”这一步。本文整理了 OpenCore-ISO 故障排查中最常见的 8 大启动失败场景——Secure Boot 未关闭、CD/DVD 挂载方式错误、CPU 型号不匹配、鼠标光标冻结等——并给出逐项可执行的解决方案。按照本文的排查清单,基本可以在 10 分

gitblog_01007的博客 640

SpringBoot 结合 MyBatis-plus 进行逻辑删除

SpringBoot 结合 MyBatis-plus 进行逻辑删除

白白白鲤鱼的博客 2520

SpringBoot中mybatis-plus的逻辑删除

3.0.5 版本 //逻辑删除 @Test public void del(){ //表中添加一个逻辑删除的字段 对应实体类添加的属性 并添加注解 @TableLogic //逻辑删除注解 // 配置逻辑删除插件 int i = userMapper.deleteById(2); System.out.println(i); } // 逻辑删除组件! @Bean public ISqlInjector sqlInjector()...

Json的知识梦工厂 443

SpringBoot整合MyBatis-Plus,实现代码生成器,逻辑删除,自动填充,分页插件等功能

SpringBoot整合MyBatis-Plus,实现代码生成器,逻辑删除,自动填充等功能 mybatis-plus简介: Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这是官方给的定义,关于mybatis-plus的更多介绍及特性,可以参考mybatis-plus官网。那么它是怎么增强的呢?其实就是它已经封装好了一些crud方法,我们不需要再写xml了,直接调用这些方法就行,就类似于JPA。 1.添加pom引

qq_45934356的博客 1938

MyBatis-Plus中的逻辑删除使用

开发系统时,有时候在实现功能时,删除操作需要实现逻辑删除就是将数据标记为删除,而并非真的物理删除(非DELETE操作),查询时需要携带状态条件,确保被标记的数据不被查询到。这样做的目的就是避免数据被真正的删除。 MP就提供了这样的功能,方便我们使用,接下来我们一起学习下~

心态的博客 3178
上一篇: SpringBoot+BCrypt实现简单的密码加密
下一篇: JDK8新特性
程序猿-小明
博客等级 码龄6年 2粉丝 4原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值