java hibernate 实现按条件删除多对象[通俗易懂]

java hibernate 实现按条件删除多对象[通俗易懂]背景:在hibernate应用中,需要实现按条件删除功能场景:在方法中传入泛型对象,构建HQL语句思路:遍历对象属性,如果有值,表明该字段是删除条件,用它构建删除HQL。具体做法是遍历对象对象的所有get方法,然后通过方法反射获取到对象的值。然后再判断值是否为空,从而组装HQL语句使用例子:publicclasstestH{publicstaticvoidmain(String[]args){Sessionsession=sessi

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

背景:在hibernate 应用中,需要实现按条件删除功能

场景:在方法中传入泛型对象,构建HQL语句

思路:遍历对象属性,如果有值,表明该字段是删除条件,用它构建删除HQL。

具体做法是遍历对象对象的所有get方法,然后通过方法反射获取到对象的值。然后再判断值是否为空,从而组装HQL语句

使用例子:

public class testH {
    public static void main(String[] args) {

        Session session = sessionFactory.getCurrentSession();
        //删除
        TestT<TestBean> testT = new TestT();
        TestBean testBean = new TestBean();
        testBean.setName("zhan");
        testBean.setCode("hhaa");

        /*
         * @Date: 2021/1/9 11:37
         * 用session删除 (这种方式没有设置id 删除不了)
         */
        session = sessionFactory.getCurrentSession();
        session.beginTransaction();
        session.delete(testBean);
        session.getTransaction().commit();

        /*
         * @Date: 2021/1/9 11:37
         * 采用自己 构造删除HQL的方法删除
         */
        List<Object> paramList = new ArrayList<>();
        // createDeleteHql 方法详情看:https://blog.csdn.net/zhan107876/article/details/112389288
        // createDeleteHql 方法 演示 完整工程 github:https://github.com/zhan107876/method-invoke-demo)
        String deleteHql = testT.createDeleteHql(testBean, paramList);

        // 构造hibernate查询
        Query query = session.createQuery(deleteHql);
        if (paramList != null) {
            int size = paramList.size();
            for (int i = 0; i < size; i++) {
                query.setParameter(i, paramList.get(i));
            }
        }
        // 执行删除操作
        query.executeUpdate();
    }
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • Oracle锁表查询和解锁方法

    Oracle锁表查询和解锁方法我们这里一般用的PL/SQL,总是无意间把表锁住,所以我今天就整理了一下简单的解锁和查询锁表的方法;一、首先PL/SQL要以管理员的账号(system/admin等)登录,管理员的账号和密码根据个人设置而来,连接为一般选择Normal,也可选择SYSDBA;二、相关SQL语句:–以下几个为相关表SELECT*FROMv$lock;SELECT*FROMv$sqlarea;S…

    2022年6月7日
    59
  • 指定目标TCP端口的traceroute命令tcptraceroute mailserver 25等价traceroute -T mailserver -p 25

    指定目标TCP端口的traceroute命令tcptraceroute mailserver 25等价traceroute -T mailserver -p 25tcptraceroute(1)-LinuxmanpageNametcptraceroute-AtracerouteimplementationusingTCPpacketsSynopsistcptraceroute[-nNFSAE][-iinterface][-ffirstttl][-llength][-qnumberofqueries][-ttos][-mmaxttl][-psourceport]…

    2022年6月20日
    71
  • Linux生成静态库_linux生成静态库

    Linux生成静态库_linux生成静态库转自:https://blog.csdn.net/ddreaming/article/details/53096411一、动态库、静态库简介库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库.a(win系统下是lib)和动态…

    2022年9月30日
    7
  • git拉取代码如何解决冲突_git拉取代码如何解决冲「建议收藏」

    git拉取代码如何解决冲突_git拉取代码如何解决冲「建议收藏」在使用gitpull代码时,经常会碰到有冲突的情况,提示如下信息:Yourbranchisbehind’origin/master’by123commits,andcanbefast-forwarded.(use”gitpull”toupdateyourlocalbranch)Please,commityourchangesorstashthem…

    2022年8月30日
    5
  • idea2021全家桶激活破解方法

    idea2021全家桶激活破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    209
  • 如何使用串口调试助手(调试串口)

    如何使用串口调试助手(调试串口)转载自:https://jingyan.baidu.com/article/54b6b9c0b3c8c02d583b4707.html如何使用串口调试助手(调试串口)很多时候,调试硬件需要用串口输出一些调试信息,用电脑USB口接收十分方便,串口调试软件很多,用习惯了还是觉得串口调试助手最为方便,这个也是因人而异吧,接下来带大家了解一下串口调试助手如何使用。工具/原料 windows电脑一台 USB接口线一根(用于连接硬件和电脑USB接口) 方法/步骤 1 下载.

    2022年6月9日
    72

发表回复

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

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