我正在使用Spring開發批處理。要執行查詢,我使用JdbcTemplate。如何配置Spring以顯示JdbcTemplate執行的查詢?
在我的具體情況的JdbcTemplate提供給擴展Spring JdbcDaoSupport類的DAO類,所以我有以下DAO:
@Service
@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS)
public class PucManagerColl extends JdbcDaoSupport {
private static Logger log = Logger.getLogger(PucManagerProd.class);
public PucManagerColl() {
System.out.println("Costruzione PucManager");
}
@Autowired
public PucManagerColl(@Qualifier("dataSourcePUCColl") DataSource dataSource) {
setDataSource(dataSource);
}
...............................................................
...............................................................
public void insertTirConsolidatoPolizza(TassoRendimentoInterno tri) {
log.debug("PucManagerColl.insertTirConsolidatoPolizza()");
String sql = "INSERT INTO TirConsolidatoPolizza "
+ "("
+ "Polizzaid, "
+ "PercentualeRendimentoDaInizioGestione, "
+ "PercentualeRendimentoDaInizioAnno, "
+ "PercentualeRendimentoDaInizioTrimestre, "
+ "ControvaloreFinaleBF, "
+ "DataRiferimentoNav"
+ ") "
+ "VALUES (?, ?, ?, ?, ?, ?, ?)";
this.getJdbcTemplate().update(sql,
new Object[] { tri.getPolizzaID(),
tri.getPercRendimentoInizioSottoscrizione(),
tri.getPercRendimentoInizioAnno(),
tri.getPercRendimentoInizioTrimestre(),
tri.getControvaloreQuote(),
tri.getDataRiferimentoNavPUC()});
log.debug("TERMINATO: PucManagerColl.insertTirConsolidatoPolizza()");
}
}
正如你可以看到這個類擴展Spring類JdbcDaoSupport並將數據源注入到構造函數中。
的問題是,所述insertTirConsolidatoPolizza()方法不能插入記錄到TirConsolidatoPolizza表。我沒有得到任何錯誤,也沒有任何形式。爲什麼?你在我的查詢中發現了一些問題嗎?
所以我想調試生成的查詢JdbcTemplate並嘗試手動執行到數據庫提示符,但我看不到它。
閱讀這篇文章:Seeing the underlying SQL in the Spring JdbcTemplate?
和官方doumentation:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/jdbc.html
在我看來,我可以配置的JdbcTemplate登錄調試模式或類似的東西查詢。
在其他職位上顯示這個XML片段做到這一點:
<category name="org.springframework.jdbc.core.JdbcTemplate">
<priority value="debug" />
</category>
,但我完全不知道我在哪裏HAE把它。
這是我databaseConfiguration.xml包含了數據庫連接(我將此文件導入主配置文件applicationContext.xml中)的信息:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<tx:annotation-driven transaction-manager="tjtJTransactionManager" />
<!-- DB CONNECTIONS: -->
<bean id="tjtJTransactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
scope="singleton">
<property name="dataSource" ref="dataSourcePUC" />
</bean>
<!-- PROFILO DI PRODUZIONE -->
<beans profile="PROD">
<bean id="dataSourcePUC" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver" />
<property name="url" value="jdbc:jtds:sqlserver://XXX.myCompany.YYYY.it:1433/DB_1" />
<property name="username" value="username" />
<property name="password" value="pswd" />
</bean>
</beans>
<!-- PROFILO DI COLLAUDO -->
<beans profile="COLL">
<bean id="dataSourcePUC" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver" />
<property name="url" value="jdbc:jtds:sqlserver://XXXX.MYCOMPANY.YYYY.it:1433/DB_2" />
<property name="username" value="username" />
<property name="password" value="pswd" />
</bean>
</beans>
</beans>
如何配置查詢日誌記錄看到我的堆棧跟蹤執行查詢?
您的交易得到承諾? – eatSleepCode
我想你應該用'@ Transactional'註釋'insertTirConsolidatoPolizza'。 – eatSleepCode
您必須將包'org.springframework.jdbc.core.JdbcTemplate'設置爲至少DEBUG模式。這在記錄配置中完成,無論您使用哪種實現。 – Vaelyr