准备好的SQL语句中的命名参数。有没有真正轻量级和成熟的库?

时间:2013-06-09 18:16:50

标签: java jdbc named-parameters

我不想使用ORM或动态SQL构建器。我需要的只是一个允许我使用命名参数创建预准备语句的类。或者,至少,为不同数据类型的参数安全地替换参数占位符。

编辑: 我知道JDBC不支持命名参数。这就是为什么我要问一个图书馆。

1 个答案:

答案 0 :(得分:3)

就我所知,JDBC不使用命名的参数,但您根本不需要库来定位参数,这足以“安全地替换参数的参数占位符”不同的数据类型“:

PrepareStatement statement = connection.prepareStatement
    ("SELECT Foo FROM Bar WHERE Baz = ?");
try {
    statement.setString(1, "John O'Reilly"); // No problem with quote here
    ResultSet results = statement.executeQuery();
    ...
} finally {
   statement.close();
}

有关详细信息,请参阅JDBC tutorial on prepared statements

编辑:如果你真的想使用像命名参数这样的东西,并且你可以控制SQL本身(所以你可以确保使用一些不会在别处使用的表格),你可以很容易地创建你的自己的查询翻译:

  • 使用TranslatedQuery
  • 之类的内容创建"SELECT Foo FROM Bar WHERE Baz = @Baz"个实例(这是您的新课程)
  • 计算每个参数的位置,并将其替换为?
  • 有一种方法可以返回给定名称的位置,另一种方法可以返回已翻译的SQL

使类完成测试不应该超过几个小时 - 它实际上不需要触及JDBC。