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

发布于 2022-09-12 01:20:27 字数 533 浏览 18 评论 0

例如,添加用户功能

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

问题

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

我的想法

我有想过几种方案,

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

疑惑

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

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

毁梦 2022-09-19 01:20:27

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

昔日梦未散 2022-09-19 01:20:27

两种方法都要用

  1. 因为唯一字段都会加唯一索引所以查询不会慢,唯一字段也不会很多,还可以套缓存所以压力不大
  2. DulicateKeyException 没有获取 key 的方法,只是把底层数据库的异常信息包装了一层发上来。可以根据目前使用的数据库的报错信息格式,把重复的列名提取出来。注意不同的数据库报错格式可能不一样
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文