springboot 开启乐观锁demo
时间: 2023-07-03 19:30:48 浏览: 97
好的,以下是一个简单的 Spring Boot 开启乐观锁的示例代码:
1. 首先,在实体类上添加 @Version 注解来启用乐观锁:
```
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
@Version
private Long version;
// getters and setters
}
```
2. 在 DAO 层中使用 JPA 进行更新操作时,需要在更新方法上添加 @Modifying 和 @Transactional 注解,并且在更新语句中添加 version 字段的判断:
```
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
@Transactional
@Modifying
@Query("update User u set u.username = :username, u.password = :password, u.version = u.version + 1 where u.id = :id and u.version = :version")
int updateByIdAndVersion(@Param("id") Long id, @Param("username") String username, @Param("password") String password, @Param("version") Long version);
}
```
3. 在 Service 层中调用 DAO 层的更新方法时,需要先查询出需要更新的实体,并将查询出的实体的 version 值作为参数传递给更新方法:
```
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public void update(Long id, String username, String password) {
User user = userRepository.getOne(id);
int result = userRepository.updateByIdAndVersion(id, username, password, user.getVersion());
if (result == 0) {
// 更新失败,抛出异常或者进行其他操作
}
}
}
```
这样就可以在 Spring Boot 中启用乐观锁了。需要注意的是,如果更新失败,需要根据业务需求进行相应的处理。
阅读全文