ibatis+spring+dbcp 操作数据源

来源:互联网 发布:如何推广一个软件 编辑:程序博客网 时间:2024/06/15 19:15

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

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/beanshttp://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.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aophttp://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
原创粉丝点击