例如 一个实体 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. 【Azure Cloud Service】Cloud Service(Classic) 迁移失败,找不到解决方案怎么办?

    问题描述 很老很老的云服务,在迁移到 Cloud Service(Extended Support)[云服务外延支持] 时,迁移的验证步骤不通过,因为资源中没有包含虚拟网络(Virtual Netwo ...

  2. 【Azure Redis 缓存】C#程序是否有对应的方式来优化并缩短由于 Redis 维护造成的不可访问的时间

    问题描述 C#程序是否有对应的方式来优化并缩短由于 Redis 维护造成的不可访问的时间? Redis维护说明: Redis 服务维护时,会把副本节点提升为主节点,且旧主节点关闭现有连接时,这个时候, ...

  3. 关于Java并发多线程的一点思考

    写在开头 在过去的2023年双11活动中,天猫的累计访问人次达到了8亿,京东超60个品牌销售破10亿,直播观看人数3.0亿人次,订单支付频率1分钟之内可达百万级峰值,这样的瞬间高并发活动,给服务端带来 ...

  4. 【译】32位 .NET Framework 项目的 WinForm 设计器选择

    在客户反馈的推动下,Visual Studio 2022 向64位架构过渡,标志着增强开发体验的关键一步.正如 Klaus Loffelmann 在他的博客文章中所描述的那样,这种转换增强了整体性能和 ...

  5. git 常见命令和资源

    git练习 常用git清单 强制切换分支所指位置 git branch -f main c3强制分支main指向c3 git branch -f main HEAD~3强制分支main指向head的父 ...

  6. mybatis使用postgresql中的jsonb数据类型

    最近新开发的一个功能使用到postgresql中的jsonb数据类型.架构师可能考虑到这种数据格式更加便于存储json格式的数据,因此考虑使用这种数据类型.自己以前未曾使用过这种数据类型,因此需要现学 ...

  7. SpringBoot单次执行任务,退出异常NoClassDefFoundError: ch/qos/logback/classic/spi/ThrowableProxy

    背景 使用SpringBoot 运行一次性作业,用于初始化 问题:直接使用System.exit退出时,遇到异常:NoClassDefFoundError: ch/qos/logback/classi ...

  8. UDP可靠传输协议KCP的一些理解

    UDP主要用在哪两个方面 游戏 音视频通话 为什么要使用UDP? 实时性的考虑,丢包重传,TCP协议栈重传无法控制,UDP重发可以自定义策略. 在DNS查询的时候,也使用UDP,对资源的考虑. 如何做 ...

  9. day01-2-@RequestMapping和Rest

    @RequestMapping和Rest 1.@RequestMapping 1.1基本使用 @RequestMapping注解可以指定 控制器(处理器) 的某个方法的请求url 1.2@Reques ...

  10. iOS端创建ReactNative容器第一步:打出jsbundle和资源包

    react-native的打包流程是通过执行react-native bundle指令进行的.   添加构建指令 修改RN项目中的package.json文件,先其中添加构建命令build-relea ...