`

iBATIS与spring 集成

阅读更多
Spring通过DAO模式,提供了对iBATIS的良好支持。SqlMapClient对象是iBATIS中的主要对象,我们可以通过配置让spring来管理SqlMapClient对象的创建

与hibernate类似,Spring 提供了SqlMapClientDaoSupport对象,我们的DAO可以继承这个类,通过它所提供的SqlMapClientTemplate对象来操纵数据库。看起来这些概念都与hibernate类似。
在继承SqlMapClientDaoSupport后,要注入SqlMapClient对象,这与hibernate要注入sessionFactory一样。
通过SqlMapClientTemplate来操纵数据库的CRUD是没有问题的,这里面关键的问题是事务处理。Spring提供了强大的声明式事务处理的功能,我们已经清楚hibernate中如何配置声明式的事务,那么在iBATIS中如何获得声明式事务的能力呢?

第一,我们需要了解的是spring通过AOP来拦截方法的调用,从而在这些方法上面添加声明式事务处理的能力。典型配置如下:
<!-- 配置事务特性 -->
	<tx:advice id="txAdvice" transaction-manager="事务管理器名称">
		<tx:attributes>
			<tx:method name="add*" propagation="REQUIRED"/>
			<tx:method name="del*" propagation="REQUIRED"/>
			<tx:method name="update*" propagation="REQUIRED"/>
			<tx:method name="*" read-only="true"/>
		</tx:attributes>
	</tx:advice>
	
	<!-- 配置哪些类的方法需要进行事务管理 -->
	<aop:config>
		<aop:pointcut id="allManagerMethod" expression="execution(* com.bjsxt.crm.manager.*.*(..))"/>
		<aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/>
	</aop:config>

这些事务都是声明在业务逻辑层的对象上的。

第二,我们需要一个事务管理器,对事务进行管理。
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    	<property name="dataSource" ref="dataSource"/>
    </bean>
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://127.0.0.1/crm"/>
        <property name="username" value="root"/>
        <property name="password" value="mysql"/>
    </bean>


此后,我们需要让spring来管理SqlMapClient对象:
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="configLocation"><value>classpath:sqlMapConfig.xml</value></property>
		<property name="dataSource" ref="dataSource"></property>
	</bean>


我们的DAO的编写:
package com.app.dao.impl.ibatis;

import java.util.List;

import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;

import com.app.dao.UserDAO;
import com.app.model.User;

public class UserDAOImpl extends SqlMapClientDaoSupport implements UserDAO {

	public void delete(User user) {
		getSqlMapClientTemplate().delete("delete",user.getId());
	}

	public List findAll() {
		return getSqlMapClientTemplate().queryForList("findAll");
	}

	public User findById(int id) {
		return (User)getSqlMapClientTemplate().queryForObject("findById", id);
	}

	public void save(User user) {
		getSqlMapClientTemplate().insert("save",user);
	}

	public void update(User user) {
		getSqlMapClientTemplate().update("update",user);
	}

}


继承SqlMapClientDaoSupport,要求我们注入SqlMapClient对象,因此,需要有如下的DAO配置:
<bean id="userDAO" class="com.bjsxt.crm.dao.impl.ibatis.UserDAOImpl">
     <property name=”sqlMapClient” ref=”sqlMapClient”/>
</bean>

这就是所有需要注意的问题了,此后就可以在业务逻辑层调用DAO对象了!



分享到:
评论

相关推荐

    iBATIS-SqlMaps-2_cn.rar_ibatis/spring

    《iBATIS-SqlMaps-2_cn.rar》是一款关于iBATIS框架的中文教程资源,主要针对想要深入了解和使用iBATIS与Spring集成的初学者。这个压缩包包含了一个PDF文档,即《iBATIS-SqlMaps-2_cn.pdf》,它是iBATIS SQL Maps 2的...

    iBATIS与Spring的集成

    配置iBATIS-Spring集成时,我们需要在Spring的配置文件中声明`SqlSessionFactoryBean`,并指定数据源、MyBatis的配置文件等参数。 ```xml &lt;bean id="sqlSessionFactory" class="org.springframework.jdbc....

    ibatis与spring整合

    通过编写单元测试或集成测试来验证ibatis与Spring的整合是否成功。 #### 五、总结 通过以上步骤,我们可以将ibatis与Spring框架很好地整合在一起,利用Spring的强大功能来简化ibatis的配置和管理。这种整合方式...

    Spring与iBATIS的集成

    Spring与iBATIS的集成 iBATIS似乎已远离众说纷纭的OR框架之列,通常人们对非常流行的Hibernate情有独钟。但正如Spring A Developer's Notebook作者Bruce Tate 和Justin Gehtland所说的那样,与其他的OR框架相比...

    ibatis与spring的整合

    Spring通过DAO模式提供了对iBATIS的集成,使得SqlMapClient对象能够被Spring管理。SqlMapClient是iBATIS的核心,负责执行SQL映射文件中的SQL语句。在Spring中,我们可以配置Spring容器来创建并管理SqlMapClient实例...

    Spring高版本对ibatis的支持

    最近想在最新的Spring5.0中集成ibatis(不是mybatis),发现已经不在支持SqlmapClientTemplate和SqlmapClientFactoryBean,于是搞了这个工具jar来进行支持如下配置 &lt;bean id="sqlMapClient" class="org.spring...

    struts2+ibatis+spring整合开发

    5. **iBatis与Spring集成**:配置Spring的SqlSessionFactoryBean,将SqlSessionTemplate或SqlSessionDaoSupport注入到需要使用iBatis的类中。 6. **测试与调试**:编写JUnit测试用例,确保各个组件的正常工作,逐步...

    ibatis 与spring3整合

    7. **测试与调试**:整合完成后,可以通过单元测试或集成测试验证Ibatis 和 Spring 是否能正常交互,确保SQL执行、事务处理和对象映射等功能都按预期工作。 通过这样的整合,我们可以充分利用Ibatis的灵活性和...

    struts2+ibatis+spring集成

    在"struts2+ibatis+spring集成"的例子中,这三者通常是这样协同工作的: 1. **Spring** 配置:首先,需要配置Spring的ApplicationContext,声明Struts2和iBatis的相关bean,如Action类、DAO接口及其实现、...

    ibatis2.rar

    "iBATIS学习总结 - 郭睿的专栏 - CSDN.NET_files"和"iBATIS与Spring集成及环境搭建 - 振华 - ITeye技术网站_files"可能是相关文章的图片或辅助资源。 通过这些资料,开发者可以系统地学习和掌握iBATIS 2.x版本的...

    spring与ibatis整合集成实例

    以上就是 Spring 与 iBATIS 整合集成的主要步骤和知识点。通过这样的集成,可以利用 Spring 的强大功能管理和协调整个应用程序,同时利用 iBATIS 的灵活性处理数据库操作,实现高效的企业级应用开发。在实际项目中,...

    struts2+ibatis+spring 安例

    5. **整合iBatis与Spring**:通过Spring的SqlSessionFactoryBean,配置数据源和MyBatis的配置文件,将DAO接口与Mapper XML关联起来。 6. **部署与测试**:将所有配置文件、类库和应用代码打包成WAR文件,部署到应用...

    Struts1+Spring+iBatis-jar包

    5. 将iBatis与Spring集成:使用MyBatis-Spring的MapperScannerConfigurer扫描Mapper接口,Spring会自动创建对应的MapperFactoryBean。 通过这个"Struts1+Spring+iBatis-jar包",开发者可以避免手动下载和管理各个...

    Struts2+iBATIS+Spring整合

    4. 集成iBATIS:在Spring配置文件中配置SqlSessionFactory,指定MyBatis的配置文件和数据源。在Mapper接口中定义数据库操作方法,并在XML文件中编写对应的SQL语句。 5. 测试与运行:完成上述配置后,可以创建测试...

    ibatis_spring源代码

    4. **事务管理**:`Spring`的事务管理器可以与`iBatis`无缝集成。通过配置`PlatformTransactionManager`,我们可以实现全局的事务控制,确保数据的一致性。在业务层方法上添加`@Transactional`注解,即可开启事务,...

    spring+ibatis集成文档

    ### Spring与iBatis集成开发详解 #### 一、引言 在Java企业级应用开发领域,Spring框架因其强大的依赖注入(DI)和面向切面编程(AOP)能力而备受青睐;而iBatis(现称为MyBatis)则以其简洁的SQL映射功能而闻名。...

Global site tag (gtag.js) - Google Analytics