在项目开发中,数据库的删除一般都是逻辑删除,可以很好的保持数据的完整性,但是很多时候我们写SQL的是时候查询的时候不得不加上SQL后面加上where delete_flag=xxx,这样,导致这样我们工作量繁琐,特别是hibernate 中通过ID查询的时候,很是恼火。

不过好在hibernate中有@SQLDelete和@Where这两个注解帮我们解决了这个难题。

在entity中使用这两个注解,如图所示

在sql中写上删除的时候的SQL语句,到调用delete方法的时候,hibernate将自动执行该语句将实现软删除。

下面将展示效果:

首先查询一条数据库中存在的数据。

然后查看结果,发现存在这条数据,并且没有被删除的。

然后查看数据库的操作SQL,发现在SQL的最后加上了@Where注解的内容

我们将数据删除看看数据还存不存在,操作代码如下

操作后查询出的数据为空,表明已经删除成功。

再看看hibernate的删除SQL

hibernate删除只是操作了@SQLDelete中的SQL语句。

至此,通过@SQLDelete和@Where搭配完成了数据库的逻辑删除。

当然,对于一些关联查询的问题,只要查询的对象没有删除,那关联的对象就算删除了也可以查询出来,当然,这里指的删除是逻辑删除。

通过查看hibernate的源码可以看到还有@SQLDeleteAll、@SQLInsert和@SQLUpdate这里就一一介绍了,功能都差不多。

使用hibernate的@SQLDelete和@Where注解实现逻辑删除相关推荐

  1. @TableLogic注解表示逻辑删除

    @TableLogic注解表示逻辑删除 效果:在字段上加上这个注解再执行BaseMapper的删除方法时,删除方法会变成修改 场景:     1.实体类中属性加上@TableLogic,     @T ...

  2. hql删除mysql语句_mysql-使用Hibernate @SQLDelete对所有实体进行软删除

    我们有一个相当复杂的数据模型,并且在MySQL之上使用Hibernate和Spring Data JPA.我们有一个基类,所有域对象都可以扩展以最小化样板代码.我希望能够仅使用此类在所有域对象中添加软 ...

  3. Spring 4 MVC+Hibernate 4+MySQL+Maven使用注解集成实例

    Spring 4 MVC+Hibernate 4+MySQL+Maven使用注解集成实例 转自:通过注解的方式集成Spring 4 MVC+Hibernate 4+MySQL+Maven,开发项目样例 ...

  4. spring 常用注解 原理 逻辑 代码演示

    01 spring 常用注解 原理 逻辑 代码演示 这是自己观看视频的笔记 文章目录 01 spring 常用注解 原理 逻辑 代码演示 一.组件注册 1.1-spring注解驱动开发 1.2-组件注 ...

  5. hibernate 时间 默认值 -(mysql) 注解_注解@ -shihchang

    注解,即元数据,形式化地在代码中添加信息,把元数据与源代码文件结合在一起.注解可以完整地描述程序所需的信息.可以使用注解来简化和自动化重复的过程或代码 javaSE5有三种注解: `@Override ...

  6. hibernate mysql id 自增长 注解_hibernate Mysql 自增长 注解配置,表无关联的注解方式关联查询...

    不同数据库 自增长ID配置 正对不同的数据库可以同时使用 @Id @GeneratedValue(strategy = GenerationType.AUTO) 2 针对mysql @Id @Gene ...

  7. hibernate 多对一外键注解

    2019独角兽企业重金招聘Python工程师标准>>> ClassRoom.java package com.com; import javax.persistence.Column ...

  8. Hibernate中,mappedBy和注解@JoinColumn的对比

    mappedBy 我们知道,mappedBy用于指定具有双向关系的两个实体中.哪个实体是被关联处理的.它有如下四个特点: 1.只有OneToOne,OneToMany,ManyToMany上才有map ...

  9. 在Mavne环境下,实现struts2和hibernate的NVN关系的注解式开发?

    示例:用户.角色.菜单表的权限管理. 一.数据库要求: 1.用户表users:uid用户编号.uname用户名称 2.用户角色表usersRoles:uid用户编号.rid角色编号 3.角色表role ...

  10. Hibernate之Criteria查询及注解

    1. 前言 之前从来没有接触过Hibernate,跳槽之后的公司使用的是Hibernate的Criteria查询.简单整理一下. 2.什么是Criteria查询QBC(Query By Criteri ...

最新文章

  1. 归纳苹果,Facebook大规模部署的Spark-用户界面详细执行操作。
  2. Python 的 __name__ 变量,到底是个什么东西?
  3. 此为太阳历的技术支持博客
  4. 回溯法解决01背包问题
  5. idea快捷操作_IDEA插件系列 快捷键神器!Key Promoter X
  6. 计算机关机后耗电问题,不用拔电线 轻松设置解决电脑关机耗电
  7. 高级IO(一)--UNIX环境高级编程读书笔记
  8. win10下驱动级套节字通信(ksocket)
  9. 使用手机访问vue项目
  10. paip.c++ qt 图片处理 检测损坏的图片
  11. 绕过tp路由器管理密码_普联(TPLink)路由器管理员密码是什么?
  12. 股权比例的几个临界点
  13. 密码学的基础:X.690和对应的BER CER DER编码
  14. Fault 异常或陷阱 分析
  15. 圣思园张龙-Java SE 第三讲(原生数据类型使用陷阱 Pitfall of Primitive Data Type)
  16. CSS常用英语词汇大全
  17. APP按下home键恢复到登录(主界面)
  18. 用户之间imp的问题
  19. 百万前端之js通过链接生成二维码可以保存下载复制
  20. 布洛芬成功史:研发10年因一次宿醉迎来转机,发明人3年前已去世

热门文章

  1. TT语音借游戏社交“剑走偏锋”,能解“孤独经济”难题?
  2. (bug更正)利用KVC和associative特性在NSObject中存储键值
  3. 河北科技师范学院对口计算机分数线,河北科技师范学院对口分数线
  4. 个人笔记-如何学习(上)
  5. 万元大奖和Switch等你来拿,百度飞桨AI创造营带你出道
  6. 2022(一等奖)B360基于Arcpy与SVM的滑坡易发性评价
  7. rk板子linux系统安装rga,drm,mpp
  8. python ndimage.gaussian_filter_Python ndimage.maximum_filter方法代碼示例
  9. 如何练成大力金刚指:IKBC - C104 白色黑轴机械键盘 体验测评
  10. GitChat · 前端 | React 生态系统:从小白到大神