在 JDBC API 中,我可以使用以下命令简单地设置 UTC 时区
用于插入或更新
PreparedStatement myPreparedStatement = ...
myPreparedStatement.setTimestamp( 1, myDateTime, Calendar.getInstance( TimeZone.getTimeZone( "UTC" ) ));
Run Code Online (Sandbox Code Playgroud)
用于查询
ResultSet rs = ...
rs.next();
rs.getTimestamp( 1, Calendar.getInstance( TimeZone.getTimeZone( "UTC" ) ) )
Run Code Online (Sandbox Code Playgroud)
使用 Spring JDBC Template,我将需要使用类似的东西来查询。
对于查询,我没有任何问题,因为可以通过 RowMapper 访问 ResultSet,并使用 ResultSet 传递 UTC 中的 Calendar 实例。但是,为了插入或更新,我只有以下内容。
NamedParameterJdbcTemplate namedParameterJdbcTemplate = ....
SqlParameterSource parameters = new MapSqlParameterSource().addValue("current_timestamp", myDateTime )
namedParameterJdbcTemplate.update(sql, parameters);
Run Code Online (Sandbox Code Playgroud)
问题
有没有办法告诉 Spring JDBC 模板使用我指定的时区?
我不喜欢使用,TimeZone.setDefault(..)因为这会影响我们的遗留模块。
我有一个返回两行的 sql 查询。我已经使用 BeanPropertyRowMapper 来检索查询结果,我想使用第一行并将特定值分配给 pojo。如何从结果集中检索单行
我有以下与 Spring JDBC 一起使用的方法
public String getState() {
String stateLink = template.queryForObject(
"select state_url from state_scrape_queue where in_use = false ORDER BY scrape_timestamp NULLS FIRST LIMIT 1",
(result, rowNum) -> {
return result.getString("state_url");
});
return stateLink;
}
Run Code Online (Sandbox Code Playgroud)
我找不到如何使用Spring JDBC 进行更新的示例。我想in_use设置为 true 用于更新。
我需要使用 select 进行更新,因为该应用程序将以多线程方式使用。我不希望多个线程获得同一行,防止这种情况的方法是使用select for update
我能够使用普通 JDBC 做到这一点,这是我问的问题如何使用普通 JDBC 做到这一点
有谁知道这将如何完成?
我需要构建一个 Spring Boot 应用程序,该应用程序公开 REST 端点,以将巨大的数据库表导出为具有不同过滤器参数的 CSV 文件。我正在努力寻找解决这个问题的有效方法。
目前,我正在使用 spring-data-jpa 查询数据库表,该表返回 POJO 列表。然后使用 Apache Commons CSV 将此列表作为 CSV 文件写入 HttpServletResponse。这种方法有几个问题。首先,它将所有数据加载到内存中。其次,它很慢。
我没有对数据执行任何业务逻辑,在这种情况下是否有必要使用 jpa 和实体(POJO)。我觉得这就是造成问题的地方。
从 Java 8 迁移到 Java 11 开放 JDK。出现奇怪的错误,其中 java.base 模块中的一个类 (java.util.Arrays) 无法访问模块jdk.internal.util.ArraysSupport中名为 ( )的另一个类java.base。
如果我查看java.base模块jdk.internal.util包的模块信息未导出。我尝试过--add-export java.base/jdk.internal.util=ALL-UNNAMED但遇到了同样的错误。As--add-export有助于将包导出到另一个模块。这里的问题是同一模块中的一个类无法访问同一模块中的另一个类。不确定这里出了什么问题并寻求建议。
java.lang.NoClassDefFoundError: Could not initialize class jdk.internal.util.ArraysSupport
at java.base/java.util.Arrays.equals(Arrays.java:2873)
at java.base/sun.security.util.ObjectIdentifier.equals(ObjectIdentifier.java:345)
at java.base/sun.security.pkcs.PKCS7.parse(PKCS7.java:185)
at java.base/sun.security.pkcs.PKCS7.parse(PKCS7.java:154)
at java.base/sun.security.pkcs.PKCS7.<init>(PKCS7.java:136)
at java.base/sun.security.util.SignatureFileVerifier.<init>(SignatureFileVerifier.java:127)
at java.base/java.util.jar.JarVerifier.processEntry(JarVerifier.java:297)
at java.base/java.util.jar.JarVerifier.update(JarVerifier.java:230)
at java.base/java.util.jar.JarFile.initializeVerifier(JarFile.java:757)
at java.base/java.util.jar.JarFile.ensureInitialization(JarFile.java:1034)
at java.base/java.util.jar.JavaUtilJarAccessImpl.ensureInitialization(JavaUtilJarAccessImpl.java:69)
at java.base/jdk.internal.loader.URLClassPath$JarLoader$2.getManifest(URLClassPath.java:870)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:788)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:700)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:623)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:315)
at org.apache.commons.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2124)
at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2033)
at …Run Code Online (Sandbox Code Playgroud) 我喜欢JdbcTemplate的简单易用性,但我对它的工作方式感到有些困惑.似乎每个操作(query()或update())从数据源获取连接并关闭它.
很漂亮,但是如何在同一个连接中执行多个SQL查询?
我可能想要按顺序执行多个操作(例如SELECT后跟一个INSERT后跟一个提交)或者我可能想要执行嵌套查询(SELECT然后根据每行的结果执行第二个SELECT).
我如何使用JdbcTemplate执行此操作.我使用合适的班级吗?
谁能给我一些关于他的春课的简短描述
org.springframework.jdbc.core.BatchPreparedStatementSetter
Run Code Online (Sandbox Code Playgroud)
我收到错误代码-4220与空SQL状态.SP"XXXXX"包含VARGRAPHICS数据类型.下面是完整的异常堆栈跟踪.SP正在执行,读取输出参数时出错,即执行成功调用方法,但getString方法给出错误.
即使我正在尝试访问任何方法来获取输出参数值,也会出现错误.仅供参考,我尝试使用最新版本的db2驱动程序,但仍然存在错误.
com.ibm.db2.jcc.am.SqlException: [jcc][t4][1065][12306][3.65.77] Caught java.io.CharConversionException. See attached Throwable for details. ERRORCODE=-4220, SQLSTATE=null
at com.ibm.db2.jcc.am.cd.a(cd.java:682)
at com.ibm.db2.jcc.am.cd.a(cd.java:60)
at com.ibm.db2.jcc.am.cd.a(cd.java:112)
at com.ibm.db2.jcc.am.gc.a(gc.java:2825)
at com.ibm.db2.jcc.am.gc.a(gc.java:582)
at com.ibm.db2.jcc.am.gc.q(gc.java:560)
at com.ibm.db2.jcc.am.gc.N(gc.java:1557)
at com.ibm.db2.jcc.am.gc.a(gc.java:1541)
at com.ibm.db2.jcc.am.CallableStatement.D(CallableStatement.java:941)
at com.ibm.db2.jcc.am.CallableStatement.getString(CallableStatement.java:920)
at com.cst.test.daoLayer.SPTest.callDB2ProcOUTParameter(SPTest.java:118)
at com.cst.test.daoLayer.SPTest.testLogic(SPTest.java:235)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: …Run Code Online (Sandbox Code Playgroud) 我正在构建一个Web应用程序,该应用程序在后端使用MSSQl来获取查询。我正在使用SpringBoot和Hibernate。
现在,如果数据库关闭,我的查询将花费超过2分钟的时间,并在异常org.hibernate.exception.JDBCConnectionException以下抛出:无法打开连接”
如何减少应用程序中的超时,以便在db关闭时更早地查询超时。
帮助深表赞赏
我想在参数中传递Dto并在spring jdbc中调用存储过程.这有可能,这样做吗?
我想用patometer中的dto调用存储过程而不是设置参数?因为我有大量的参数.
spring-jdbc ×10
java ×5
spring ×5
jdbc ×3
jdbctemplate ×3
spring-boot ×3
db2 ×1
dto ×1
hibernate ×1
java-11 ×1
mysql ×1
mysqli ×1
spring-data ×1
yaml ×1