我正在使用JDBC模板,并希望使用准备好的语句从数据库中读取数据。我遍历.csv文件中的许多行,并且在每一行上执行一些具有相应值的SQL选择查询。
我想加快从数据库中的读取速度,但是我不知道如何使JDBC模板与准备好的语句一起使用。
有PreparedStatementCreator和PreparedStatementSetter。如本例所示,它们都是使用匿名内部类创建的。但是在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教程中一样。
我现在尝试使用进行选择语句PreparedStatement,但事实证明它并不比Jdbc模板快。也许,正如mezmo建议的那样,它会自动创建准备好的语句。
PreparedStatement
无论如何,我的sql SELECT这么慢的原因是另一个。在该WHERE子句中,我一直想使用operator LIKE,而我想做的只是查找完全匹配的对象。正如我发现的那样,LIKE搜索模式是非常缓慢的。
SELECT
WHERE
LIKE
我现在正在使用运算符,=并且速度更快。
=