标签: spring-jdbc

Spring JdbcTemplate和Threading

使用JdbcTemplateSwing中的一个Thread来执行插入是否安全.

这是一个记录事件,我尽可能不希望它影响感知性能.

java swing multithreading jdbc spring-jdbc

4
推荐指数
2
解决办法
1万
查看次数

PostgreSQL查询上的大型ResultSet

我正在对PostgreSQL数据库中的表运行查询。该数据库位于远程计算机上。该表具有约30个使用postgresql 分区功能的子表。

该查询将返回一个很大的结果集,大约有180万行。

在我的代码中,我使用spring jdbc支持,即方法JdbcTemplate.query,但未调用我的RowCallbackHandler

我最好的猜测是postgresql jdbc驱动程序(我使用版本8.3-603.jdbc4)在调用代码之前在内存中累积了结果。我以为fetchSize配置可以控制它,但是我尝试了一下,没有任何变化。我这样做是作为postgresql手册推荐的

当我使用Oracle XE时,此查询工作正常。但是由于分区功能(Oracle XE中不提供该功能),我试图迁移到postgresql。

我的环境:

  • PostgreSQL 8.3
  • Windows Server 2008企业版64位
  • JRE 1.6 64位
  • 春季2.5.6
  • PostgreSQL JDBC驱动程序8.3-603

java postgresql spring jdbc spring-jdbc

4
推荐指数
1
解决办法
6463
查看次数

使用Java和Spring在Oracle数据库中插入UTC/GMT日期

当我将new Date()对象插入jdbcTemplateOracle数据库时,我可以看到jdbc驱动程序或Spring jdbcTemplate Date使用本地JVM偏移量插入.

SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Date timeZoneDate = sdf.parse("09-SEP-1987");
Run Code Online (Sandbox Code Playgroud)

例如,当我插入在GMT中创建的Date对象时,如果JVM时区是USA,则将此结果插入到Oracle数据库中的08-SEP-1987中.

java oracle timezone jdbc spring-jdbc

4
推荐指数
1
解决办法
8661
查看次数

配置spring以通过ssl连接到mysql

我从我的Java应用程序连接到SSL over SSL.我已将MYSQL配置为支持SSL并生成客户端证书.我已将服务器CA证书和客户端证书导入密钥库.这就是我的代码目前的样子

    String url = "jdbc:mysql://127.0.0.1:3306/MySampleDb? verifyServerCertificate =true&useSSL=true&requireSSL=true"

    System.setProperty("javax.net.ssl.keyStore","/home/cert/keystore");
    System.setProperty("javax.net.ssl.keyStorePassword","password");
    System.setProperty("javax.net.ssl.trustStore","/home/cert/truststore");
    System.setProperty("javax.net.ssl.trustStorePassword","password");

    Class.forName("com.mysql.jdbc.Driver");
    con = DriverManager.getConnection(url, user, password);
Run Code Online (Sandbox Code Playgroud)

我想使用带有C3p0的spring通过SSL连接到MYSQL.这是我的spring配置文件,它从jdbc.properties读取参数.

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="driverClass" value="${jdbc.driver}"/>
    <property name="jdbcUrl" value="${jdbc.url}"/>
    <property name="user" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
    ........
</bean>
Run Code Online (Sandbox Code Playgroud)

如何配置spring来设置属性 verifyServerCertificate = true
useSSL = true
requireSSL = true"

还可以在spring配置文件中设置keyStore和trustStore值.

ssl spring jdbc spring-jdbc c3p0

4
推荐指数
2
解决办法
2万
查看次数

弹簧转换为弃用

Spring 3.0.5不推荐使用SimpleJdbcCall.returningResultSet(ParameterizedBeanPropertyRowMapper).如何更改我的代码以使用此方法的非弃用版本?

private JdbcTemplate jdbcTemplate;

private SimpleJdbcCall procGetReportExtras;

public void setDataSource(DataSource dataSource) {
    this.jdbcTemplate = new JdbcTemplate(dataSource);

    jdbcTemplate.setResultsMapCaseInsensitive(true);

    this.procGetReportExtras =
            new SimpleJdbcCall(jdbcTemplate)
                .withCatalogName("package")
                .withProcedureName("proc")
                 .returningResultSet("CURREPORTLIST",
                            ParameterizedBeanPropertyRowMapper.newInstance(Report.class));
}
Run Code Online (Sandbox Code Playgroud)

spring spring-jdbc

4
推荐指数
1
解决办法
2635
查看次数

Spring JDBC:使用Oracle时出错

我们有一个Spring应用程序,它使用NamedParameterJdbcTemplate将消息持久化到Oracle数据库.sql是一个简单的插入.插入工作和数据库更新,但无论如何抛出以下异常.

