spring配置ibatis的jdbc方式和proxool连接池方式,以sqlserver2005为例,驱动为sqljdbc.jar
jdbc.properties中内容如下
jdbc . url = jdbc /: sqlserver /:// localhost /: 1433 ; DatabaseName /= IBATIS
jdbc . username = sa
jdbc . password = 123456
1 直接用jdbc方式(这种方式适合开发阶段,发布的程序强烈要求用连接池),代码如下,这个都知道,没什么可说的
< beans xmlns ="http://www.springframework.org/schema/beans"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop ="http://www.springframework.org/schema/aop"
xmlns:context ="http://www.springframework.org/schema/context"
xmlns:tx ="http://www.springframework.org/schema/tx"
xsi:schemaLocation ="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd" >
< context:component-scan base-package ="com.mydomain" >
< context:include-filter type ="aspectj" expression ="com.mydomain.spring..*" />
</ context:component-scan >
< context:property-placeholder location ="classpath:jdbc.properties" />
< bean id ="dataSource"
class ="org.apache.commons.dbcp.BasicDataSource"
destroy-method ="close" >
< property name ="driverClassName" value ="${jdbc.driverClassName}" />
< property name ="url" value ="${jdbc.url}" />
< property name ="username" value ="${jdbc.username}" />
< property name ="password" value ="${jdbc.password}" />
</ bean >
< bean id ="sqlMapClient" class ="org.springframework.orm.ibatis.SqlMapClientFactoryBean" >
< property name ="configLocation" value ="classpath:com/mydomain/data/SqlMapConfig.xml" />
< property name ="dataSource" ref ="dataSource" />
</ bean >
<!-- ibatis的事务管理直接用的DataSourceTransactionManager,因为ibatis没有自己的事务管理器 -->
< bean id ="txManager" class ="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
< property name ="dataSource" ref ="dataSource" />
</ bean >
< aop:config >
< aop:pointcut id ="baseServiceMethods"
expression ="execution(* com.mydomain.spring.*.*(..))" />
< aop:advisor advice-ref ="txAdvice"
pointcut-ref ="baseServiceMethods" />
</ aop:config >
< aop:aspectj-autoproxy />
< tx:advice id ="txAdvice" transaction-manager ="txManager" >
< tx:attributes >
< tx:method name ="select*" read-only ="true" propagation ="REQUIRED" />
< tx:method name ="find*" read-only ="true" propagation ="REQUIRED" />
< tx:method name ="save*" propagation ="REQUIRED" isolation ="REPEATABLE_READ" />
< tx:method name ="update*" propagation ="REQUIRED" isolation ="REPEATABLE_READ" />
< tx:method name ="add*" propagation ="REQUIRED" isolation ="REPEATABLE_READ" />
< tx:method name ="delete*" propagation ="REQUIRED" isolation ="REPEATABLE_READ" />
</ tx:attributes >
</ tx:advice >
</ beans >
SqlMapConfig.xml内容如下:
"http://www.ibatis.com/dtd/sql-map-config-2.dtd" >
< sqlMapConfig >
< sqlMap resource ="com/mydomain/data/Account.xml" />
![](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
</ sqlMapConfig >
2 用proxool连接池方式,只有datasource发生变化,其他的无变动
< property name ="alias" value ="test" ></ property >
< property name ="delegateProperties" >
< value > user=${jdbc.username},password=${jdbc.password} </ value >
</ property >
< property name ="user" value ="${jdbc.username}" />
< property name ="password" value ="${jdbc.password}" />
< property name ="driver" value ="${jdbc.driverClassName}" />
< property name ="driverUrl" value ="${jdbc.url}" />
< property name ="houseKeepingTestSql" value ="select CURRENT_DATE" ></ property >
![](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
</ bean >
此处说明一下:属性中的user和password不起任何作用,需要用delegateProperties方式写一下,否则会报错误,如下
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user ''. The user is not associated with a trusted SQL Server connection.
但是user和password还不能被去掉。
除了上面的用delegateProperties之外,还可以将用户名和密码直接写在url后面。
http://www.blogjava.net/landor2004/archive/2009/07/01/284978.html