亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

南丰县| 体育| 榆中县| 南投市| 桑植县| 通州市| 伊金霍洛旗| 虞城县| 韶山市| 大田县| 农安县| 长春市| 延边| 虞城县| 融水| 平凉市| 西林县| 清苑县| 江门市| 台东县| 建昌县| 蓝田县| 巢湖市| 忻城县| 毕节市| 通化县| 临颍县| 保康县| 凤庆县| 巴青县| 张家川| 揭西县| 苗栗县| 康乐县| 定结县| 容城县| 洛扎县| 丽江市| 涪陵区| 讷河市| 屯门区|