04:02:58.276 [org.springframework.jms.listener.DefaultMessageListenerContainer#0-1] DEBUG o.s.jdbc.core.StatementCreatorUtils - JDBC 3.0 getParameterType call not supported
java.sql.SQLException: Unsupported feature
    at oracle.jdbc.driver.OracleParameterMetaData.getParameterType(OracleParameterMetaData.java:166) ~[ojdbc6-11.2.0.2.0.jar:11.2.0.2.0]
    at org.springframework.jdbc.core.StatementCreatorUtils.setNull(StatementCreatorUtils.java:231) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.StatementCreatorUtils.setParameterValueInternal(StatementCreatorUtils.java:213) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.StatementCreatorUtils.setParameterValue(StatementCreatorUtils.java:144) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.BatchUpdateUtils.setStatementParameters(BatchUpdateUtils.java:63) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.namedparam.NamedParameterBatchUpdateUtils.access$000(NamedParameterBatchUpdateUtils.java:32) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.namedparam.NamedParameterBatchUpdateUtils$1.setValues(NamedParameterBatchUpdateUtils.java:47) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate$4.doInPreparedStatement(JdbcTemplate.java:899) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate$4.doInPreparedStatement(JdbcTemplate.java:890) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:589) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:617) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:890) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.namedparam.NamedParameterBatchUpdateUtils.executeBatchUpdateWithNamedParameters(NamedParameterBatchUpdateUtils.java:40) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.batchUpdate(NamedParameterJdbcTemplate.java:324) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.batchUpdate(NamedParameterJdbcTemplate.java:319) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
Run Code Online (Sandbox Code Playgroud)

我想知道是否有人可以帮助确定问题,谢谢.

spring-jdbc oracle11g

4
推荐指数
1
解决办法
7948
查看次数

尝试传递自定义oracle类型对象映射时无效的名称模式

Java spring自定义Oracle类型作为参数并获得跟随错误.

我不明白无效名称模式是什么意思?

任何帮助赞赏.

org.springframework.jdbc.UncategorizedSQLException: 
### Error updating database.  Cause: java.sql.SQLException: invalid name pattern: UPSELL.mkt_list_tab
### The error may involve com.comcast.upsell.dao.ProviderAndRegionalDao.getCorpsToMarketsList-Inline
### The error occurred while setting parameters
### SQL: call upsell_tx_etl_report.GET_OFFER_CORPS_TO_MARKETS(   ?,   ?,   ?   )
### Cause: java.sql.SQLException: invalid name pattern: MY_SCHEMA.mkt_list_tab
; uncategorized SQLException for SQL []; SQL state [99999]; error code [17074]; invalid name pattern: MY_SCHEMA.mkt_list_tab; nested exception is java.sql.SQLException: invalid name pattern: MY_SCHEMA.mkt_list_tab
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
    at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:71)
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:364)
    at com.sun.proxy.$Proxy15.update(Unknown Source) …
Run Code Online (Sandbox Code Playgroud)

java oracle plsql spring-jdbc oracle-type

4
推荐指数
2
解决办法
3万
查看次数

如何使用JdbcTemplate删除多行

想要借助于删除多行JdbcTemplate.在下面的代码中msgNos是一个String变量,包含逗号分隔值,如26,27.执行语句后,它只删除一条记录.

String sqlQuery = " delete from canned_message where msg_no in (?)";
Object[] params = {msgNos};
int rows = smsdbJdbcTemplate.update(sqlQuery, params);
Run Code Online (Sandbox Code Playgroud)

java spring spring-jdbc

4
推荐指数
1
解决办法
7767
查看次数

从SQL注入NamedParameterJdbcTemplate或SimpleJdbcTemplate中哪一个更安全?

SQL注入中哪一个是安全的:NamedParameterJdbcTemplate或SimpleJdbcTemplate?

例如,

String sql = "insert into db_table (associateid,comment) values(:associateId,:comments)";
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("associateId", "12345");
paramMap.put("comments", "some comments");
int rowNumber = readTemplate.update(sql, paramMap);
Run Code Online (Sandbox Code Playgroud)

要么

String sql = "insert into db_table (associateid,comment) values(?,?)";
int rowNumber = readTemplate.update(sql,new Object[] {"comments","some comments"} );
Run Code Online (Sandbox Code Playgroud)

第一个使用NamedParameterJdbcTemplate,而第二个使用SimpleJdbcTemplate。在某些站点中,两者给出的名称相同,在另一些站点中,NamedParameterJdbcTemplate是安全的。谁能消除我的疑虑?

java spring sql-injection spring-jdbc jdbctemplate

4
推荐指数
1
解决办法
4014
查看次数

春季启动“光池关闭”早期错误

错误:

2018-11-12 18:25:31.221  INFO 3028 --- [       Thread-3] 
com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...

2018-11-12 18:25:31.223  INFO 3028 --- [       Thread-3] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
Run Code Online (Sandbox Code Playgroud)

为什么会发生此错误?

我该如何解决?

spring-jdbc spring-boot hikaricp

4
推荐指数
3
解决办法
4475
查看次数