问题标签 [jdbctemplate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - 来自 Spring JDBCTemplate 查询方法的结果集元数据
有什么方法可以从 jdbctemplate 查询方法之一获取结果集对象?
我有一个类似的代码
我想执行存储在 finalQuery 字符串中的 sql 语句并获取结果集。该查询是对 6 到 7 个表的复杂连接,我从每个表中选择 4-5 列,并希望获取这些列的元数据以将数据类型和数据转换到下游系统。
如果它是一个简单的查询并且我只从一个表中获取我可以使用 RowMapper#mapRow 并且在该 maprow 方法中我可以调用 ResultsetExtractor.extractData 来获取结果列表;但在这种情况下,我的查询中有复杂的连接,我试图从结果集元数据中获取结果集对象......
上面的代码不好,因为对于每个结果,它都会返回相同的结果集对象,我不想将它们存储在列表中......
还有一点是,如果我的查询中的每个结果都调用了 maprow,那么即使我的列表引用了 RS 对象,JDBCTemplate 也会关闭 rs 和连接吗?
有没有像 jdbcTemplate.queryForResultSet(sql) 这样的简单方法?
现在我已经实现了自己的 ResultSet Extractor 来处理数据并将其插入下游系统
这个 CustomResultSetProcessor 实现了 ResultSetExtractor 并且在 extractData 方法中我调用了 3 种不同的方法 1 是从 rs.getMetaData() 中获取 ColumnTypes ,其次是通过运行获取目标元数据的列类型
在第三种方法中,我正在构建插入语句(准备好的)表单目标列类型,最后使用
希望这对其他人有帮助...
sql - 我可以为单个查询设置 JDBC 超时吗?
我在 Tomcat 上有一个 Web 应用程序,它处理数据库连接池,并使用 Spring JDBCTemplate 执行查询。有人要求我实现一个状态页面,该页面将由心跳进程监控以确定服务器是否一切正常。
作为其中的一部分,我想做一个数据库查询以确定与数据库的连接是否正常。理想情况下,由于它只是“从 '中选择 1”,我希望它在 10 秒内快速返回,以表明如果数据库在那段时间内没有响应则表示失败。
但是,我不想将连接更改为正常请求的快速超时。
有没有办法使用原始 JDBC 或 Spring JDBC 包装器设置每个查询超时?
java - 对使用 Spring JDBC 的 DAO 类进行单元测试
我有几个 DAO 对象用于从数据库中检索信息,我真的很想为它们编写一些自动化测试,但我很难弄清楚如何去做。
我正在使用 SpringJdbcTemplate
运行实际查询(通过准备好的语句)并将结果映射到模型对象(通过RowMapper
类)。
如果我要编写单元测试,我不确定我将/应该如何模拟对象。例如,由于只有读取,我会使用实际的数据库连接而不是模拟 jdbcTemplate,但我不确定这是否正确。
这是批处理中最简单的 DAO 的(简化)代码:
任何想法将不胜感激。
谢谢!
java - Springs SimpleJdbcInsert 不会按预期生成自动生成的密钥
我正在使用 springs SimpleJdbcInsert 来执行 JDBC 插入并返回 2 个自动生成的键。
我使用的命令是:
但keys
只包含一个名为SCOPE_IDENTITY()
日志似乎表明事情进展顺利,除了 TRANSACTIONID 和 ROWID 的自动生成的键没有被填充,这里有一些相关的日志
java - 使用 Spring jdbcTemplate 在 MS Access 中更新日期
我正在使用 MS Access 和 Spring Jbdc 模板。
如果我尝试使用 jdbctemplate 更新表中的日期,则会出现错误
这是代码:
提前致谢, 桑托什
postgresql - Spring JDBC - 最后插入的 id
我正在使用 Spring JDBC。是使用 Spring Framework 获取最后插入的 ID 的简单方法还是我需要使用一些 JDBC 技巧?
我发现了类似下面的东西,但我得到了:org.postgresql.util.PSQLException: Returning autogenerated keys is not supported.
oracle - 没有主键缺失插入的 Oracle 批量插入
我正在尝试使用 ojdbc14.jar 驱动程序和 Spring 的 SimpleJdbcTemplate batchUpdate 方法将超过 100,000 条记录插入到没有主键的 Oracle 9i 表中。这是我的代码片段:
}
inputData List、dataArray、batch length 的大小都是相同的期望值。batchUpdate 在没有抛出任何异常的情况下完成,随后的 for 循环不打印任何内容,因为插入的数组中的每个项目都返回 -2(成功)。但是,只有 42,000 条记录保留到目标表,而不是预期的 100,000 多条记录。
如果我将 batchUpdate 替换为循环输入集合并执行每个项目的更新,则将保留 100,000 多条记录。但是,我想使用 batchUpdate 来利用改进的性能。
有人对为什么 batchUpdate 不起作用有任何想法吗?我不禁认为这与缺少主键有关。
以下是用于填充 inputData 列表的源表中的数据:
这是batchUpdate之后持久化的内容:
源表中的 24 行在目标表中也应该有 24 行,但只有 11 行被填充。
java - Spring 的 NamedParameterJDBCTemplate 加入 Hibernate 的会话?
下面是一个简短的问题:如何让 Spring 的 NamedParameterJDBCTemplate 加入 Hibernate 的会话?我们有一个使用 Spring 和 Hibernate 的应用程序,我们的整个数据层都使用 Hibernate。但是现在有一个用例,我们有一个父对象,整个休眠逻辑都已到位。父对象有许多(> 4000)细节,我们确实想使用 Spring 的 jdbctemplate 插入,所有这些都在一个事务中(而不是使用休眠)。父对象被保存,父对象的 id(它是一个 oracle 序列)被设置,并且可以通过对象读取。我们只需要提交才能永久存储它。事务边界设置在一个方法上,该方法也会触发 4000 多个 jdbctemplate 插入细节。细节,即细节,确实需要对父对象的引用,即父对象的 id,在执行 4000 多个插入时可用。但是在插入第一个细节时,我得到了一个
integrity constraint (FK_008) violated - parent key not found
我想我明白这一点,因为 jdbctemplate 可能正在使用另一个会话,因此是另一个事务。我尝试在执行 4000+ 次插入的方法上设置 propegation:required 事务属性,期望事务的加入足以读取新的未提交父 ID,但这显然还不够。我希望我能以某种方式将休眠会话连接到 spring 的 jdbctemplate 但到目前为止我还不能这样做。SpringJDBC 以dataSource 作为参数,jtatransaction manager 以Hibernate SessionFactory 为参数,到目前为止,我觉得东西方是东西方,永远不会相遇。还有其他方法可以让 Spring 的 jdbctemplate 参与 Hibernate 的 Session 吗?(除了追求父母的承诺'
HibernateSessionFactory是一个 org.springframework.orm.hibernate3.LocalSessionFactoryBean ,其 dataSource 作为参数之一。
TransactionManager是 org.springframework.orm.hibernate3.HibernateTransactionManager 获取 sessionFactory 作为参数。
NamedParameterJDBCTemplate在sqlInserter的 setter 中创建:
希望有人可以在这里帮助我。
干杯,杰伦
java - Spring JDBCTemplate 给出 InvalidResultSetAccessException 无效的列索引
我使用 SpringSimpleJDBCTemplate
访问 Oracle DB。这是我的代码。
行映射器是:
该sql经过测试可以正常工作。
异常堆栈跟踪:
谢谢。
java - 使用spring jdbctemplate从数据库填充pojo
通过允许spring自动检测与列匹配的数据成员的名称,是否可以在不创建映射器的情况下填充对象(pojo)?我期待有类似于 SimpleJdbcInsert 的东西,我在其中使用如下:
谢谢!