MySQL 中电话号码的最佳数据类型是什么,Java 类型映射应该是什么?

新手上路,请多包涵

我将 MySQL 与 Spring JDBC 模板一起用于我的 Web 应用程序。我需要存储只有数字(10)的电话号码。我对使用数据类型的数据类型有点困惑。

  1. MySQL 中它的首选数据类型是什么?
  2. Bean (POJO) 类中的 Java 数据类型应该是什么?
  3. 如何使用 javax 验证/长度约束验证该数据类型,并且只允许数字?

原文由 Vishal Zanzrukia 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 683
1 个回答

字符串和 VARCHAR。

  • 不要尝试将电话号码存储为实际号码。它会破坏格式,删除前面的 0 s 和其他不需要的东西。

  • 如果您选择,您可以将用户输入限制为仅数值,但即使在这种情况下,也要将您的支持持久数据保留为字符/字符串而不是数字。

  • 在尝试实施任何类型的长度限制、验证或掩码(例如 XXX-XXXX-XX)之前,请注意更广阔的世界以及它们的数字长度和格式有何不同。

  • 非数字字符可以在电话号码中有效。一个典型的例子是 + --- 在国际号码的开头替代 00

从评论中的对话编辑:

  • 电话号码与数字有关是最大的 UI 错误之一。将它们当作地址来思考和对待要好得多,它比电话“号码”更接近它们的实际含义和代表。

原文由 indivisible 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题