使用SpEL表达式来获取SpringData Jpa在更新数据时传递的对象参数的属性

一、问题描述

        使用Jpa时我们经常需要对数据库中的数据进行更新操作,通常更新数据库的数据有两种方法。

        第一种是通过Jpa的实体管理器对托管态实体对象进行更新,对托管态实体对象的更新即意味着对数据库对应记录的更新。这种方法虽然使用起来比较简单,但也存在全字段更新、意料之外的记录更新、业务层跟持久层职责不清等问题。示例如下:

@Override
@Transactional(value = "demo2TransactionManager",rollbackFor = CustomException.class)
public void save6(UserInfo userInfo) throws CustomException {
    UserInfo userInfo1 = this.userInfoRepository.findById(userInfo.getOid()).get();
    userInfo1.setState(1);
    userInfo1.setUserInfoDesc("使用实体管理器对托管态用户信息进行更新");
}

        第二种就是通过写本地Sql的方式来实现数据库记录的更新,这种方虽然使用起来比较直观,但更新时往往会传入一个参数列表,以确定要更新的字段以及更新的条件。如下所示:

//更新用户信息表的状态和描述(使用参数列表)
@Query(value = "update user
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值