Skip to content

数据库异常如何处理

service层调用数据库操作接口时,update、insert、delete操作时,如果需要更新多个表或者有多个更更新操作,则需要使用事务,在方法上使用注解@Transactional

例如下面的update操作

java
	/**
	 * 修改组织变更申请记录
	 *
	 * @param orgApplyForm 组织变更申请表单参数
	 * @return
	 */
	@Transactional
	public Integer updateApply(OrgApplyForm orgApplyForm ) {
		Long uid = MyTool.getMyUid();
		BizTool.ASSERT_NOLOGIN.notNull(uid, "用户没有登录,请重新登录!");

		OrgApplyMo orgApplyMo = orgApplyMapper.selectById(orgApplyForm.getApplyId());
		BizTool.ASSERT_DB.notNull(orgApplyMo, "找不到变更申请");
		orgApplyMo.setStatus(orgApplyForm.getStatus());
		orgApplyMo.setMessage(orgApplyForm.getMessage());
		orgApplyMo.setUpdatedBy(uid);
		orgApplyMo.setUpdateTime(LocalDateTime.now());
		int result = orgApplyMapper.updateById(orgApplyMo);
		if(result > 0 && orgApplyMo.getStatus() == 1) { // 审批通过
			OrgMo orgApply = JacksonTool.fromJson(orgApplyMo.getContent(), OrgMo.class);
			OrgMo orgMo = orgMapper.selectById(orgApplyMo.getOrgId());
			BeanUtils.copyProperties(orgApply, orgMo);
			result = orgMapper.updateById(orgMo);
		}
		return result;
	}
	/**
	 * 修改组织变更申请记录
	 *
	 * @param orgApplyForm 组织变更申请表单参数
	 * @return
	 */
	@Transactional
	public Integer updateApply(OrgApplyForm orgApplyForm ) {
		Long uid = MyTool.getMyUid();
		BizTool.ASSERT_NOLOGIN.notNull(uid, "用户没有登录,请重新登录!");

		OrgApplyMo orgApplyMo = orgApplyMapper.selectById(orgApplyForm.getApplyId());
		BizTool.ASSERT_DB.notNull(orgApplyMo, "找不到变更申请");
		orgApplyMo.setStatus(orgApplyForm.getStatus());
		orgApplyMo.setMessage(orgApplyForm.getMessage());
		orgApplyMo.setUpdatedBy(uid);
		orgApplyMo.setUpdateTime(LocalDateTime.now());
		int result = orgApplyMapper.updateById(orgApplyMo);
		if(result > 0 && orgApplyMo.getStatus() == 1) { // 审批通过
			OrgMo orgApply = JacksonTool.fromJson(orgApplyMo.getContent(), OrgMo.class);
			OrgMo orgMo = orgMapper.selectById(orgApplyMo.getOrgId());
			BeanUtils.copyProperties(orgApply, orgMo);
			result = orgMapper.updateById(orgMo);
		}
		return result;
	}