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); }这段代码同样会尝试从数据库中加载并更新实体对象的状态,但不会创建新的事务。
解决 无用评论 打赏 举报