中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MybatisPlus中的刪除和邏輯刪除及區別介紹

發布時間:2020-09-19 19:44:22 來源:腳本之家 閱讀:350 作者:qq_43742526 欄目:開發技術

刪除又分為邏輯刪除和物理刪除,那么它們有什么區別呢?
物理刪除:真實刪除,將對應數據從數據庫中刪除,之后查詢不到此條被刪除數據。
邏輯刪除:假刪除,將對應數據中代表是否被刪除字段狀態修改為“被刪除狀態”,之后在數據庫中仍舊能看到此條數據記錄。
在我們日常開發中,為了保留數據,經常會使用邏輯刪除的方式進行數據刪除,下面我們就來看看物理刪除與邏輯刪除怎么實現的吧
首先假設我有這樣一張表

MybatisPlus中的刪除和邏輯刪除及區別介紹

實體類:

package com.atguigu.mybatis_plus.entity;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
@Data
public class User {
  @TableId(type = IdType.AUTO)
  private Long id;
  private String name;
  private Integer age;
  private String email;
  @TableField(fill = FieldFill.INSERT)
  private Date createTime;
  // @TableField(fill = FieldFill.UPDATE)
  @TableField(fill = FieldFill.INSERT_UPDATE)
  private Date updateTime;
  
}

userMapper接口:

package com.atguigu.mybatis_plus.mapper;
import com.atguigu.mybatis_plus.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
// 繼承BaseMapper后UserMapper就具有了CRUD功能
public interface UserMapper extends BaseMapper<User>{
}

一、物理刪除

1、根據id刪除記錄

@Test
  public void testLogicDelete() {
    int count = userMapper.deleteById(1L); // 刪除id為1的數據
    System.out.println("受影響的行數"+count);
  }

2、批量刪除

@Test
public void testDeleteBatchIds() {
  int result = userMapper.deleteBatchIds(Arrays.asList(2, 3, 4)); // 刪除id為2,3,4的數據
  System.out.println(result);
}

結果:

MybatisPlus中的刪除和邏輯刪除及區別介紹

物理刪除比較簡單,接下來我們看看邏輯刪除怎么實現吧!

二、邏輯刪除

(1)數據庫修改,添加 deleted字段

MybatisPlus中的刪除和邏輯刪除及區別介紹

(2)實體類修改,添加deleted 字段,并加上 @TableLogic 注解

/*
  加@TableLogic的情況下,程序內部會將delete語句變為update語句
  實際上我們寫的代碼并不需要做出什么改變
  */
  @TableLogic
  private Integer deleted;

(3)測試

	/**
   * 邏輯刪除
   */
  @Test
  public void testLogicDelete() {
    int count = userMapper.deleteById(5L);
    System.out.println("受影響的行數"+count);
  }

結果:

MybatisPlus中的刪除和邏輯刪除及區別介紹
MybatisPlus中的刪除和邏輯刪除及區別介紹

  • 測試后發現,數據并沒有被刪除,deleted字段的值由0變成了1
  • 測試后分析打印的sql語句,是一條update
  • 注意:被刪除前,數據的deleted 字段的值必須是 0,才能被選取出來執行邏輯刪除的操作

(5)測試邏輯刪除后的查詢,MyBatis Plus中查詢操作也會自動添加邏輯刪除字段的判斷

@Test
  public void testSelect() {
    List<User> users = userMapper.selectList(null); // 查詢所有記錄
    users.forEach(System.out::println); // 遍歷輸出
  }

結果:

MybatisPlus中的刪除和邏輯刪除及區別介紹

總結

到此這篇關于MybatisPlus中的刪除和邏輯刪除及區別介紹的文章就介紹到這了,更多相關MybatisPlus刪除和邏輯刪除內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青川县| 水城县| 莆田市| 扶风县| 鄂州市| 晋宁县| 抚远县| 武乡县| 叶城县| 古蔺县| 普兰店市| 绥江县| 灵丘县| 灵台县| 合肥市| 黄大仙区| 马龙县| 报价| 化德县| 渝中区| 开化县| 武平县| 云和县| 呼伦贝尔市| 常宁市| 清新县| 新津县| 招远市| 兰西县| 临潭县| 中宁县| 西充县| 长岛县| 尼玛县| 连城县| 鹤庆县| 当涂县| 盐边县| 左云县| 绩溪县| 大埔县|