【问题标题】:How to - loading properties files with formatted sql in them?如何 - 在其中加载带有格式化 sql 的属性文件?
【发布时间】:2012-07-29 08:24:25
【问题描述】:

我的应用程序需要外部化查询,因此为了使用默认资源包,我决定使用属性文件中的查询。所以,现在的属性文件如下所示:

SELECT_USER_QUERY = Select username, userid from user where userid=?

INSERT_USER_QUERY = insert into user values (?,?)

这里的问题显然不是什么大问题——这个属性文件被拾取并得到很好的处理,但是对于在不久的将来进行编辑的人来说,它看起来很难看。我想要这样的东西:

SELECT_USER_QUERY = select username, userid
                    from user
                    where userid=? 

我想在我的属性文件中查看该格式。我认为解决它的一种方法是在每行的末尾引入一个“\”(根据 SO 上的一些答案)。还有其他方法可以在属性文件中保留格式并仍然成功加载吗?

【问题讨论】:

  • 您可以使用“\” - 这是真的。但是,您可能想改用 XML。还有一些映射框架(例如 ibatis)允许您将 SQL 外部化
  • 您是否考虑过用于查询的 XML 文件?
  • 否 - 我想避免使用 XML。像这样的简单任务太复杂了。
  • 我的程序没有复杂到需要ORM。

标签: java sql properties-file


【解决方案1】:

只需在行尾添加 \ 即可,不能将其解释为换行符。 没有其他方法可以在属性文件中保留格式(换行符)

【讨论】:

  • 好的。丢失链接中断的可能性非常高,并且在测试该查询之前不会弹出。我想我需要更好的东西。
【解决方案2】:

没有理由将自己限制在属性文件中。为什么不简单地将上述内容存储在一个文本文件中,并为每个查询/语句提供一个(比如说)一个文本文件?这样人们就可以编辑文本文件,而不必担心属性样式的格式。

【讨论】:

  • 这是我现在正在考虑的一个选项。但是每个查询一个文本文件会导致文本文件过多 - 我想避免这种情况。
【解决方案3】:

好的。我认为一种解决方法(我很可能会这样做)是将所有查询写入属性文件中,但每个查询值跨越多个格式化的行。我将使用自定义 ResourceBundle 以自定义方式加载这些属性。这样,我可以确保属性文件中有格式,并且还可以使用 ResourceBundle 以代码方式加载属性。

【讨论】:

    猜你喜欢
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 2016-04-11
    相关资源
    最近更新 更多