现在的位置: 首页 > 综合 > 正文

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

2013年08月31日 ⁄ 综合 ⁄ 共 4514字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.