- 浏览: 115680 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
masuweng:
暂作标记,以后或许用的着.
filter实现登录验证,并且过滤servlet -
jfllxjj:
请问,如果导入的是excel2003格式的表,导入不成功会报错 ...
用poi3.6 读取excel -
wdhxinxin:
...
Java 操作 Excel (读取Excel2003 2007,Poi实现)
因为ibatis3现在还是测试版,spring也没有出相应的整合。所以,我根据spring整合hibernate的原理,也出来show一下,高手就不要笑我了。开工
主要是的文件有:
Ibatis3SessionFactory.java 这个是由spring读取ibatis配置文件,并产生sessionFactory工厂的
Ibatis3DaoSupport.java 我们的dao主要继承它了,因为它有一个模板类,定义了许多方法.
IBatis3DaoTemplate.java 不是上面的说的模板类
SqlSessionCallback.java 回调方法。
一 . 我们先来看一下Ibatis3SessionFactory.java
Java代码
package com.ibatis3;
import java.io.IOException;
import java.io.Reader;
import javax.sql.DataSource;
import org.apache.ibatis.builder.xml.XMLConfigBuilder;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.defaults.DefaultSqlSessionFactory;
import org.apache.ibatis.transaction.managed.ManagedTransactionFactory;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;
/*
* session工厂类
*/
public class Ibatis3SessionFactory implements FactoryBean, InitializingBean {
private String configLocation;
private DataSource dataSource;
private SqlSessionFactory sqlSessionFactory;
private boolean useTransactionAwareDataSource = true;
private String environmentId = "development";
public void setEnvironmentId(String environmentId) {
this.environmentId = environmentId;
}
public void setUseTransactionAwareDataSource(
boolean useTransactionAwareDataSource) {
this.useTransactionAwareDataSource = useTransactionAwareDataSource;
}
public Object getObject() throws Exception {
return this.sqlSessionFactory;
}
public Class getObjectType() {
return (this.sqlSessionFactory != null ? this.sqlSessionFactory
.getClass() : SqlSessionFactory.class);
}
public boolean isSingleton() {
return true;
}
public void afterPropertiesSet() throws Exception {
this.sqlSessionFactory = this.buildSqlSessionFactory(configLocation);
}
protected SqlSessionFactory buildSqlSessionFactory(String configLocation)
throws IOException {
if (configLocation == null) {
throw new IllegalArgumentException(
"configLocation entry is required");
}
DataSource dataSourceToUse = this.dataSource;
if (this.useTransactionAwareDataSource
&& !(this.dataSource instanceof TransactionAwareDataSourceProxy)) {
dataSourceToUse = new TransactionAwareDataSourceProxy(
this.dataSource);
}
Environment environment = new Environment(environmentId,
new ManagedTransactionFactory(), dataSourceToUse);
Reader reader = Resources.getResourceAsReader(configLocation);
XMLConfigBuilder parser = new XMLConfigBuilder(reader, null, null);
Configuration config = parser.parse();
config.setEnvironment(environment);
return new DefaultSqlSessionFactory(config);
}
public DataSource getDataSource() {
return dataSource;
}
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public void setConfigLocation(String configLocation) {
this.configLocation = configLocation;
}
}
package com.ibatis3;
import java.io.IOException;
import java.io.Reader;
import javax.sql.DataSource;
import org.apache.ibatis.builder.xml.XMLConfigBuilder;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.defaults.DefaultSqlSessionFactory;
import org.apache.ibatis.transaction.managed.ManagedTransactionFactory;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;
/*
* session工厂类
*/
public class Ibatis3SessionFactory implements FactoryBean, InitializingBean {
private String configLocation;
private DataSource dataSource;
private SqlSessionFactory sqlSessionFactory;
private boolean useTransactionAwareDataSource = true;
private String environmentId = "development";
public void setEnvironmentId(String environmentId) {
this.environmentId = environmentId;
}
public void setUseTransactionAwareDataSource(
boolean useTransactionAwareDataSource) {
this.useTransactionAwareDataSource = useTransactionAwareDataSource;
}
public Object getObject() throws Exception {
return this.sqlSessionFactory;
}
public Class getObjectType() {
return (this.sqlSessionFactory != null ? this.sqlSessionFactory
.getClass() : SqlSessionFactory.class);
}
public boolean isSingleton() {
return true;
}
public void afterPropertiesSet() throws Exception {
this.sqlSessionFactory = this.buildSqlSessionFactory(configLocation);
}
protected SqlSessionFactory buildSqlSessionFactory(String configLocation)
throws IOException {
if (configLocation == null) {
throw new IllegalArgumentException(
"configLocation entry is required");
}
DataSource dataSourceToUse = this.dataSource;
if (this.useTransactionAwareDataSource
&& !(this.dataSource instanceof TransactionAwareDataSourceProxy)) {
dataSourceToUse = new TransactionAwareDataSourceProxy(
this.dataSource);
}
Environment environment = new Environment(environmentId,
new ManagedTransactionFactory(), dataSourceToUse);
Reader reader = Resources.getResourceAsReader(configLocation);
XMLConfigBuilder parser = new XMLConfigBuilder(reader, null, null);
Configuration config = parser.parse();
config.setEnvironment(environment);
return new DefaultSqlSessionFactory(config);
}
public DataSource getDataSource() {
return dataSource;
}
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public void setConfigLocation(String configLocation) {
this.configLocation = configLocation;
}
}
上面代码也借鉴了网络上部分代码,因为转来转去,也不知谁是原创。
二. 下面是最简单的回调函数:
Java代码
package com.ibatis3;
import org.apache.ibatis.session.SqlSession;
public interface SqlSessionCallback {
public Object doInSqlSession(SqlSession session);
}
package com.ibatis3;
import org.apache.ibatis.session.SqlSession;
public interface SqlSessionCallback {
public Object doInSqlSession(SqlSession session);
}
三.模板类
Java代码
package com.ibatis3;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import javax.sql.DataSource;
import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.RowBounds;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.taglibs.standard.tag.common.sql.DataSourceUtil;
import org.springframework.jdbc.datasource.DataSourceUtils;
import org.springframework.jdbc.support.JdbcAccessor;
import org.springframework.transaction.support.TransactionSynchronizationManager;
public class IBatis3DaoTemplate extends JdbcAccessor {
private SqlSessionFactory sessionFactory;
public IBatis3DaoTemplate(SqlSessionFactory factory) {
this.sessionFactory = factory;
}
public SqlSession openSession() {
SqlSession session = (SqlSession) TransactionSynchronizationManager
.getResource(sessionFactory);
if (session == null) {
session = sessionFactory.openSession();
}
return session;
}
public void setSessionFactory(SqlSessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public List executeFind(SqlSessionCallback callback) {
return (List) execute(callback);
}
public Object execute(SqlSessionCallback callback) {
SqlSession session = openSession();
Object obj = callback.doInSqlSession(session);
if (session != null)
session.close();
return obj;
}
// 删除,根据语句
public int delete(final String statement) {
return delete(statement, null);
}
// 删除,根据语句,带条件
public int delete(final String statement, final Object param) {
return (Integer) execute(new SqlSessionCallback() {
public Object doInSqlSession(SqlSession session) {
if (param != null)
return session.delete(statement, param);
else
return session.delete(statement);
}
});
}
// 修改带条件
public int update(final String statement, final Object param) {
return (Integer) execute(new SqlSessionCallback() {
public Object doInSqlSession(SqlSession session) {
if (param != null)
return session.update(statement, param);
else
return session.update(statement);
}
});
}
// 修改不带条件
public int update(final String statement) {
return update(statement, null);
}
// 增加带条件
public int insert(final String statement, final Object param) {
return (Integer) execute(new SqlSessionCallback() {
public Object doInSqlSession(SqlSession session) {
if (param != null)
return session.insert(statement, param);
else
return session.insert(statement);
}
});
}
// 增加不带条件
public int insert(final String statement) {
return insert(statement, null);
}
// 查询分页
public List selectList(final String statement, final Object param,
final RowBounds bounds) {
return executeFind(new SqlSessionCallback() {
public Object doInSqlSession(SqlSession session) {
if (statement == null)
throw new IllegalArgumentException(
"Sql 'statement' require");
if (bounds != null && param != null)
return session.selectList(statement, param, bounds);
else if (bounds!=null)
return session.selectList(statement, null, bounds);
else if (param != null) {
return session.selectList(statement, param);
}
else
return session.selectList(statement);
}
});
}
// 条件分页
public List selectList(final String statement, final Object param,
int skip, int limit) {
return selectList(statement, param, new RowBounds(skip, limit));
}
// 查询不分页
public List selectList(final String statement, final Object param) {
return selectList(statement, param, null);
}
// 查询不带条件
public List selectList(final String statement) {
return selectList(statement, null);
}
// 条件查带处理查询结果,带分页
public void select(final String statement, final Object param,
final RowBounds bounds, final ResultHandler handler) {
if (statement == null || handler == null)
throw new IllegalArgumentException(
"'statement' and 'handler' require");
execute(new SqlSessionCallback() {
public Object doInSqlSession(SqlSession session) {
if (handler != null && bounds != null && param != null)
session.select(statement, param, bounds, handler);
else if (bounds == null)
session.select(statement, param, handler);
return null;
}
});
}
// 自己处理查询结果 ,不带分页
public void select(final String statement, final Object param,
final ResultHandler handler) {
select(statement, param, null, handler);
}
// 查唯一结果
public Object selectOne(final String statement) {
return selectOne(statement, null);
}
// 查唯一结果带条件
public Object selectOne(final String statement, final Object param) {
if (statement == null)
throw new IllegalArgumentException("Sql 'statement' require");
return execute(new SqlSessionCallback() {
public Object doInSqlSession(SqlSession session) {
if (param != null)
return session.selectOne(statement, param);
else
return session.selectOne(statement);
}
});
}
}
package com.ibatis3;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import javax.sql.DataSource;
import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.RowBounds;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.taglibs.standard.tag.common.sql.DataSourceUtil;
import org.springframework.jdbc.datasource.DataSourceUtils;
import org.springframework.jdbc.support.JdbcAccessor;
import org.springframework.transaction.support.TransactionSynchronizationManager;
public class IBatis3DaoTemplate extends JdbcAccessor {
private SqlSessionFactory sessionFactory;
public IBatis3DaoTemplate(SqlSessionFactory factory) {
this.sessionFactory = factory;
}
public SqlSession openSession() {
SqlSession session = (SqlSession) TransactionSynchronizationManager
.getResource(sessionFactory);
if (session == null) {
session = sessionFactory.openSession();
}
return session;
}
public void setSessionFactory(SqlSessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public List executeFind(SqlSessionCallback callback) {
return (List) execute(callback);
}
public Object execute(SqlSessionCallback callback) {
SqlSession session = openSession();
Object obj = callback.doInSqlSession(session);
if (session != null)
session.close();
return obj;
}
// 删除,根据语句
public int delete(final String statement) {
return delete(statement, null);
}
// 删除,根据语句,带条件
public int delete(final String statement, final Object param) {
return (Integer) execute(new SqlSessionCallback() {
public Object doInSqlSession(SqlSession session) {
if (param != null)
return session.delete(statement, param);
else
return session.delete(statement);
}
});
}
// 修改带条件
public int update(final String statement, final Object param) {
return (Integer) execute(new SqlSessionCallback() {
public Object doInSqlSession(SqlSession session) {
if (param != null)
return session.update(statement, param);
else
return session.update(statement);
}
});
}
// 修改不带条件
public int update(final String statement) {
return update(statement, null);
}
// 增加带条件
public int insert(final String statement, final Object param) {
return (Integer) execute(new SqlSessionCallback() {
public Object doInSqlSession(SqlSession session) {
if (param != null)
return session.insert(statement, param);
else
return session.insert(statement);
}
});
}
// 增加不带条件
public int insert(final String statement) {
return insert(statement, null);
}
// 查询分页
public List selectList(final String statement, final Object param,
final RowBounds bounds) {
return executeFind(new SqlSessionCallback() {
public Object doInSqlSession(SqlSession session) {
if (statement == null)
throw new IllegalArgumentException(
"Sql 'statement' require");
if (bounds != null && param != null)
return session.selectList(statement, param, bounds);
else if (bounds!=null)
return session.selectList(statement, null, bounds);
else if (param != null) {
return session.selectList(statement, param);
}
else
return session.selectList(statement);
}
});
}
// 条件分页
public List selectList(final String statement, final Object param,
int skip, int limit) {
return selectList(statement, param, new RowBounds(skip, limit));
}
// 查询不分页
public List selectList(final String statement, final Object param) {
return selectList(statement, param, null);
}
// 查询不带条件
public List selectList(final String statement) {
return selectList(statement, null);
}
// 条件查带处理查询结果,带分页
public void select(final String statement, final Object param,
final RowBounds bounds, final ResultHandler handler) {
if (statement == null || handler == null)
throw new IllegalArgumentException(
"'statement' and 'handler' require");
execute(new SqlSessionCallback() {
public Object doInSqlSession(SqlSession session) {
if (handler != null && bounds != null && param != null)
session.select(statement, param, bounds, handler);
else if (bounds == null)
session.select(statement, param, handler);
return null;
}
});
}
// 自己处理查询结果 ,不带分页
public void select(final String statement, final Object param,
final ResultHandler handler) {
select(statement, param, null, handler);
}
// 查唯一结果
public Object selectOne(final String statement) {
return selectOne(statement, null);
}
// 查唯一结果带条件
public Object selectOne(final String statement, final Object param) {
if (statement == null)
throw new IllegalArgumentException("Sql 'statement' require");
return execute(new SqlSessionCallback() {
public Object doInSqlSession(SqlSession session) {
if (param != null)
return session.selectOne(statement, param);
else
return session.selectOne(statement);
}
});
}
}
四.Ibatis3DaoSupport支持类
Java代码
package com.ibatis3;
import org.springframework.dao.support.DaoSupport;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSession;
import javax.sql.DataSource;
/*
* Dao类
* 主要接收传入的sessionFactory
* 取得模板
*/
public class Ibatis3DaoSupport extends DaoSupport {
private SqlSessionFactory sessionFactory;
private IBatis3DaoTemplate template;
public void createTemplate(){
this.template = new IBatis3DaoTemplate(sessionFactory);
}
public IBatis3DaoTemplate getTemplate() {
//System.out.println(template);
return template;
}
public void setTemplate(IBatis3DaoTemplate template) {
this.template = template;
}
//创建或得到session
public SqlSession openSession() {
SqlSession session = (SqlSession) TransactionSynchronizationManager
.getResource(sessionFactory);
if (session == null) {
session = sessionFactory.openSession();
}
return session;
}
public SqlSessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SqlSessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
this.template = new IBatis3DaoTemplate(sessionFactory);
}
@Override
protected void checkDaoConfig() throws IllegalArgumentException {
if (sessionFactory == null) {
throw new IllegalArgumentException(
"Property 'sessionFactory' or 'template' is required");
}
}
}
package com.ibatis3;
import org.springframework.dao.support.DaoSupport;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSession;
import javax.sql.DataSource;
/*
* Dao类
* 主要接收传入的sessionFactory
* 取得模板
*/
public class Ibatis3DaoSupport extends DaoSupport {
private SqlSessionFactory sessionFactory;
private IBatis3DaoTemplate template;
public void createTemplate(){
this.template = new IBatis3DaoTemplate(sessionFactory);
}
public IBatis3DaoTemplate getTemplate() {
//System.out.println(template);
return template;
}
public void setTemplate(IBatis3DaoTemplate template) {
this.template = template;
}
//创建或得到session
public SqlSession openSession() {
SqlSession session = (SqlSession) TransactionSynchronizationManager
.getResource(sessionFactory);
if (session == null) {
session = sessionFactory.openSession();
}
return session;
}
public SqlSessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SqlSessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
this.template = new IBatis3DaoTemplate(sessionFactory);
}
@Override
protected void checkDaoConfig() throws IllegalArgumentException {
if (sessionFactory == null) {
throw new IllegalArgumentException(
"Property 'sessionFactory' or 'template' is required");
}
}
}
五.ibatis配置文件,我放在src下面
Java代码
<?xml version="1.0" encoding="UTF-8"?>
;!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
;configuration>
<mappers>
<mapper resource="com/pojos/Dep.xml"/>
</mappers>
;/configuration>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>
<mappers>
<mapper resource="com/pojos/Dep.xml"/>
</mappers>
</configuration>
很简单,就是装载些映射文件,其实可以sessionFactory中完成。
六. pojo类和映射文件就不贴出了,请看附件
七. spring的配置文件,用了声明式事务.
Java代码
<?xml version="1.0" encoding="UTF-8"?>
lt;beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-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/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<!-- - - - - - - - Apache Dbcp Pool - - - - - - - -->
<bean id="datasource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver" />
<property name="username" value="scott" />
<property name="password" value="tiger" />
<property name="url"
value="jdbc:oracle:thin:@127.0.0.1:1521:ora92" />
</bean>
<!-- sqlMapClientSessionBean -->
<bean id="sessionFactory"
class="com.ibatis3.Ibatis3SessionFactory">
<property name="configLocation" value="sqlMapConfig.xml"></property>
<property name="dataSource" ref="datasource"></property>
</bean>
<!-- dao -->
<bean id="depDao" class="com.dao.DepDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- - - - - - - spring Transaction Manager - - - - - - - -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="datasource" />
</bean>
<!-- - - - - - - spring Transaction Attribute - - - - - - - -->
<tx:advice id="transactionAdvice"
transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<!--****** weave *********-->
<aop:config>
<aop:advisor advice-ref="transactionAdvice"
pointcut="execution(* com.test.*.*(..))" />
</aop:config>
lt;/beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-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/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<!-- - - - - - - - Apache Dbcp Pool - - - - - - - -->
<bean id="datasource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver" />
<property name="username" value="scott" />
<property name="password" value="tiger" />
<property name="url"
value="jdbc:oracle:thin:@127.0.0.1:1521:ora92" />
</bean>
<!-- sqlMapClientSessionBean -->
<bean id="sessionFactory"
class="com.ibatis3.Ibatis3SessionFactory">
<property name="configLocation" value="sqlMapConfig.xml"></property>
<property name="dataSource" ref="datasource"></property>
</bean>
<!-- dao -->
<bean id="depDao" class="com.dao.DepDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- - - - - - - spring Transaction Manager - - - - - - - -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="datasource" />
</bean>
<!-- - - - - - - spring Transaction Attribute - - - - - - - -->
<tx:advice id="transactionAdvice"
transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<!--****** weave *********-->
<aop:config>
<aop:advisor advice-ref="transactionAdvice"
pointcut="execution(* com.test.*.*(..))" />
</aop:config>
</beans>
完整代码请下载下面附件,因本人水平有限,请勿用在生产环境:)
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/qqzhuyuehe/archive/2010/03/26/5419989.aspx
相关推荐
iBatis和Spring整合 iBatis和Spring整合
struts2 + spring2.5 + ibatis2.3.4整合包文件,包括了SSI框架整合开发所需的全部文件
Spring对IBatis的整合 10.3 Spring对IBatis的支持 Spring对IBatis提供了完善的内建支持。使用Spring提供的IBatis辅助类,可以大大简化原有的IBatis访问代码。这些辅助类位于org.springframework.orm.ibatis包下,...
是将struts2+spring3+iBATIS进行整合。
ibatis与spring 框架整合
spring与ibatis整合集成实例 spring与ibatis整合集成实例
spring ibatis整合所需jar包
spring3.2与Ibatis整合,在servlet中获取bean
Ibatis Struts1.2 Spring 2.0 整合终极版,Ibatis Struts1.2 Spring 2.0 整合终极版,Ibatis Struts1.2 Spring 2.0 整合终极版
ibatis与spring的整合,文档doc格式,学习可用
struts1.3+spring2.5+ibatis2.3.4整合
struts2 spring ibatis 项目整合源码
spring_ibatis整合案例
Spring iBatis WebWork 整合
Ibatis和Spring整合例子,实现增删改查功能.
资源是spring3结合ibatis 的项目,内有项目详解文档。是新手学习绝世宝典哦。不可错过~
简单的 struts2 spring ibatis 整合架构
NULL 博文链接:https://wcp88888888.iteye.com/blog/1328481
里面有spring+struts2+ibatis整合的jar包,
ibatis+Spring+struts2整合实例