【问题标题】:Marshalling and Unmarshalling ResultSet: Dealing with empty stringsMarshalling and Unmarshalling ResultSet:处理空字符串
【发布时间】:2012-02-28 18:11:40
【问题描述】:

当我从 ResultSet 创建域对象的实例时,我是否应该将 null 字符串转换为空字符串。反之,写入数据库时​​是否应该将空字符串转换为空字符串?

这里的最佳做法是什么?还是仅仅依赖于应用程序?

非常感谢。

【问题讨论】:

    标签: java jdbc marshalling unmarshalling


    【解决方案1】:

    空字符串"" 和其他字符串一样。对我来说,将"" 存储为NULL 与将"" 存储为'' 并将"abc" 存储为NULL 一样有意义。

    所以,保持简单:"" 存储为'',并将null 引用存储为NULL


    引用MySQL reference manual

    NULL 值的概念对于 SQL 新手来说是一个常见的混淆来源,他们经常认为 NULL 与空字符串 '' 是一回事。 p>

    【讨论】:

    • 谢谢@aioobe。是的,这也是我的想法,尽管这会导致很多“如果!= null”。
    【解决方案2】:

    IMO,您应该将空值保留为空值。根据您的数据库架构,空字符串和 null 是两个不同的值。如果您将这些值混为一谈,您的代码可能会产生意想不到的结果——特别是如果您有多个开发人员在同一个代码库上工作。您可能必须在下游代码中考虑这两种情况,但这很可能会更清晰、更易于维护/测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多