Tag: spring jdbc

Spring JDBC模板。 如何获得pl / sql脚本的结果变量

我正在使用NamedParameterJdbcTemplate运行pl / sql脚本。 但我不知道如何获得out变量的值( :id_out )。 提前致谢。 String script = “declare begin if myFunc(:id_in) is null then :id_out := 0; else :id_out := 1; end if; end;”; Map bindVars = new HashMap(); bindVars.put(id_in,1); bindVars.put(id_out,2); jdbcTmpl.execute(script, bindVars, new PreparedStatementCallback() { @Override public Object doInPreparedStatement(PreparedStatement cs) throws SQLException, DataAccessException { cs.execute(); return null; } } );

动态数据源路由 – 未初始化DataSource路由器

我指的是本文 ,我们可以使用Spring Framework中的AbstractRoutingDataSource动态更改应用程序使用的数据源。 我正在使用Mybatis(3.3.0)和Spring(4.1.6.RELEASE)。 如果从主数据库获取数据时发生exception,我想切换到备份数据库。 在这个例子中,我使用了hsql和mysql db。 RoutingDataSource : public class RoutingDataSource extends AbstractRoutingDataSource { @Override protected Object determineCurrentLookupKey() { return DataSourceContextHolder.getTargetDataSource(); } } DataSourceContextHolder : public class DataSourceContextHolder { private static final ThreadLocal contextHolder = new ThreadLocal(); public static void setTargetDataSource(DataSourceEnum targetDataSource) { contextHolder.set(targetDataSource); } public static DataSourceEnum getTargetDataSource() { return (DataSourceEnum) contextHolder.get(); } […]

NamedJDBCTemplate参数是列表列表

我有一个看起来像这样的查询: SELECT * FROM someTable t WHERE (ta, tb) IN (VALUES (1, 2), (3, 4)) 并且它将选择ta == 1 AND tb == 2或ta == 3 AND tb == 4任何记录。 这似乎工作得很好。 但是,我无法找到一种干净的方法来为NamedJDBCTemplate指定参数。 我尝试给它一个列表列表(即List<List> ),但它似乎炸毁了这样做。 val query = “SELECT * FROM someTable t WHERE (ta, tb) IN (VALUES :values)” namedJdbcTemplate.queryForList(query, mapOf(“values” to listOf(listOf(1, 2), listOf(3, 4)))) 我也尝试手动将值转换为字符串,但这也不会让它变得快乐。 namedJdbcTemplate.queryForList(query, […]

如何在JDBC中配置正确的时区?

我有这个url在我的意大利网站上设置连接,但是,当我尝试从网站执行一些插入操作时,日期仍然不正确。 (应该是例如:01:24,但它是02:24) jdbc.url=jdbc:mysql://sql.example.com/database?autoReconnect=true&characterEncoding=UTF-8&sessionVariables=time_zone=’Europe/Rome’ 我是否需要添加任何其他参数才能使其正常工作? 是否有所有时区的完整列表?

Spring JdbcTemplate和Threading

在Swing中使用JdbcTemplate分叉Thread以执行插入是否安全。 这是一个记录事件,我尽可能不希望它影响感知性能。

即使在日志中看到“添加事务方法”,方法也不被事务顾问拦截

我有一个@Transactional @Controller ,但它的方法是由Spring MVC框架调用的,没有事务。 在exception跟踪中,我找不到拦截调用的事务顾问: org.hibernate.HibernateException: No Session found for current thread org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:106) org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:1014) org.example.businesslogic.MyController.userLoggedIn(SwiperRest.java:48) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:483) org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938) 另一方面,日志清楚地表明控制器方法被检测为事务性: DEBUG osbfsDefaultListableBeanFactory – Returning cached instance of singleton bean ‘org.springframework.transaction.config.internalTransactionAdvisor’ DEBUG osbfsDefaultListableBeanFactory – Returning cached instance of singleton bean ‘metaDataSourceAdvisor’ DEBUG ostaAnnotationTransactionAttributeSource – Adding transactional method ‘MyController.userLoggedIn’ […]

