最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MybatisPlus中的刪除和邏輯刪除及區(qū)別介紹

 更新時(shí)間:2020年08月26日 11:50:40   作者:qq_43742526  
這篇文章主要介紹了MybatisPlus中的刪除和邏輯刪除的相關(guān)知識(shí),刪除又分為邏輯刪除和物理刪除,那么它們有什么區(qū)別呢?在本文給大家詳細(xì)介紹,感興趣的朋友跟隨小編一起看看吧

刪除又分為邏輯刪除和物理刪除,那么它們有什么區(qū)別呢?
物理刪除:真實(shí)刪除,將對(duì)應(yīng)數(shù)據(jù)從數(shù)據(jù)庫(kù)中刪除,之后查詢不到此條被刪除數(shù)據(jù)。
邏輯刪除:假刪除,將對(duì)應(yīng)數(shù)據(jù)中代表是否被刪除字段狀態(tài)修改為“被刪除狀態(tài)”,之后在數(shù)據(jù)庫(kù)中仍舊能看到此條數(shù)據(jù)記錄。
在我們?nèi)粘i_(kāi)發(fā)中,為了保留數(shù)據(jù),經(jīng)常會(huì)使用邏輯刪除的方式進(jìn)行數(shù)據(jù)刪除,下面我們就來(lái)看看物理刪除與邏輯刪除怎么實(shí)現(xiàn)的吧
首先假設(shè)我有這樣一張表

在這里插入圖片描述

實(shí)體類:

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、根據(jù)id刪除記錄

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

2、批量刪除

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

結(jié)果:

在這里插入圖片描述

物理刪除比較簡(jiǎn)單,接下來(lái)我們看看邏輯刪除怎么實(shí)現(xiàn)吧!

二、邏輯刪除

(1)數(shù)據(jù)庫(kù)修改,添加 deleted字段

在這里插入圖片描述

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

/*
  加@TableLogic的情況下,程序內(nèi)部會(huì)將delete語(yǔ)句變?yōu)閡pdate語(yǔ)句
  實(shí)際上我們寫(xiě)的代碼并不需要做出什么改變
  */
  @TableLogic
  private Integer deleted;

(3)測(cè)試

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

結(jié)果:

在這里插入圖片描述
在這里插入圖片描述

  • 測(cè)試后發(fā)現(xiàn),數(shù)據(jù)并沒(méi)有被刪除,deleted字段的值由0變成了1
  • 測(cè)試后分析打印的sql語(yǔ)句,是一條update
  • 注意:被刪除前,數(shù)據(jù)的deleted 字段的值必須是 0,才能被選取出來(lái)執(zhí)行邏輯刪除的操作

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

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

結(jié)果:

在這里插入圖片描述

總結(jié)

到此這篇關(guān)于MybatisPlus中的刪除和邏輯刪除及區(qū)別介紹的文章就介紹到這了,更多相關(guān)MybatisPlus刪除和邏輯刪除內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

蕲春县| 广元市| 凤凰县| 中西区| 九江县| 河北省| 济源市| 静宁县| 句容市| 孝感市| 绩溪县| 宣威市| 峨边| 仲巴县| 望城县| 克东县| 长汀县| 南丹县| 永年县| 凤山市| 星子县| 孟连| 南溪县| 三明市| 哈密市| 嘉鱼县| 深水埗区| 浦城县| 奇台县| 中卫市| 安远县| 什邡市| 富裕县| 仁化县| 花莲县| 潜山县| 河池市| 霍山县| 井陉县| 二手房| 满洲里市|