指定某一字段作为唯一校验性主要逻辑:
获取需要校验的字段值和该对象的主键(为null时需要处理),在该字段值在sql中作为判断条件进行查询并且只获取一条(limit 1),如果有一条记录则说明存在,如果没有则不存在;
第二判断条件:则用于修改:排除本身
- Controller层
//属性名称 类型 编号 作为唯一校验
if (!(tsmPropertyTemplateService.checkPropertyTemplateUnique(tsmPropertyTemplate))) {
return error("新增属性'" + tsmPropertyTemplate.getName() + "'失败,该属性已存在");
}
- service层
/**
* 校验: 属性名称 类型 编号
*
* @param tsmPropertyTemplate
* @Title:checkPropertyTemplateUnique
* @Description:用于校验:属性名称 类型 编号
* @author:云诺
* @date:2021/2/25
* @return:boolean
*/
boolean checkPropertyTemplateUnique(TsmPropertyTemplate tsmPropertyTemplate);
- serviceImp
@Override
public boolean checkPropertyTemplateUnique(TsmPropertyTemplate template) {
// 校验:名称 类型 编号
String id = (template.getId() == null) ? "" : template.getId();
String name = template.getName();
String type = template.getType();
String code = template.getCode();
TsmPropertyTemplate info = tsmPropertyTemplateMapper.checkDeptNameUnique(name, type, code);
String infoId = (info == null) ? "" : (info.getId());
if ((info != null) && !((info.getId()).equals(id))) {
//已存在
return false;
}
return true;
}
- Mapper.java
/**
* 校验
*
* @param name
* @param type
* @param code
* @return
*/
TsmPropertyTemplate checkDeptNameUnique(@Param("name") String name, @Param("type") String type, @Param("code") String code);
- Mapper.xml
<select id="checkDeptNameUnique" resultType="TsmPropertyTemplate">
select id, `name`, `type`, dic_code, code, `describe`, remark, del_flag
where del_flag='0'
and name=#{name} and type=#{type} and code=${code} limit 1
</select>