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

一.业务场景:

添加:添加的数据不能在数据库中存在,存在则不能添加;

         不存在方可添加

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

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

如:表中有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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liumce

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值