代码即王道。集成方式有三种,详见JUnit4.x测试类的注释。。
首先是用到的实体类User.java
package com.jadyer.model;
import java.util.Date;
public class User {
private Integer id;
private String name;
private Date birth;
/*--三个属性的setter和getter略--*/
public User(){}
public User(Integer id, String name, Date birth){
this.id = id;
this.name = name;
this.birth = birth;
}
}
相应的实体类映射文件User.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="User">
<typeAlias alias="user" type="com.jadyer.model.User"/>
<insert id="insertUser" parameterClass="user">
insert into T_USER(id, name, birth) values(#id#, #name#, #birth#)
</insert>
</sqlMap>
下面是位于CLASSPATH中的ibatis2.x的全局配置文件SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<!-- 使用spring之后,数据源的配置移植到了spring上,所以iBATIS本身的配置可以取消 -->
<sqlMap resource="com/jadyer/model/User.xml" />
</sqlMapConfig>
下面是位于CLASSPATH中的Spring2.5的全局配置文件applicationContext.xml
<?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: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">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:jadyer"/>
<property name="username" value="scott"/>
<property name="password" value="jadyer"/>
</bean>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:SqlMapConfig.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="userDao" class="com.jadyer.dao.ibatis.UserDaoIbatis">
<property name="sqlMapClient" ref="sqlMapClient" />
</bean>
<!-- 声明一个事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 声明一个已被纳入事务管理的DAO接口实现类的代理类 -->
<bean id="userDaoProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager" />
<property name="target" ref="userDao" />
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
</beans>
用到的操纵数据库表的接口UserDao.java
package com.jadyer.dao;
import java.util.List;
import com.jadyer.model.User;
public interface UserDao {
public void insertUser(User user);
/**
* 批量更新
*/
public void batchInsertUser(final List<User> userList, final String statement);
}
然后是该接口的实现类UserDaoIbatis.java
package com.jadyer.dao.ibatis;
import java.sql.SQLException;
import java.util.List;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.ibatis.SqlMapClientCallback;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import com.ibatis.sqlmap.client.SqlMapExecutor;
import com.jadyer.dao.UserDao;
import com.jadyer.model.User;
/**
* SqlMapClientDaoSupport是Spring面向ibatis2.x的辅助类,它负责调度DataSource
* SqlMapClientTemplate对传统SqlMapClient调用模式进行了封装,简化了上层访问代码
* SqlMapClientTemplate能够完成ibatis操作,而DAO则通过对此类进行扩展获得上述功能
*/
public class UserDaoIbatis extends SqlMapClientDaoSupport implements UserDao {
public void insertUser(User user) {
getSqlMapClientTemplate().insert("insertUser", user);
}
public void batchInsertUser(final List<User> userList, final String statement) throws DataAccessException {
getSqlMapClientTemplate().execute(new SqlMapClientCallback() {
public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLException {
executor.startBatch();
int batch = 0;
for(User user : userList){
executor.update(statement, user);
batch++;
if(200 == batch){ //每200条批量提交一次
executor.executeBatch();
batch = 0;
}
}
executor.executeBatch();
return null;
}
});
}
}
接着是使用了JUnit4.x的单元测试类IbatisSpringTest.java
package com.jadyer.test;
import java.io.FileNotFoundException;
import java.sql.Date;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.jadyer.dao.UserDao;
import com.jadyer.model.User;
/**
* Ibatis2.x与Spring的三种集成方式
* @see ----------------------------------------------------------------------------------------------------------
* @see 第一种:将sqlMapClient注入给继承了SqlMapClientDaoSupport类的DAO接口实现类
* @see 示例代码,请见本例。并且此时不需要在DAO接口实现类中添加setSqlMapClient()方法
* @see 优点是可以直接使用Spring封装后的getSqlMapClientTemplate,缺点是不便于移植
* @see ----------------------------------------------------------------------------------------------------------
* @see 第二种:将sqlMapClient注入给未继承任何类的DAO接口实现类
* @see 此时需要在DAO接口实现类中增加setSqlMapClient(SqlMapClient sqlMapClient)方法
* @see 然后我们就可以基于原生的iBATIS API来编程,而无需对Spring产生任何依赖
* @see ----------------------------------------------------------------------------------------------------------
* @see 第三种:将sqlMapClientTemplate注入给DAO接口实现类
* @see 此时需要在DAO接口实现类中增加setSqlMapClientTemplate(SqlMapClientTemplate sqlMapClientTemplate)方法
* @see <bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
* @see <property name="sqlMapClient" ref="sqlMapClient" />
* @see </bean>
* @see <bean id="userDao" class="com.jadyer.dao.ibatis.UserDaoIbatis">
* @see <property name="sqlMapClientTemplate" ref="sqlMapClientTemplate" />
* @see </bean>
* @see ----------------------------------------------------------------------------------------------------------
*/
public class IbatisSpringTest {
@Test
public void insert() throws FileNotFoundException{
ApplicationContext factory = new ClassPathXmlApplicationContext("applicationContext.xml");
// UserDao userDao = (UserDao)factory.getBean("userDaoProxy"); //加入事务控制
UserDao userDao = (UserDao)factory.getBean("userDao"); //未加事务控制
User user = new User(22, "张起灵", Date.valueOf("2011-03-26"));
userDao.insertUser(user);
}
}
最后是用到的数据库脚本文件
-- Oracle 11g
-- Create table
create table t_user(
id number,
name varchar2(10),
birth date
);
分享到:
相关推荐
《Spring 2.5 MVC与iBatis 2整合详解》 在Web开发领域,Spring框架以其强大的功能和灵活性备受开发者喜爱。Spring 2.5版本是Spring发展史上的一个重要里程碑,它引入了许多新特性,使得开发更加高效。同时,iBatis...
*架构struts2_spring2.5_ibatis2.3 *mysql5.0 *jdk 1.6 *带有所有jar包,可直接运行 本实例实现了用户登陆,用户信息CRUD相关操作。让你感受到了ibatis做o/r mapping的方便快捷。 下次集成dwr进来 create ...
本项目"Structs2.0+Spring2.5+Ibatis整合例子"就是这样一个示例,展示了如何将Struts2、Spring和iBatis这三个流行的技术栈整合在一起,以实现MVC(模型-视图-控制器)架构。以下将详细阐述这三个框架的核心功能以及...
通过 MyBatis-Spring 桥接器,iBatis 可以无缝集成到 Spring 框架中,支持事务管理和服务定位。 Spring 2.5 版本引入了更丰富的注解支持,简化了配置文件,降低了依赖注入(DI)的复杂性。比如,@Autowired 注解...
3. **工具支持**:Spring 2.5集成了IDE工具,如Eclipse和IntelliJ IDEA,提供了更友好的开发环境。 4. **性能优化**:Spring 2.5对框架性能进行了优化,提高了初始化速度和运行效率。 综上所述,"spring 2.5依赖包...
6. **JSR-250注解支持**:Spring 2.5集成了JSR-250规范,如`@PostConstruct`和`@PreDestroy`,使得初始化和销毁方法的声明变得更加简单。 7. **MVC框架增强**:Spring MVC在2.5版本中也得到了改进,支持RESTful风格...
这个"struts2 + spring2.5 + ibatis2.3.4整合包文件"包含了这三个框架的集成,用于搭建一个完整的Java Web应用程序。以下是对这些框架及其整合的详细说明: 1. Struts2:Struts2是基于Apache Struts 1的升级版,它...
Struts2、Spring2.5和iBatis是经典的Java Web开发框架组合,它们共同构建了一个灵活、高效的企业级应用程序架构。在这个组合中,Struts2作为MVC(Model-View-Controller)框架负责处理用户请求,Spring2.5则提供依赖...
`spring2.5参考手册.pdf` 和 `spring2轻量级j2ee开发框架原理与实践.pdf` 提供了关于Spring核心组件、IoC容器、AOP、事务管理等全面的指导,有助于开发者充分利用Spring来构建松耦合、可维护的应用程序。 **iBATIS*...
在IT领域,构建高效、可扩展的企业级应用是至关重要的,而"Ext2.0+Struts2+Spring2.5+Ibatis2"的组合就是一种常见的技术栈,用于实现这样的目标。这个技术组合提供了从用户界面到数据访问的全方位解决方案。 **Ext...
Struts2、Spring2.5 和 iBatis2 是经典的Java Web开发框架组合,它们各自在应用程序的不同层面提供了强大的功能。下面将详细讲解这三大框架的集成配置以及log4j的相关知识。 首先,Struts2 是一个基于MVC(Model-...
在这个"Ibatis+Spring2.5+Structs2.0整合的一个小例子"中,我们将探讨如何将这三种技术集成到一个应用中,以实现数据的增、删、查功能。Ibatis、Spring和Structs是Java开发中常用的三个框架,它们各自在不同的层面上...
本示例代码涉及的是一个经典的技术栈:Ibatis2.3、Struts1.3和Spring2.5的整合。这三个框架各自都有其独特的功能和优点,组合在一起能够提供灵活的数据访问、高效的MVC架构以及全面的应用管理。 Ibatis,作为一款轻...
在Spring 2.5中,可以方便地集成iBATIS,实现持久层的灵活管理。iBATIS允许开发者编写SQL语句并将其与Java代码结合,提高了数据库操作的效率和灵活性。 总结起来,Spring 2.5的关键知识点包括: 1. 注解驱动的依赖...
SSI整合,即Struts2、Spring和iBatis的集成,为开发者提供了一个强大的、灵活的和可扩展的开发环境。下面我们将深入探讨这三个框架的核心功能、整合过程以及如何在实际项目中利用它们实现log4j日志记录和文件上传...
这个`Spring2.5中文手册`是一个非常有价值的参考资料,帮助开发者深入理解并有效地利用Spring框架。 1. **Spring概述** - Spring是一个开源的Java平台,它提供了全面的应用程序架构支持,简化了Java Enterprise ...
同时,需要配置Struts2与Spring的集成,例如通过`StrutsSpringObjectFactory`让Struts2能够使用Spring管理的Bean。 3. **配置iBatis**:配置`SqlMapConfig.xml`,包含数据库连接信息和SQL映射文件的路径。在Spring...
在"Struts2+ibatis-2.3+spring2.5整合实例"中,我们首先需要设置项目的环境,包括JDK、Maven或Gradle等构建工具,以及Tomcat服务器。然后,创建一个新的Maven或Gradle项目,并在`pom.xml`或`build.gradle`文件中添加...
综上所述,"spring2.5 ibatis2.3 struts2.1 dwr3 annotation集成配置"涉及到的不仅仅是单一技术的使用,更是Java Web开发中多框架协同工作的典范,展示了如何利用注解简化配置,提高开发效率,并为大型企业级应用...
在Struts2_spring2.5的集成中,Spring可以作为IoC容器,负责初始化和管理应用中的bean,包括Struts2的动作类(Action)。此外,Spring 2.5 还提供了事务管理、安全控制和数据访问支持。 iBatis 2.3.4 是一款持久层...