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 = OrderNo();
QmsInspectorOrderEntity qmsInspectorOrderEntity = baseMapper.selectById(inspectorOrderEntity);
//1.根据id 对⽐⽤户输⼊和数据库查询顺序号是否相等
if (orderNo.OrderNo())){
//不存在重复顺序号校验通过
entity.setMarking(0);
return entity;
} else {
// ⽤户输⼊和数据库查询不相等需要做校验顺序是否存在
if (this.ifExistNumber(inspectorOrderEntity)){
//true 没有查询到校验通过
entity.setMarking(0);
return entity;
}else {
//建议输⼊N+1 顺序号已存在
QueryWrapper<QmsInspectorOrderEntity> wrapper1 = new QueryWrapper<>();
QmsInspectorOrderEntity maxValue = baseMapper.selectOne(wrapper1);
entity.OrderNo()+1+"");
entity.OrderNo());
entity.setMarking(1);
return entity;
java做什么的}
}
}
/**
* 查询顺序号是否存在? 存在false
* @param inspectorOrderEntity 实体
* @return Boolean
*/
public boolean ifExistNumber(QmsInspectorOrderEntity inspectorOrderEntity){
Integer orderNo = OrderNo();
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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论