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); }
复制代码

 

posted @   jevan  阅读(1041)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示