songchuanbing 2015-01-06 04:59 采纳率: 0%
浏览 989

ssh2关于继承hibernateDaoSupport怎么执行更改操作

impl类继承的HibernateDaoSupport,简单的增删改查我知道可以这样getHibernateTemplate().save(book);。。。。但我要写sql语句执行更改,如:sql="update book set state=1 where bid=?";我怎么执行啊,this.getSession().saveOrUpdate(arg0, arg1);这样么,参数怎么给呢?

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-03 05:58
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Spring Boot中,如果你想要使用Hibernate模板来更新实体对象(book),你可以这样做:

    @Transaction(propagation = Propagation.REQUIRES_NEW)
    public void updateBookState(Integer bid) {
        Book book = getSession().get(Book.class, bid);
        if (book != null) {
            // 更新状态
            book.setState(1);
            getSession().update(book);
        }
    }
    

    在这个例子中,getSession()方法获取了当前事务中的Session。然后,我们调用getSession().update()方法来更新实体对象,并将结果返回。

    注意,这个方法是通过Spring框架进行事务管理的。这使得你的代码更安全,因为如果发生异常,事务会被回滚,而不是抛出一个运行时错误。

    此外,如果你希望在一个非事务环境中进行这些操作,你也可以使用SessionFactory的方式直接访问Session。

    // 在不开启事务的情况下
    Book book = getHibernateTemplate().load(Book.class, bid);
    
    if (book != null) {
        // 更新状态
        book.setState(1);
        getHibernateTemplate().saveOrUpdate(book);
    }
    

    这段代码同样会尝试从数据库中加载并更新实体对象的状态,但不会创建新的事务。

    评论

报告相同问题?