Spring NamedParameterJDBCTemplate重用Prepared Statements

我使用Spring NamedParameterJdbcTemplate从表中获取一些值。 出于某种原因,查询在我的Java应用程序中运行速度非常慢,而不是在SQL Management Studio上运行相同的查询。 我还注意到在分析器中,准备好的语句不会被重用。 如果我多次在我的JAVA应用程序中运行相同的查询,我会看到正在执行的不同预处理语句。 因此,不确定为什么语句不会被重用。 性能是否因为我在查询中使用IN子句而变慢? 这是我的示例java代码 StringBuilder vQuery = new StringBuilder(); vQuery.append(” SELECT SUM(Qty) FROM vDemand”); vQuery.append(” WHERE ProductID = :ProductID”); vQuery.append(” AND [Date] >= :StartDate AND [Date] <= :EndDate"); vQuery.append(" AND CustomerID IN ( :CustomerID )"); MapSqlParameterSource vNamedParameters = new MapSqlParameterSource(); vNamedParameters.addValue("ProductID", aProductID); vNamedParameters.addValue("CustomerID", aCustomerlIDs); vNamedParameters.addValue("StartDate", aDate, Types.TIMESTAMP); vNamedParameters.addValue("EndDate", aDate, […]

JdbcTemplate多个结果集

我试图找到一种简单的方法来处理Stored Procedures / SQL返回多个结果集。 我一直在使用SimpleJdbcOperations#queryForList()方法,但是这只会将第一个结果集作为List<Map> 。 我需要能够获得多个结果集,理想情况下是List<Map>的Collection 。 我写的程序是一个中间件组件,所以我不知道SQL将是什么,或结果集的forms。 我想我必须使用JdbcOperations类,它允许我访问更多方法,包括execute(CallableStatementCreator csc, CallableStatementCallback action)但现在我被卡住了。 CallableStatementCallback callback = new CallableStatementCallback() { @Override public T doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException { boolean results = cs.execute(request); while(results) { ResultSet result = cs.getResultSet(); results = cs.getMoreResults(); } return null; } }; 我不确定如何使用该方法,或者如何处理ResultSet以获取我的通用List<Map> 。

如何在jdbctemplate中查询列表

我正在使用spring jdbctemplate并运行如下查询: SELECT COLNAME FROM TABLEA GROUP BY COLNAME 没有传递任何命名参数,但是,用户将传递列名COLNAME 。 问题 有没有办法让占位符,比如? 列名? 例如SELECT ? FROM TABLEA GROUP BY ? SELECT ? FROM TABLEA GROUP BY ? 如果我想简单地运行上面的查询并获得List ,最好的方法是什么? 目前我在做: List <Map> data = getJdbcTemplate().queryForList(query); for (Map m : data) System.out.println(m.get(“COLNAME”));

如何在启动时预初始化DBCP连接池?

我的项目设置是 – Spring JDBC用于持久化 Apache DBCP 1.4用于连接池 Linux上的Mysql 5 这是我的应用程序的日志,它捕获与数据库的交互。 2013-01-29 15:52:21,549 DEBUG http-bio-8080-exec-3 org.springframework.jdbc.core.JdbcTemplate – Executing SQL query [SELECT id from emp] 2013-01-29 15:52:21,558 DEBUG http-bio-8080-exec-3 org.springframework.jdbc.datasource.DataSourceUtils – Fetching JDBC Connection from DataSource 2013-01-29 15:52:31,878 INFO http-bio-8080-exec-3 jdbc.connection – 1. Connection opened org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38) 2013-01-29 15:52:31,878 DEBUG http-bio-8080-exec-3 jdbc.connection – open connections: 1 (1) 2013-01-29 […]