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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM