前言
为了防止人为的因素导致误删除无法恢复的情况所以我们需要逻辑意义上的删除,而通常最简便的方式就是打标记,这个步骤可以由mybatis-plus工具非常方便的解决
提示:以下是本篇文章正文内容,下面案例可供参考
一、逻辑删除
1.添加全局配置
mybatis-plus.global-config.db-config.logic-delete-field=deleted
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
2.设置实体中的字段
private String deleted;
测试如下:
@Override
@Transactional(rollbackFor = Exception.class)
public Integer deleteById(Integer id) {
return trackEventMapper.deleteById(id);
}
查看生成的SQL,所谓delete 后端进行了update处理打标记如下:
Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@e820f35]
JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3e39e0fb] will be managed by Spring
==> Preparing: UPDATE track_event SET deleted='1' WHERE id=? AND deleted='0'
==> Parameters: 4(Integer)
<== Updates: 1
而真正在查询的时候自动过滤标记为0的值,示例如下:
JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@3e39e0fb] will not be managed by Spring
==> Preparing: SELECT id,track_event_end,table_name,show_name,event_name,full_name,sql_expr,remark,deleted,create_by,update_by,create_time,update_time FROM track_event WHERE deleted='0'
==> Parameters:
<== Columns: id, track_event_end, table_name, show_name, event_name, full_name, sql_expr, remark, deleted, create_by, update_by, create_time, update_time
<== Row: 1, PC, xx.app_install, 事件中文展示01, event001, test.event001, , 备注信息, 0, tanzhengqiang, tanzhengqiang, 2021-11-10 10:35:33, 2021-11-10 10:35:33
<== Row: 2, PC, xx.app_install, 事件中文展示02, event002,test.event002, , 备注信息, 0, tanzhengqiang, tanzhengqiang, 2021-11-10 11:37:28, 2021-11-10 11:37:28
<== Row: 3, PC, xx.app_install, 事件中文展示03, event003, test.event003, , 备注信息, 0, tanzhengqiang, tanzhengqiang, 2021-11-10 18:01:55, 2021-11-10 18:01:55
<== Total: 3
总结
这里做个简单记录,非常好用!
具体也可以参考官网:https://baomidou.com/guide/logic-delete.html#%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)