SSM项目中,数据重复异常如何处理?

例如,添加用户功能

用户信息中的用户名,email,手机号码都应该唯一,当提交数据的时候出现数据重复的时候就应该作相应的提示,如用户名重复就应该提示用户名已存在。

问题

在添加新用户的时候数据重复如何处理?

我的想法

我有想过几种方案,

  1. 在添加的时候,每个唯一的字段都做检查,重复的就返回提示信息。这种方法对于1个2个字段要检查的还行,如果字段>=3就不现实了,添加数据要执行SQL太多了
  2. 数据库表设置了唯一索引,直接插入数据,有异常就返回一个错误页面

疑惑

网上很多都是第二种方法,但是令我很不解的是,第二种方法如何精准的提示哪个字段出现重复??

如上面的例子,数据出现异常会捕获org.springframework.dao.DuplicateKeyException,这有可能是用户名重复,也有可能是email重复,也有可能是手机号码重复,如何提示用户呢?

求解答,有github源码借鉴最好,先多谢各位大佬了

阅读 3.8k
2 个回答

真实业务中不会有太多的字段重复检查,如果需要,你可以用切面配合注解来做重复检查

两种方法都要用

  1. 因为唯一字段都会加唯一索引所以查询不会慢,唯一字段也不会很多,还可以套缓存所以压力不大
  2. DulicateKeyException 没有获取 key 的方法,只是把底层数据库的异常信息包装了一层发上来。可以根据目前使用的数据库的报错信息格式,把重复的列名提取出来。注意不同的数据库报错格式可能不一样
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题