zoukankan      html  css  js  c++  java
  • java 校验同一张表某个字段值不能重复

    例如 一个实体 user 校验name名字不能重复

    思路 

    1.新增:时比较容易做 直接根据传来的参数 查询实体如果不为空 则查询到了重复值

    2.修改:修改需要考虑较多

        2.1.既然是不重复 必然是必填字段.前端校验即可

      2.2.前端传来的参数name 需要和数据库字段name比较.  数据库查询时需要根据id查询,然后拿数据库

    查询取到的name 和 用户输入的name 进行比价. 如果 相等 那么说明用户输入时没有进行更改数据 校验通过 ,

    如果不相等说明用户修改时,更改了name 值,那么需要查询修改的值在数据库中是否已经存在,查询条件为

    where name = ? 如果没查询到校验通过

    案例如下 使用的是 -- mybatisPlus

        /**
         * 修改校验
         * @param inspectorOrderEntity
         * @return
         */
        @Override
        public QmsInspectorOrderEntity selectOneUpdatePriority(QmsInspectorOrderEntity inspectorOrderEntity) {
            QmsInspectorOrderEntity  entity = new QmsInspectorOrderEntity();
            //用户输入
            Integer orderNo = inspectorOrderEntity.getOrderNo();
            QmsInspectorOrderEntity qmsInspectorOrderEntity = baseMapper.selectById(inspectorOrderEntity);
    
    
    
                //1.根据id 对比用户输入和数据库查询 顺序号是否相等
                if (orderNo.equals(qmsInspectorOrderEntity.getOrderNo())){
                    //不存在重复顺序号 校验通过
                    entity.setMarking(0);
                    return entity;
                } else {
                    // 用户输入和数据库查询不相等 需要做校验 顺序是否存在
                    if (this.ifExistNumber(inspectorOrderEntity)){
                        //true 没有查询到 校验通过
                        entity.setMarking(0);
                        return entity;
                    }else {
                        //建议输入N+1 顺序号已存在
                        QueryWrapper<QmsInspectorOrderEntity> wrapper1 = new QueryWrapper<>();
                        wrapper1.orderByDesc("order_no").last("limit 1");
                        QmsInspectorOrderEntity maxValue = baseMapper.selectOne(wrapper1);
                        entity.setSuggestNumber(maxValue.getOrderNo()+1+"");
                        entity.setOrderNo(qmsInspectorOrderEntity.getOrderNo());
                        entity.setMarking(1);
                        return entity;
                    }
    
                }
    
        }
    
        /**
         * 查询 顺序号是否存在? 存在false
         * @param inspectorOrderEntity 实体
         * @return Boolean
         */
        public boolean ifExistNumber(QmsInspectorOrderEntity inspectorOrderEntity){
            Integer orderNo = inspectorOrderEntity.getOrderNo();
            QueryWrapper<QmsInspectorOrderEntity> wrapper = new QueryWrapper<>();
            wrapper.eq("order_no",orderNo);
            QmsInspectorOrderEntity entity = null;
            try {
                entity = baseMapper.selectOne(wrapper);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return !ObjectUtils.isNotEmpty(entity);
        }
    View Code
    个人网址 http://threenut.cn/
  • 相关阅读:
    Atitit.隔行换色  变色 css3 结构性伪类选择器
    Atitit.jpg png格式差别以及解决jpg图片不显示的问题
    Atitit.jpg png格式差别以及解决jpg图片不显示的问题
    Atitit.预定义变量与变量预处理器
    Atitit.jpg png格式差别以及解决jpg图片不显示的问题
    Atitit.预定义变量与变量预处理器
    Atitit.增强系统稳定性----虚拟内存的设置
    Atitit.md5 实现原理
    Atitit.增强系统稳定性----虚拟内存的设置
    Atitit.md5 实现原理
  • 原文地址:https://www.cnblogs.com/july7/p/14681609.html
Copyright © 2011-2022 走看看