新增和修改时不可重复添加重复性校验解决方案

一.业务场景:
添加:添加的数据不能在数据库中存在,存在则不能添加;

不存在方可添加

修改:修改提交的数据是当前的数据,则可以成功修改

修改的数据需要排除它本身,在其他数据中也不存在,才可以修改

如:表中有id为001的记录,前端新增数据时,id不可重复为001,表中有name为小王的记录,前端新增数据时,name不可重复为小王。

二.示例代码:
Java代码参考一:

/

*controller类 添加接口 修改同理*/
@CheckType(OperationType.ADD)
public void addEnavmark() {
String jindu = getPara("jindu");
String weidu = getPara("weidu");
String[] enavmarkType = getParaValues("enavmarkType[]");
Integer atonId = getParaToInt("atonId");
String atonName = getPara("atonName");
Integer depId = getParaToInt("depId");
String depName = getPara("depName");
String company = getPara("company");
Record record = Db.use(Constant.ENAVMSI).findFirst("select aton_id from enavmark_station where aton_id = ?", atonId);
Record rec = Db.use(Constant.ENAVMSI).findFirst("select station_name from enavmark_station where station_name = ?", atonName);
AssertUtil.isTrue(record != null, "站点编号已存在");
AssertUtil.isTrue(rec != null, "站点名称已存在");
try {
String enType = JsonKit.toJson(enavmarkType).replace("[", "").replace("]", "").replaceAll("\"", "");
String geom = "POINT(" + jindu + " " + weidu + ")";
List<Object> param = new ArrayList<>();
param.add(atonId);
param.add(atonName);
param.add(depName);
param.add(geom);
param.add(enType);
param.add(depId);
param.add(company);
EnavmarkStation.dao.addEnavmarkStation(param.toArray());
renderJson("{\"msg\":\"成功\",\"code\":200}");
} catch (Exception e) {
renderJson("{\"msg\":\"失败\",\"code\":500}");
e.printStackTrace();
}

}

 

sql代码参考二:

sql的校验代码如下:

<select id="findRoleByName" resultType="com.frame.entity.Role" parameterType="java.lang.String">
select
<include refid="Base_Column_List" />
from sys_Role where 1=1

<if test="role != null and role != ''">
and role = #{role} //主键不能重复
</if>
<if test="id != null and id != ''">
and id != #{id} //id是排除本身的
</if>
</select>

 




posted on 2023-01-06 16:30  云淡风轻博客  阅读(500)  评论(0编辑  收藏  举报