例如 一个实体 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);
}

java 校验同一张表某个字段值不能重复的更多相关文章

  1. MySQL用另一张表的字段值Update本表

    SQL示例: UPDATE TABLE1 a, TABLE2 b SET a.field1 = b. field1 [, a.field2 = b.field2, ...] WHERE a.connn ...

  2. sql语句之表间字段值复制遇到的一些问题--基于mysql

    好久没来园子了,转眼2017已经到3月份了,前段时间一直忙没时间写博客(其实是自己懒),感觉内心好惭愧.昨天临下班前,技术老大突然对我说要改下表结构,问我能不能实现将一个表的字段值复制到另外一个表的某 ...

  3. oracle定时器,调用存储过程,定时从n张表中取值新增到本地一张表中

    --创建新增本地数据库的存储过程create or replaceprocedure pro_electric_record as  begin    insert into electric_met ...

  4. 160628、利用Oracle rownum让表排序字段值连续

    利用Oracle rownum让表排序字段值连续 1.需求说明 表(eval_index)中有字段如下: 表字段 描述 说明 ID 主键 GROUP_ID 分组编号 SORT_NUM 排序序号 按照分 ...

  5. Oracle中用一张表的字段更新另一张表的字段

    今天在做项目的过程中,发现开发库中某张表的某字段有许多值是空的,而测试库中该字段的值则是有的. 那么,有什么办法能将测试库中该字段的值更新到开发库中呢? SQL Server中这是比较容易解决的,而O ...

  6. datagridcolumn单元格怎么显示查询到的某个表的字段值(字段值可能为多个)

    例如,在之前做的项目中,查询mhz_xckcr表,select出某个业务的现场勘察人信息,select出的现场勘察人姓名(可能有多个)要在前台datagrid的一个datagridcolmn单元格显示 ...

  7. orcle数据库表中字段值含有单引号,如何模糊搜索?

    例如:T_table表中,name字段值为:字符串含有‘单引号’: SQL模糊搜索语句应该如下:select * from T_table where name like '%含有''单引号''%'

  8. java获取mysql数据库表、字段、字段类型、字段注释

    最近想要写一个根据数据库表结构生成实体.mapper接口.mapping映射文件.service类的简单代码生成工具,所以查阅了一些资料,怎样获取数据库的表.表中字段.字段类型.字段注释等信息. 最后 ...

  9. mysql依据某一张表的字段,查询出对应的表所在的数据库

    表太多,只记得这个表有一个mygame的字段,但是并不知道这张表在那个数据库下,只能根据这个字段查找对应的表和所在数据库 select table_schema,table_name from inf ...

  10. Java 使用反射拷贝对象一般字段值

    在<Java解惑>上面看到第八十三例--诵读困难者,要求使用非反射实现单例对象的拷贝.查阅了部分资料,先实现通过反射拷贝对象. 1. 编写需要被拷贝的对象Person package co ...

随机推荐

  1. Nebula Graph 1.0 Release Note

    Nebula Graph 1.0 发布了.作为一款开源分布式图数据库,Nebula Graph 1.0 版本旨在提供一个安全.高可用.高性能.具有强表达能力的查询语言的图数据库. 基本功能 DDL & ...

  2. [程序] C++实现 http和https的反向代理程序

    目录 前言 代理原理 http代理 https代理 实现 客户端 服务端 遇到的所有问题记录 Python对于回复不响应 接受的数据只有4字节 最终数据已经发给Python了 但是Python还是阻塞 ...

  3. slice 切片数组测试记录【GO 基础】

    〇.测试前准备 本文是在 GO 环境下测试记录系列之一,GO 基本环境部署步骤将略过,直接上代码. 下面是常用命令:[初始化 + 运行 + 编译] // {GOPATH} 环境变量值, example ...

  4. Java实现对ES数据的新增,删除,修改,及合并

    Java实现对ES数据的新增,删除,修改,及合并 新增数据 代码: @Autowired private RestHighLevelClient client; /** * @description ...

  5. vscode 批量函数前加const 正则表达式替换

    需求 有200多个函数,我要在前面加const devService_importCertificate_result = function (args) { 方案 vscode 替换 打开正则的图标 ...

  6. [更新/已解决] Nodejs 16.18.0 和 Nodejs 18.16.0 两个版本同时共存 nvm-desktop

    [更新/已解决] https://github.com/1111mp/nvm-desktop/blob/main/README-zh_CN.md 软件名字叫 nvm-desktop 装完 window ...

  7. obs 录制教程 手机录屏用 向日葵 手机投屏 能用有线用有线的连接

    obs 录制教程 手机录屏用 向日葵 手机投屏 稍微有点卡 华为手机有个投屏 笔记本不支持这个 miracast 淘宝有卖 投屏设备的,搜 miracast 100多米 免费的就用向日葵就得了. 最新 ...

  8. 麦克风阵列技术-beaforming开源算法源码分析

    概述   在音频前端处理算法中,beamforming算法是一个无法绕过的存在,随着AI技术的广泛发展,前端语音技术的需求也在呈现个性化的动态范围.作为一个深耕音频算法多年的老兵,发现站在巨人的肩膀上 ...

  9. JAVA | Guava EventBus 使用 发布/订阅模式

    系列文章目录 Go | Go 语言打包静态文件以及如何与Gin一起使用Go-bindata Go | Gin 解决跨域问题跨域配置 目录 系列文章目录 前言 一.为什么要用 Observer模式以及 ...

  10. day10-面向对象

    面向对象 1.什么是面向对象? 1.1面向过程&&面向对象 面向过程思想: 步骤清晰简单,第一步做什么,第二步做什么-- 面对过程适合处理一些较为简单地问题 面向对象思想 物以类聚,分 ...