spring配置ibatis的jdbc方式和proxool连接池方式

spring配置ibatis的jdbc方式和proxool连接池方式,以sqlserver2005为例,驱动为sqljdbc.jar
jdbc.properties中内容如下

jdbc . driverClassName = com . microsoft . sqlserver . jdbc . SQLServerDriver
jdbc
. url = jdbc /: sqlserver /:// localhost /: 1433 ; DatabaseName /= IBATIS
jdbc
. username = sa
jdbc
. password = 123456

1 直接用jdbc方式(这种方式适合开发阶段,发布的程序强烈要求用连接池),代码如下,这个都知道,没什么可说的

<? 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: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内容如下:

<! DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
    "http://www.ibatis.com/dtd/sql-map-config-2.dtd"
>

< sqlMapConfig >
  
< sqlMap  resource ="com/mydomain/data/Account.xml" />
  
</ sqlMapConfig >

2 用proxool连接池方式,只有datasource发生变化,其他的无变动

     < bean  id ="dataSource"  class ="org.logicalcobwebs.proxool.ProxoolDataSource"  destroy-method ="close" >
        
< 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 >
         //此处继续增加proxool属性,详细见proxool文档
    
</ 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值