问题展示
搭建了一个简单springboot的ssm项目,通过idea提供的多线程debug模式模拟并发更新丢失数据问题。业务是根据name查询出来total,然后再根据name更新total+1
ssm项目主要代码
controller代码
@RestController
public class UserController {
@Autowired
private UserService service;
@GetMapping("user/{id}")
public String getUser(@PathVariable("id") int id){
Map<String, Object> user = service.getUserById(id);
System.out.println(user);
return user.get("name").toString();
}
@GetMapping("test/concurrentUpdateLose")
public String concurrentUpdateLose() {
service.concurrentUpdateLose("zhangsan");
return "ok";
}
}
service代码
public interface UserService {
Map getUserById(int id);
int concurrentUpdateLose(String name );
}
service实现类代码
@Service
public class UserServiceImpl