MyBatisPlus–逻辑删除「建议收藏」

MyBatisPlus–逻辑删除「建议收藏」逻辑删除开发系统时,有时候在实现功能时,删除操作需要实现逻辑删除,所谓欧吉删除就是将数据标记为删除,而并非真正的物理删除(非DELETE操作),查询时需要携带状态条件,确保被标记的数据不被查询,这样做的目的就是避免数据被真正的删除。配置application.properties#删除状态值为1mybatis-plus.global-config.db-config.logic-del…

大家好,又见面了,我是你们的朋友全栈君。

逻辑删除

开发系统时,有时候在实现功能时,删除操作需要实现逻辑删除,所谓欧吉删除就是将数据标记为删除,而并非真正的物理删除(非DELETE操作),查询时需要携带状态条件,确保被标记的数据不被查询,这样做的目的就是避免数据被真正的删除。

配置

application.properties

# 删除状态值为1
mybatis-plus.global-config.db-config.logic-delete-value=1
# 未删除状态为0
mybatis-plus.global-config.db-config.logic-not-delete-value=0

表结构

在这里插入图片描述

实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("tb_user")
public class User extends Model<User> { 
   

    //指定主键为自增
    @TableId(type = IdType.AUTO)
    private Long id;

    //指定数据表中字段名
    @TableField(value = "user_name")
    private String userName;

    @TableField(fill = FieldFill.INSERT)
    private String password;
    private String name;
    private Integer age;
    private String email;

    //逻辑删除字段: 0,未删除; 1,已删除
    @TableLogic //标记为逻辑删除字段
    private Integer deleted;


    //指定该字段在表中是不存在的
    @TableField(exist = false)
    private String address;
}

测试

	@Test
    public void testDeleteById(){ 
   
        int rows = userMapper.deleteById(2l);
        System.out.println(rows);
    }

在这里插入图片描述

再次查询所有:

	@Test
    public void testSelectList(){ 
   
        List<User> users = userMapper.selectList(null);
        for (User u : users)
            System.out.println(u);
    }

控制台打印:

 Time:6 ms - ID:psers.zhang.demo.mapper.UserMapper.selectList
Execute SQL:
    SELECT
        id,
        user_name,
        password,
        name,
        age,
        email,
        deleted 
    FROM
        tb_user 
    WHERE
        deleted=0

User(id=4, userName=zhaoliu, password=123456, name=赵六, age=48, email=test4@qq.com, deleted=0, address=null)
User(id=5, userName=小强, password=88888, name=xiaoqiang, age=30, email=123456@qq.com, deleted=0, address=null)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137218.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 点云语义分割_语义分割研究内容

    点云语义分割_语义分割研究内容SGPN[CVPR2018]:点云的实例分割与物体检测。(SGPN:SimilarityGroupProposalNetworkfor3DPointCloudInstanceSegmentation。RSNet[CVPR2018]:点云的语义分割。(RecurrentSliceNetworksfor3DSegmentationonPointCloud…

    2022年8月23日
  • 对于长沙互联网发展,一个外来两年Java程序员的所见所感所愿

    惟楚有材,于斯为盛本文有感于2019长沙互联网求职招聘大会,内容比较多,但都是我自己的一些所见、所感和所愿。2019年3月的最后一天,参加2019长沙互联网求职招聘大会,看到了很多的招聘企业,也看到了很多来求职的技术朋友们。金三银四,找工作的黄金时间,也是招聘的旺季!从去年开始,网上一直可以看到说互联网的寒冬来了,一些一线城市互联网公司的程序员们纷纷被“优化”,那么对于长沙来说,一个互联网…

    2022年2月28日
  • unity 减少drawcall_unity scroll

    unity 减少drawcall_unity scroll一般我们在实时渲染中,DC也就是DrawCall都会尽可能的降低他,以为着,CPU与GPU的绘制沟通会减少啥叫:DrawCall已OpenGL为例,就是调用带有绘制功能的API的次数如:DrawCall:10次,那就意味着调用了glDrawXXXX的API10次啥叫:SetPassCallUnity中,就无缘无故多了个叫:SetPassCall的家伙其实早在以前的游戏引擎里,没有pass这么一个说法,说是techni的说法因为这些都是封装的功

    2022年9月19日
  • 高德地图实现多点标注marker和动态信息窗体[通俗易懂]

    高德地图实现多点标注marker和动态信息窗体[通俗易懂]先说一下项目对地图的需求:在后台新增地图管理模块,要求,每一辆车都在地图上有标注,而且点击标注时要显示出车辆的相关信息,比如车牌和车辆的当前状态。下图就是实现的效果。当然从高德地图api也能查看到这一块,比如多点标注,简单信息窗体,这些都有api,可以先看官网的,然后,再看我这篇文章,怎么融合一起,记住数据全部来自后台数据库,这样才能保证一切数据都是动态的,可实时更新的。首

    2022年5月11日
  • RadControls for ASP.NET Ajax 笔记(1)

    RadControls for ASP.NET Ajax 笔记(1)(1)遍历Grid中的所有Item(一行),一次仅展开一行【Singleexpandinhierarchicalgrid】privatevoidRadGrid1_ItemCommand(objectsource,Telerik.Web.UI.GridCommandEventArgse){if(e.CommandName==RadGrid.ExpandCo…

    2022年7月19日
  • MySQL字符串分割_c语言中如何截取字符串

    MySQL字符串分割_c语言中如何截取字符串有分隔符的字符串拆分题目要求数据库中num字段值为:实现的效果:需要将一行数据变成多行实现的SQLSELECTSUBSTRING_INDEX(SUBSTRING_INDEX(‘7654,7698,7782,7788′,’,’,help_topic_id+1),’,’,-1)ASnumFROMmysql.help_topic…

    2022年10月7日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号