// 读取数据 public User readUserById(int userId) { Useruser= jdbcTemplate.queryForObject("SELECT * FROM users WHERE id=?", newObject[]{userId}, newUserRowMapper()); return user; }
// 更新数据,在外层实现重试 publicvoidupdateUser(User user) { introws= jdbcTemplate.update("UPDATE users SET name=?, age=?, version=? WHERE id=? AND version=?", user.getName(), user.getAge(), user.getVersion(), user.getId(), user.getVersion()); if (rows == 1) { user.setName(user.getName()); user.setAge(user.getAge()); user.setVersion(user.getVersion() + 1); } else { thrownewOptimisticLockException("Data has been modified by others."); } }
// 读取数据 public User readUserById(int userId)throws OptimisticLockException { Stringsql="SELECT * FROM users WHERE id=? FOR UPDATE"; Useruser= jdbcTemplate.queryForObject(sql, newObject[]{userId}, newUserRowMapper()); return user; }
// 更新数据 publicvoidupdateUser(User user)throws OptimisticLockException { Stringsql="UPDATE users SET name=?, age=?,WHERE id=?"; introws= jdbcTemplate.update(sql, user.getName(), user.getAge(), user.getVersion(), user.getId(), user.getVersion()); if (rows == 1) { user.setName(user.getName()); user.setAge(user.getAge()); user.setVersion(user.getVersion() + 1); } else { thrownewOptimisticLockException("Data has been modified by others."); } }
// 使用事务处理 public User updateUserWithTransaction(int userId)throws SQLException { Useruser= selectUserById(userId); updateUser(user); return user; }