一尘不染

将准备好的语句与JDBCTemplate一起使用

java

我正在使用JDBC模板,并希望使用准备好的语句从数据库中读取数据。我遍历.csv文件中的许多行,并且在每一行上执行一些具有相应值的SQL选择查询。

我想加快从数据库中的读取速度,但是我不知道如何使JDBC模板与准备好的语句一起使用。

PreparedStatementCreatorPreparedStatementSetter。如本例所示,它们都是使用匿名内部类创建的。但是在PreparedStatementSetter类中,我无权访问要在prepare语句中设置的值。

由于要遍历.csv文件,因此我无法将它们硬编码为字符串,因为我不知道它们。我也不能将它们传递给PreparedStatementSetter,因为构造函数没有参数。而将我的价值观设定为最终也是愚蠢的。

我习惯于创建准备好的语句非常简单。就像是

PreparedStatement updateSales = con.prepareStatement(
    "UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ? ");
updateSales.setInt(1, 75); 
updateSales.setString(2, "Colombian"); 
updateSales.executeUpdate():

就像本Java教程中一样


阅读 157

收藏
2020-12-03

共1个答案

一尘不染

我现在尝试使用进行选择语句PreparedStatement,但事实证明它并不比Jdbc模板快。也许,正如mezmo建议的那样,它会自动创建准备好的语句。

无论如何,我的sql SELECT这么慢的原因是另一个。在该WHERE子句中,我一直想使用operator
LIKE,而我想做的只是查找完全匹配的对象。正如我发现的那样,LIKE搜索模式是非常缓慢的。

我现在正在使用运算符,=并且速度更快。

2020-12-03