新增和修改时不可重复添加重复性校验解决方案
一.业务场景:添加:添加的数据不能在数据库中存在,存在则不能添加;不存在方可添加修改:修改提交的数据是当前的数据,则可以成功修改修改的数据需要排除它本身,在其他数据中也不存在,才可以修改如:表中有id为001的记录,前端新增数据时,id不可重复为001,表中有name为小王的记录,前端新增数据时,name不可重复为小王。二.示例代码:Java代码参考一:/*controller类添加接口修改同理*
·
一.业务场景:
添加:添加的数据不能在数据库中存在,存在则不能添加;
不存在方可添加
修改:修改提交的数据是当前的数据,则可以成功修改
修改的数据需要排除它本身,在其他数据中也不存在,才可以修改
如:表中有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>
更多推荐
已为社区贡献6条内容
所有评论(0)