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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ifconfig 与 ip addr 命令详解 – 学习/实践

    ifconfig 与 ip addr 命令详解 – 学习/实践1.应用场景 主要用于了解学习,掌握使用IP地址相关知识, 如何查看IP信息,以及各个参数代表的含义 2.学习/操作 1.文档阅读 网络协议概论|Laravel学院-不定期分享之ifconfig与ipaddr命令详解 2.整理输出 2.1如何查看机器的IP地址 我们在Linux系统查看IP地址通常有以下两种方式: 1)ifconfig 2)ipaddr

    2022年7月27日
    28
  • 人工智能的发展,需要遵守的四个AI伦理原则

    人工智能的发展,需要遵守的四个AI伦理原则

    2021年6月21日
    88
  • SecureCRT中文显示乱码解决

    SecureCRT中文显示乱码解决先放图由于我自己装的是中文版的Linux系统,所以在显示中文的时候,SecureCRT显示出乱码。后来我查了下Linux系统字符编码默认是utf-8格式的!要将SecureCRT也设置成UTF-8才能进行正常显示。设置步骤:1、选择字符编码为UTF-8。点击【会话选项】–&gt;选择【外观】。将字符编码设置为UTF-8格式。2、设置字符集为GB2312。点击【字体】–&gt;将字符集设…

    2022年7月17日
    21
  • Java Web前端到后台常用框架介绍

    Java Web前端到后台常用框架介绍

    2020年11月12日
    184
  • Vue图片加载错误、图片加载失败的处理

    Vue图片加载错误、图片加载失败的处理比如后台返回的一个图片字段pic,我们通常在代码里,会做一个检验图片,通常会像下面这样写<img:src=”pic?pic:’../../assets/img/load.png'”alt=””>这个判断只能判断pic是否存在,只有pic=”的情况下,才回显示设置的默认图片,但是如果pic这个字段是有值的呢,并且是一个错误的值,或者一个找不到的404的图片呢?这个时候就要…

    2022年6月2日
    149
  • vim复制粘贴_vim剪切命令

    vim复制粘贴_vim剪切命令在Windows下我们习惯的操作,复制单个字符,复制单行多行,删除单行多行,在linux的vim中操作如下:G(shift+g+g):跳到文档尾g+g:跳转到文档首home键:光标移动到行首end键:光标移动到行尾yy:复制光标所在行的整行内容yw:复制光标所在单词的内容nyy:复制从光标开始向下的n行内容,n为复制的行数nyw:复制从光标所在字开始后的n个字,n为复制的字数p:粘贴,将复制的内容粘贴在光标所在的位置x(小x):删除光标所在位置的字符,同键盘上的del

    2022年9月22日
    2

发表回复

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

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