java - Spring-Jdbc模板和Prepared语句

标签 java prepared-statement spring-jdbc

使用Spring-Jdbc模板时是否需要关闭Prepared Statement和Connection(jt.getDataSource().getConnection())?或者它们会被模板机制关闭?

public void updateRow() throws SQLException {

        final int i = 100;
        final int y = 2;

        PreparedStatementCreator creator = new PreparedStatementCreator() {
            @Override
            public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
                PreparedStatement updateSales = con.prepareStatement(
                "update ignor set ignored_id=? where id=?");
                updateSales.setInt(1, i);
                updateSales.setInt(2, y);
                return updateSales;
            }
        };

        PreparedStatement updateIgnor = creator.createPreparedStatement(jt.getDataSource().getConnection());
        int k = updateIgnor.executeUpdate();
        System.out.println("rows updated = " + k);

    }

最佳答案

默认情况下,如果您仅使用 .update(String sql, Object ... args) 形式,则 JDBCTemplate 在内部执行自己的PreparedStatement。 Spring 和您的数据库将为您管理已编译的查询,因此您不必担心打开、关闭、资源保护等问题。

关于java - Spring-Jdbc模板和Prepared语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27717906/

相关文章:

java - 将参数传递给方法时,强化将查询标记为 sqlInjection

java - AndroidX Work Library 正在取消操作,看似没有原因

php - prepare() 输出 bool false,语句对我来说看起来是正确的

java - 如果使用公共(public) IP,为什么 Rundeck 会重定向到 aws 上的 ec2 私有(private) IP?

java - 选择特定字段不为 NULL 的所有记录

java - Spring JDBC中的多个一对多关系

spring-boot - SpringBoot和SpringJDBC多数据源

java - SimpleJdbcCall 不能调用多个程序

java - select查询中单引号引起的问题

java - 通过启用另一个按钮来禁用一个按钮,反之亦然