91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

屏山县| 九龙坡区| 永顺县| 竹北市| 十堰市| 榆中县| 龙门县| 惠州市| 北辰区| 垫江县| 宜兰县| 巴东县| 黄龙县| 绥宁县| 同德县| 翼城县| 阳朔县| 红原县| 手机| 石城县| 罗定市| 庆阳市| 阳泉市| 苏尼特右旗| 霍林郭勒市| 乌兰察布市| 瑞金市| 巴彦淖尔市| 定远县| 亳州市| 灵寿县| 皋兰县| 梅州市| 巴林右旗| 青龙| 四会市| 浮山县| 北碚区| 兴城市| 思茅市| 灌云县|