public Integer saveSysCodeEdit(List<SysCode> sysCodes) {
Integer changeCount = 0;
for (SysCode sysCode : sysCodes) {
if(StringUtils.isNotBlank(String.valueOf(sysCode.getId()))){
List<String> codeValuesByCodeType = systemCodeMapper.getCodeValuesByCodeType(sysCode.getId());
if(!codeValuesByCodeType.contains(sysCode.getCodeValue())){
sysCode.perUpdate();
changeCount += systemCodeMapper.saveSysCodeEdit(sysCode);
}
}
}
return changeCount;
}
刚开始这么写的初衷是为了避免当修改代码值的时候和数据库中已有的字段重复问题.
但是后期发现一个新的问题:当你只修改代码名称时候,会无法保存,因为代码判断代码值是由重复的,拒绝修改.此处需要进行改正
解决办法:
SELECT CODE_VALUE FROM SYS_CODE WHERE CODE_TYPE=(SELECT CODE_TYPE FROM SYS_CODE WHERE ID = #{value}) AND ID <> #{value}
查询code_value时排除当前修改id的code_value,但是mybatis的mapper文件不能存在"<>"符号,因此使用转义字符代表