简单的实现了功能,先做一下备份,以免日后忘记。
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