在Java中处理丑陋的SQL

Art*_*tem 0 java mysql sql coding-style

这是一个SQL-Java编码风格问题......

如何别人在这里处理Java创建复杂的自定义查询干净

我说的是一个看似简单的准备字符串的任务,这是要执行的SQL语句.

我知道HQL以及存储过程,但说实话,我并不喜欢这些解决方案.也许我可以用不同的方式说服.存储过程对于部署/维护很烦人,在我的情况下解析性能不是一个大问题 - 灵活性优先.HQL似乎是一个很大的飞跃,并且对我的复杂查询有一些限制.

要清楚,我说的是这样的超丑看代码:

    return 
        "(" + topTwenty + ")" +
        "UNION " +
        "(" + twentyBeforeMe + ")" +
        "UNION " +
        "(" + meDummyQuery + ")" +
        "UNION " +
        "(" + twentyAfterMe + ")";
Run Code Online (Sandbox Code Playgroud)

例如,变量topTwenty也是类似地创建的子查询.

我从来没有想过我会说这个,但它在PHP中更干净,它有多行字符串和$变量嵌入字符串.

人们有没有使用过琐碎的模板库?你如何整齐地保持程序中的字符串?或者你把它们放在一个单独的文件中(似乎对我来说似乎很烦人).

Jef*_*eff 6

无需进入数据库抽象,您可以使用PreparedStatment使查询更具可读性- 更不用说它有助于提高安全性.

  • 不,真正的麻烦在于,当您的用户设法潜入";从用户中删除*"进入您的某个字段时.;) (2认同)