最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
MYSQL插入数据时检查字段值是否重复方法解析
时间:2022-06-29 08:36:01 编辑:袖梨 来源:一聚教程网
本篇文章小编给大家分享一下MYSQL插入数据时检查字段值是否重复方法解析,文章介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
项目需求
现有一张u_ps的车位信息表,对应每个小区的车位id ps_id自增长,每个车位又对应车位编号num,车位id由自增长,车位编号可以根据自己小区情况手动添加设置,但是不能重复,车位编号不能重复。这就需要在新增车位信息的时候代码检验新增的该num在u_ps表中是否存在,存在则抛出异常,不存在则做插入操作。
问题关键
不同的小区community_id中车位num可以重复,如果分开设计表设置唯一约束是可行的,但是我们的需求是将所有的小区车位信息放在同一个表中,这就涉及到在插入一条数据的时候需要判断是否是同一小区id,在community_id相同的情况下num不能重复。
1、表分开时,对字段设置约束
我们的主键为车位id ps_id,我们的思路是当插入一条数据,先查询车位信息表,遍历新的数据中的num是否存在,或者说新增的num在表中是否为空,是则抛出异常,否则执行插入操作。这是代码逻辑。
在sql中最直接的方法就是设置唯一索引(这跟主键并不冲突)
点击索引
这样就将num字段设置为唯一索引
在项目xml文件中设置插入语句
insert ignore into语句是针对喊主键(唯一索引)字段的情况下做判断是否有重复的字段值,如果有则忽略本次操作抛出异常(try{}catch(){}),没有则执行插入操作。
2、所有操作在同一张表中
我们在不修改sql的情况下利用代码逻辑来实现
sql语句是最基本的插入语句:
代码逻辑:
解析代码:
new一个新的Ps(车位信息类)bean对象,将我们插入的数据中的community_id和num放进listps对象中,对listps 执行sqlSession查询操作并放进list集合中,再对该查询结果集中的两个字段进行判空,如果为空说明该表中没有该字段的值,则进行插入操作,如果不为空则抛出异常并且在catch中再次抛出异常ServiceException e,这里设置两次catch,ServiceException e是为了返回给前端我们车位编号重复的异常,如果不设置的话前端只会收到异常信息。
StringUtilMycc为我们设置的工具类,该类下的isEmpty方法为判空操作。
注意:判空时还需要保证传递的该字段的值不能为空,如果只判断表中数据是否为空的话最后的测试结果指挥报空指针!!!
这是我的工具类下的isEmpty方法:
注:框架改动、配置问题等不同无法做到同步,仅作为一个思路参考
相关文章
- 阴阳师小袖之手幽篁流影怎么样 12-23
- 王者荣耀嬴政玄雷天君怎么样 12-23
- 光遇12.23免费魔法有什么 12-23
- 光遇12.23大蜡烛在哪里 12-23
- 光遇12.23季节蜡烛在哪里 12-23
- 王者荣耀嬴政玄雷天君怎么样 王者荣耀嬴政玄雷天君皮肤介绍 12-23