• @TableLogic注解说明,以及对增删改查的影响


    今天遇到一个问题:使用mybatis的时候,更新删除字段无效,我的写法是:

    user.setIsDelete(1);

    userService.updateById(user);

    这样操作之后,发现数据库并没有更新删除字段!!!

     经过查找,才发现是因为@TableLogic这个注解的原因,下边详细介绍一下这个注解。

    @TableLogic注解是逻辑删除,并不会物理删除数据

    效果:在字段上加上这个注解再执行BaseMapper的删除方法时,删除方法会变成修改

    @TableLogic(value=“原值”,delval=“修改值”)
    注解参数:
        value = “” 未删除的值,默认值为0
        delval = “” 删除后的值,默认值为1
        
    使用方法:
    1.在实体类属性上加@TableLogic(value=“0”,delval=“1”)

    1.     @TableLogic(value="0",delval="1")
    2.     private String isdelete;

    2.删:调用BaseMapper的deleteById(id)或者调用IService的removeById(id),走Update方法

    效果:
        没有@TableLogic注解调用deleteById/removeById,直接删除数据。
            SQL:delete from xxxtable where id = 1
        有注解走Update方法
            SQL:Update xxxtable  set  is_delete = 1 where id = 1  

    3.改:使用了@TableLogic注解,调用update方法,是不会将该字段放入修改字段中,而是默认添加在where条件字段中。即使你给dataStatus赋值也不能修改字段。
        SQL: Update xxxtable  set 字段1 = 值1,字段2 = 值2 where id = 1 and is_delete = 0

    4.查:使用了@TableLogic注解,使用queryWapper等查询时,没有筛选是否删除的条件,但是sql还是自动加上了条件:SELECT * from xxxtable  where is_delete =0

  • 相关阅读:
    Java接口和接口继承
    Stable Diffusion WebUI提示词Prompts常用推荐
    [附源码]计算机毕业设计springboot基于web的建设科技项目申报管理系统
    数据结构之链表(带头双向循环链表)
    力扣(494.474)补7.30
    POJ2676数独游戏题解
    基于.NetCore开发博客项目 StarBlog - (11) 实现访问统计
    LeetCode 四数之和 排序+双指针+剪枝优化
    gson的工具类JsonUtils
    Bootstrap的旋转器组件
  • 原文地址:https://blog.csdn.net/zlfjavahome/article/details/134477866