1、背景
因没做过大项目,并发经验匮乏,所以很多时候考虑不到并发问题,今天做接口的压力测试,无意间发现一个并发的问题,就是判断数据库是否存在某个记录时,如果没做并发处理,就会出现并发的问题,比如以下代码,给某个医院添加科室,当医院已经有这个科室则不允许重复添加重名的科室
public void addHospitalDept(SysHospitalDept sysHospitalDept) {
//根据医院id,科室名,校验科室唯一性
SysHospitalDept hospitalDept = this.queryByHospitalIdAndDeptName(sysHospitalDept.getHospitalId(), sysHospitalDept.getDeptName());
if (Objects.nonNull(hospitalDept)) {
log.error("医院id:{},已经存在了科室[{}]", hospitalDept.getHospitalId(), hospitalDept.getDeptName());
throw new RuntimeException("该医院下已经存在了科室——" + hospitalDept.getDeptName());
}
sysHospitalDept.setDelFlag(false);
sysHospitalDept.setCreatorId(SecurityUtils.getUser().getId());
sysHospitalDept.setCreateTime(LocalDateTime.now());
this.save(sysHospitalDept);
}
原创2022年2月17日大约 2 分钟