我尽力找到答案:为什么在每个SQL之前执行“select user()”
我尝试两种方式来创建dataSource,并使用相同的方式来使用dataSource,然后执行我的SQL。
config 1将在每个SQL之前执行“select user()”
配置2是正确的,只需执行我想要的。
<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxIdle="10" maxTotal="100" minEvictableIdleTimeMillis="10000"
numTestsPerEvictionRun="10" removeAbandonedOnBorrow="true" removeAbandonedTimeout="10" type="javax.sql.DataSource" url="jdbc:mysql://dbserver:3306/***"
username="***" password="***" name="jdbc/tomcatDataSource" validationQuery="SELECT NOW() FROM DUAL"/>
<resource-ref>
<description>tomcatDataSource</description>
<res-ref-name>jdbc/tomcatDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/tomcatDataSource" />
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<property name="url"><value>jdbc:mysql://dbserver:3306/***</value></property>
<property name="username"><value>***</value></property>
<property name="password"><value>***</value></property>
</bean>