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

mybatis-plus實(shí)現(xiàn)邏輯刪除的示例代碼

 更新時(shí)間:2024年05月16日 10:08:38   作者:IT云煙.  
在大多數(shù)公司里,都會(huì)采用邏輯刪除的方式,本文主要介紹了mybatis-plus實(shí)現(xiàn)邏輯刪除的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下

一、什么是邏輯刪除?

邏輯刪除的本質(zhì)是修改操作,并不是真正的刪除,而是在表中將對(duì)應(yīng)的是否刪除標(biāo)識(shí)(del_flag)做修改操作。比如0是未刪除,1是刪除。在邏輯上數(shù)據(jù)是被刪除的,但數(shù)據(jù)本身依然存在庫(kù)中。

邏輯刪除sql語(yǔ)句為:

update user set del_flag=1 where id = 1 and del_flag=0

這種設(shè)計(jì),后端每次向數(shù)據(jù)庫(kù)查詢數(shù)據(jù)時(shí),只查del_flag=0(未刪除)的數(shù)據(jù)。拿上面sql舉例,那么客戶端進(jìn)行查詢id為1的信息,服務(wù)器就不會(huì)提供信息。
查詢sql為:

select id,name,del_flag from user where del_flag=0

二、為什么使用邏輯刪除?

  • 方便數(shù)據(jù)恢復(fù),保護(hù)數(shù)據(jù)本身的價(jià)值。
  • 保證數(shù)據(jù)連續(xù)性,對(duì)主鍵的影響可能會(huì)導(dǎo)致底層B+樹重建,而 delete 和 update id 都會(huì)影響主鍵。

事實(shí)上,在大多數(shù)公司里,都會(huì)采用邏輯刪除的方式,因?yàn)閿?shù)據(jù)的價(jià)值更大,被刪除的數(shù)據(jù)也非常有記錄價(jià)值,這樣的操作也并不會(huì)提高太多的操作難度。

三、在springboot使用Mybatis-Plus提供的邏輯刪除

字段類型支持說(shuō)明:支持所有數(shù)據(jù)類型(推薦使用 Integer,Boolean,LocalDateTime)

如果數(shù)據(jù)庫(kù)字段使用datetime,邏輯未刪除值和已刪除值支持配置為字符串null,另一個(gè)值支持配置為函數(shù)來(lái)獲取值如now()

3.1、在application.yml配置

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: flag # 全局邏輯刪除的實(shí)體字段名(since 3.3.0,配置后可以忽略不配置步驟2)
      logic-delete-value: 1 # 邏輯已刪除值(默認(rèn)為 1)
      logic-not-delete-value: 0 # 邏輯未刪除值(默認(rèn)為 0)

3.2、實(shí)體類字段上加上@TableLogic注解

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

import java.io.Serializable;

/**
 * 用戶訂單
 *
 * @author yunyan
 */
@TableName("t_user")
@Data
public class UserPO implements Serializable {

    /**
     * id
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    /**
     * 用戶名
     */

    private String userName;
    /**
     * 密碼
     */

    private String password;
    /**
     * 昵稱
     */

    private String nickName;
    /**
     * 刪除標(biāo)識(shí)
     */
    @TableLogic
    private Integer delFlag;

3.3、演示

 3.4、UserMapper

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.testinterface.entity.po.UserPO;
import org.apache.ibatis.annotations.Mapper;

/**
 * 用戶映射器
 *
 * @author yunyan
 */
@Mapper
public interface UserMapper extends BaseMapper<UserPO> {
}

 3.5、IUserService

/**
 * 用戶服務(wù)
 *
 * @author yunyan
 */
public interface IUserService extends IService<UserPO> {

}

3.6、UserServiceImpl

/**
 * 用戶服務(wù)impl
 *
 * @author yunyan
 */
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, UserPO> implements IUserService {

}

3.7、controller

@RequestMapping("/open/del")
    public ResultUtil del(UserParam userParam){
        UserPO one = userService.getOne(new LambdaQueryWrapper<UserPO>()
                .eq(UserPO::getUserName, userParam.getUserName()));
        boolean b = userService.removeById(one);
        System.out.println(b);
        return ResultUtil.success(b);
    }

3.8、ResultUtil

@Data
public class ResultUtil {

    private String code;

    private String message;

    private  Object data;
    public static  ResultUtil success(Object data){
        ResultUtil resultUtil = new ResultUtil();
        resultUtil.setCode("200");
        resultUtil.setMessage("請(qǐng)求成功");
        resultUtil.setData(data);
        return resultUtil;
    }
}

3.9、瀏覽器請(qǐng)求

 3.10、數(shù)據(jù)庫(kù)的數(shù)據(jù)

可以看到,加了@TableLogic注解的字段對(duì)應(yīng)的數(shù)據(jù)庫(kù)字段,由0(未刪除)改為1(已刪除)

到此這篇關(guān)于mybatis-plus實(shí)現(xiàn)邏輯刪除的示例代碼的文章就介紹到這了,更多相關(guān)mybatis-plus 邏輯刪除內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

最新評(píng)論

安阳市| 赤水市| 龙里县| 兴宁市| 额敏县| 观塘区| 布拖县| 大名县| 双鸭山市| 汉中市| 长乐市| 开原市| 巩义市| 伊吾县| 偏关县| 阜城县| 保亭| 繁峙县| 盐边县| 建始县| 义马市| 泰顺县| 静乐县| 米林县| 砚山县| 恩平市| 沾化县| 黄龙县| 金昌市| 鄱阳县| 乐东| 克什克腾旗| 桂东县| 秦安县| 龙口市| 张北县| 赣州市| 建水县| 呼图壁县| 万安县| 大田县|