Mybatis Plus邏輯刪除


只對自動注入的sql起效:

  • 插入: 不作限制
  • 查找: 追加where條件過濾掉已刪除數據,且使用 wrapper.entity 生成的where條件會忽略該字段
  • 更新: 追加where條件防止更新到已刪除數據,且使用 wrapper.entity 生成的where條件會忽略該字段
  • 刪除: 轉變為 更新

注:

  • 邏輯刪除是為了方便數據恢復和保護數據本身價值等等的一種方案,但實際就是刪除。

  • 如果你需要頻繁查出來看就不應使用邏輯刪除,而是以一個狀態去表示。


一、局部設置

@TableLogic()
private Integer deleted;

 

二、全局設置

#邏輯刪除狀態設置
mybatis-plus.global-config.db-config.logic-not-delete-value = 0
mybatis-plus.global-config.db-config.logic-delete-value= = 1

 

三、測試

RunWith(SpringRunner.class)
@SpringBootTest
public class LogicTest {

    @Autowired
    private UserInfoMapper userInfoMapper;

    /**
     * 根據id刪除
     */
    @Test
    public void deleteById() {
        int rows = userInfoMapper.deleteById(123455);
        System.out.println("影響記錄數:"+rows);
    }

    /**
     * 獲取沒有刪除的數據
     */
    @Test
    public void select() {
        List<UserInfo> list = userInfoMapper.selectList(null);
        list.forEach(System.out::println);
    }

    /**
     * 修改沒有刪除的數據
     */
    @Test
    public void updateById() {
       UserInfo userInfo = new UserInfo();
       userInfo.setAge(26);
       userInfo.setId(12323434);
       int rows = userInfoMapper.updateById(userInfo);
    }
}

 

四、查詢不取字段

@TableField(select = false)
private Integer deleted;

 

五、自定義查詢

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;


@Select("select * from user ${ew.customSqlSegment}") List<UserInfo> mySelect(@Param(Constants.WRAPPER) Wrapper<UserInfo> wrapper); /** *自定義查詢所有數據 */ @Test public void mySelect() { List<UserInfo> list = userInfoMapper.mySelect(Wrappers.<UserInfo> lambdaQuery().gt(UserInfo::getAge,25)); list.forEach(System.out::println); } /** * 自定義查詢沒有刪除的數據 */ @Test public void mySelect1() { List<UserInfo> list = userInfoMapper.mySelect(Wrappers.<UserInfo> lambdaQuery().gt(UserInfo::getAge,25).eq(UserInfo::getDeleted,0)); list.forEach(System.out::println); }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM