ibatis+spring+dbcp 操作数据源

简单的实现了功能,先做一下备份,以免日后忘记。

1、创建一个maven模块:mvn archetype:create -DgroupId=xxx  -DartifactId=xxx

2、配置maven依赖:

dependencies>
      <dependency>
          <groupId>mysql</groupId>
          <artifactId> mysql-connector-java</artifactId>
          <version> 5.0.5</version>
      </dependency>

      <dependency>
          <groupId>javax.transaction</groupId>
          <artifactId>jta</artifactId>
          <version>1.1</version>
      </dependency>

      <dependency>
          <groupId>commons-dbcp</groupId>
          <artifactId>commons-dbcp</artifactId>
          <version>1.4</version>
      </dependency>

      <dependency>
          <groupId>javax.transaction</groupId>
          <artifactId>jta</artifactId>
          <version>1.1</version>
      </dependency>


      <dependency>
          <groupId>org.apache.ibatis</groupId>
          <artifactId>ibatis-sqlmap</artifactId>
          <version>2.3.4.726</version>
      </dependency>

      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>3.0.5.RELEASE</version>
      </dependency>

      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-orm</artifactId>
          <version>3.0.5.RELEASE</version>
      </dependency>

  </dependencies>
3、配置数据源及ibatis客户端(用spring的org.springframework.orm.ibatis.SqlMapClientFactoryBean创建SqlMapClient、dbcp创建连接池):

<?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:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"  default-autowire="byName">

    <bean id="mysqlDataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://ip:port/database?characterEncoding=xx"/>
        <property name="username" value=""/>
        <property name="password" value=""/>
        <property name="initialSize" value="2"/>
        <property name="maxIdle" value="10"/>
        <property name="minIdle" value="2"/>
        <property name="maxWait" value="200"/>
        <property name="defaultTransactionIsolation" value="4"/>
    </bean>


    <bean id="mySqlSqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="configLocation" value="classpath:com/study/dao/sqlMaps/config.xml"/>
        <property name="mappingLocations">
            <value>classpath*:com/study/dao/sqlMaps/study.xml</value>
        </property>

 </bean>

 

</beans>

4、配置ibatis配置文件和映射文件:

i配置文件

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE sqlMapConfig
        PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
        "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

<sqlMapConfig>
    <settings cacheModelsEnabled="true" enhancementEnabled="true"
              lazyLoadingEnabled="true" maxRequests="32" maxSessions="10"
              maxTransactions="5" useStatementNamespaces="true" />

    <!--<typeHandler  jdbcType="VARCHAR" javaType="java.lang.String"
                 callback="com.ibatis.sqlmap.engine.type.StringTypeHandler"/>-->
    <!--<sqlMap resource="com/my/dao/sqlMap/config/study.xml"/>-->
    <sqlMap resource="com/study/dao/sqlMaps/useless/useless.xml"/><!--此处必须包含一个sqlMap标签,并且要有实际存在的xml映射文件,映射文件只包含一个sqlMap
标签好可,否则解析配置文件时会报错-->
</sqlMapConfig>
ii映射文件:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap namespace="study">
    <typeAlias alias="study" type="com.study.bean.Study"/>

    <resultMap id="studyResultMap" class="study">
        <result property="id" column="id" />
........

  
    </resultMap>


    <select id="getCount" resultClass="int">
        sql
    </select>

    <insert id="insert" parameterClass="study">
sql
    </insert>

</sqlMap>

iii空的映射文件

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap namespace="study">
</sqlMap>

5、配置dao:

dao继续org.springframework.orm.ibatis.support.SqlMapClientDaoSupport,并把第3步中配置的SqlMapClient和dataSource注给dao:

package com.study.dao.impl;

import com.ibatis.sqlmap.client.SqlMapClient;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;

import javax.sql.DataSource;


public class BaseDao extends SqlMapClientDaoSupport{
    public Object queryForObject(String s){
        return super.getSqlMapClientTemplate().queryForObject(s);
    }

    public Object insert(String s,Object o){
        return super.getSqlMapClientTemplate().insert(s,o);
    }

    private SqlMapClient baseSqlMapClient;

    private DataSource baseDataSource;


    public void setBaseSqlMapClient(SqlMapClient baseSqlMapClient) {
        super.getSqlMapClientTemplate().setSqlMapClient(baseSqlMapClient);
    }

    public void setBaseDataSource(DataSource baseDataSource) {
        super.getSqlMapClientTemplate().setDataSource(baseDataSource);
    }
}
然后把BaseDao交由spring管理:

<bean id="studyDao" class="com.study.dao.impl.StudyDaoImpl">
        <property name="baseDataSource" ref="mysqlDataSource"/>
        <property name="baseSqlMapClient" ref="mySqlSqlMapClient"/>
    </bean>


6、junit单元测试

单元测试类继续org.springframework.test.AbstractDependencyInjectionSpringContextTests,并实现它的getConfigLocations()方法来返回spring配置文件,这个做可以通过setter方法去注入spring管理的bean





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值