`
liran_java
  • 浏览: 68317 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

ibatis与spring整合实例(附源码)

阅读更多

使用 SQL Map ,能够大大减少访问关系数据库的代码。 SQL Map 使用简单的 XML 配置文件将 Java Bean 映射成 SQL 语句,对比其他的数据库持续层和 ORM 框架(如 JDO 的实现, Hibernate 等), SQL Map 即有 ORM 的功能又具备 SQL 的灵活性和高效性。是一个非常优秀的 JDBC 的替代品。

SQL MAP 最大的优点在于它简单易学, 只要熟悉 Java Bean XML SQL ,就能使您充分发挥 SQL 语句的能力。同时 SQL MAP 得到了 SPRING DAO 支持,让我们的持久层工作更加简单,高效。下面介绍 IBATIS SPRING 结合的详细过程。

加入 SQL MAP 功能

数据库表 T_PERSON

CREATE TABLE `person` (
  `id` int(11) NOT NULL default '0',
  `name` varchar(255) default NULL,
  `info` varchar(255) default NULL,
  `info_blob` blob,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 

映射对象 PERSON

怎样将数据库表映射为对象呢? SQL Map O/R 之间的关系没有限制,一个数据库表可以映射成多个对象,反过来也是成立的。下面建立一对一映射对象 PERSON

public class Person implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private long id ;
	private String name;
	private String info;
	private byte[] info_blob ;
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getInfo() {
		return info;
	}
	public void setInfo(String info) {
		this.info = info;
	}
	public byte[] getInfo_blob() {
		return info_blob;
	}
	public void setInfo_blob(byte[] info_blob) {
		this.info_blob = info_blob;
	}
 

配置 SQL_MAP 配置文件

怎样把数据库对象与 JAVA 对象联系起来,当然是通过配置文件了:

SQL_MAP 映射文件 SQLMAP_PERSON

<sqlMap namespace="Person">
	
	<typeAlias alias="Person" type="org.lr.ibatis.bean.Person" />
	<cacheModel id="person-cache" type="OSCACHE">
		<flushInterval hours="24" />
		<flushOnExecute statement="queryAll" />
		<property name="size" value="1000" />
	</cacheModel>
	<select id="queryAll" resultClass="Person" cacheModel="person-cache">
		select * from person
	</select>

	<select id="queryById" parameterClass="java.lang.String"
		resultClass="Person">
		select * from person where id=#id#
	</select>
	
	<update id="updateBlob" parameterClass="org.lr.ibatis.bean.Person">
		update person set info_blob = #info_blob#
	</update>

</sqlMap>

 

SQL_MAP 配置文件 IBATIS-MAP-CONFIG

<sqlMapConfig>
	<settings maxRequests="256" maxSessions="64" maxTransactions="16"
		enhancementEnabled="true" />
	<sqlMap resource="org/lr/ibatis/bean/sqlmap_person.xml"></sqlMap>
</sqlMapConfig>
 

PERSON类操作类

SRPING为ibatis dao提供了一个的工具类SqlMapClientDaoSupport,它提供了setSqlMapClient(SqlMapClient)方法和getSqlMapClientTemplate()做为ibatis的支持,我们的dao类之需要继承这个类就可以了

public class PersonDaoImp extends SqlMapClientDaoSupport implements PersonDao {

	@SuppressWarnings("unchecked")
	public List<Person> getAllPerson() {
		// TODO Auto-generated method stub
		return getSqlMapClientTemplate().queryForList("queryAll");
	}

	public Person getPersonById(String id ) {
		// TODO Auto-generated method stub
		return (Person)getSqlMapClientTemplate().queryForObject("queryById",id);
	}

	public void updateBlob(Person person) {
		// TODO Auto-generated method stub
		getSqlMapClientTemplate().update("updateBlob",person);
	}

}

 personService

ublic class PersonServiceImp implements PersonService {
	
	private PersonDao personDao;
	
	public void setPersonDao(PersonDao personDao) {
		this.personDao = personDao;
	}

	public List<Person> getAllPerson() {
		// TODO Auto-generated method stub
		return personDao.getAllPerson();
	}

	public Person getPersonById(String id) {
		// TODO Auto-generated method stub
		return personDao.getPersonById(id);
	}

	public void updateBlob(Person person) {
		// TODO Auto-generated method stub
		personDao.updateBlob(person);
	}

  SRPING 集成

配置spring 管理

 

	<!-- sql map client 配置 -->
	<bean id="sqlMapClient"
		class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
		<property name="configLocation"
			value="ibatis-sql-map-config.xml" />
		<property name="dataSource" ref="dataSource" />
	</bean>
	<!-- ************************************************************************-->
	<!-- //////////////////////ibatis事务代理配置///////////////////////////////-->
	<!-- ************************************************************************-->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	<bean id="txProxyTemplate" abstract="true"
		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager">
			<ref bean="transactionManager" />
		</property>
		<property name="transactionAttributes">
			<props>
				<prop key="create*">PROPAGATION_REQUIRED</prop>
				<prop key="save*">PROPAGATION_REQUIRED</prop>
				<prop key="update*">PROPAGATION_REQUIRED</prop>
				<prop key="delete*">PROPAGATION_REQUIRED</prop>
				<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
			</props>
		</property>
	</bean>

	<!-- ************************************************************************-->
	<!-- //////////////////////dao配置///////////////////////////////////////////-->
	<!-- ************************************************************************-->

	<bean id="personDao"
		class="org.lr.ibatis.dao.imp.PersonDaoImp">
		<property name="sqlMapClient">
			<ref bean="sqlMapClient" />
		</property>
	</bean>
	<!-- ************************************************************************-->
	<!-- ////////////////////////////////SERVICE代理配置//////////////////////////-->
	<!-- ************************************************************************-->
	<bean id="personServiceTarget"
		class="org.lr.ibatis.service.imp.PersonServiceImp">
		<property name="personDao" ref="personDao"></property>
	</bean>
	<!-- ************************************************************************-->
	<!-- ///////////////////////////SERVICE配置///////////////////////////////////-->
	<!-- ************************************************************************-->
	<bean id="personService" parent="txProxyTemplate">
		<property name="target" ref="personServiceTarget"></property>
	</bean>

    测试

 

	public void testPersonService() {

		long start = System.currentTimeMillis();
		PersonService personService = (PersonService) context
				.getBean("personService");
		List<Person> list = new LinkedList<Person>();
		list = personService.getAllPerson();
		long end = System.currentTimeMillis();
		System.out.println("执行时间------" + (end - start));
		for (Person p : list) {
			System.out.println(p.getId());
			System.out.println(p.getName());
			System.out.println(p.getInfo());
			System.out.println(new String(p.getInfo_blob()));

		}
	}

	public void testPersonUpdate() throws Exception{
		FileInputStream fis = new FileInputStream(new File("D:/savePath/pro.txt"));
		byte[] temp = new byte[(int)fis.available()];
		fis.read(temp);
		PersonService personService = (PersonService) context.getBean("personService");
		Person person = new Person();
		person.setId(3);
		person.setName("zhangsan");
		person.setInfo("张三");
		person.setInfo_blob(temp);
		personService.updateBlob(person);
	}

 结束

 

分享到:
评论
1 楼 streamfly 2010-07-20  
感谢啊 ,兄弟!我一直在找这样的资料呢!!!

相关推荐

    struts spring ibatis mysql 整合 实例 数据库 源码

    这个整合实例提供了基于这些技术的源码,可以帮助开发者深入理解它们如何协同工作。 Struts是MVC(Model-View-Controller)设计模式的一种实现,主要用于处理用户请求并控制应用程序的流程。它通过Action类来处理...

    struts2 spring ibatis 项目整合源码

    在Spring和Struts2的整合项目中,iBatis作为数据访问层,负责与数据库交互,执行增删改查等操作。通过XML配置文件或注解,可以将SQL语句与Java对象映射起来,使得数据操作更加便捷。 在项目源码中,"ibatis"这个...

    ibatis_spring源代码

    6. **Spring的IoC容器**:`iBatis`的SqlSession和Mapper实例可以通过`Spring`的IoC容器管理,避免手动创建和关闭,减少资源泄漏的可能性。 7. **测试支持**:整合后的`iBatis`和`Spring`项目可以方便地进行单元测试...

    struts2+ibatis+spring 安例

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

    Spring整合iBatis

    本文将深入探讨Spring如何与iBatis进行整合,并提供详细的配置步骤和关键知识点。 1. **iBatis简介** iBatis是一个基于Java的持久层框架,它允许开发者将SQL语句与Java代码分离,提供XML或注解方式定义SQL映射,...

    struts2+ibatis-2.3+spring2.5整合实例

    在"Struts2+ibatis-2.3+spring2.5整合实例"中,我们首先需要设置项目的环境,包括JDK、Maven或Gradle等构建工具,以及Tomcat服务器。然后,创建一个新的Maven或Gradle项目,并在`pom.xml`或`build.gradle`文件中添加...

    maven+ibatis+spring mvc源码

    【标题】"maven+ibatis+spring mvc源码" 涉及到的是一个典型的Java Web开发架构,结合了Maven项目管理工具、MyBatis持久层框架以及Spring MVC作为控制器层的实现。这一组合是现代企业级应用开发中的常见选择,具有...

    Struts2+Ibatis+Spring框架

    Spring还提供了丰富的模块,如Spring MVC(Web开发)、Spring JDBC和Spring Data(数据访问),以及Spring Security(安全控制)等,能很好地与Struts2和iBatis集成。 在"SSI_Project"中,Spring可能用于管理整个...

    ibatis-spring

    每个zip可能包含Web应用的源码、配置文件、资源文件等,供开发者学习和参考如何在实际项目中实现Spring与iBATIS的整合。 总之,`ibatis-spring`的整合是一个常见的企业级开发实践,它使得数据库操作更加简洁,同时...

    Ibatis 入门经典 实例

    《Ibatis 入门经典 实例》 Ibatis 是一款著名的轻量级 Java 持久层框架,它提供了一种映射 SQL 和 Java 对象的简单方式,从而减轻了开发人员在数据库操作中的工作负担。这篇实例教程将带你深入理解 Ibatis 的核心...

    struts2+spring+ibatis 实例(含源码)

    在Spring和iBatis的整合中,我们可以利用Spring的DataSource和SqlSessionFactoryBean来配置数据源,然后通过MyBatis的Mapper接口与SQL交互。 jQuery是一个JavaScript库,它简化了HTML文档遍历、事件处理、动画制作...

    spring ibatis 的整合

    在IT行业中,Spring框架与MyBatis(原iBATIS)的整合是常见的数据库访问解决方案。这个主题主要涉及如何将轻量级的SQL映射框架iBATIS与强大的Spring框架结合,实现更高效、灵活的持久层管理。下面将详细阐述这一整合...

    springMVC+ibatis整合实例

    SpringMVC作为Spring框架的一部分,主要用于构建Web应用程序的Model-View-Controller(MVC)架构,而iBatis则是一个轻量级的持久层框架,它将SQL查询与Java代码解耦,提供了灵活的数据库操作方式。 SpringMVC的核心...

    webwork+spring+ibatis简单实例

    这个"webwork+spring+ibatis简单实例"提供了如何整合这三个框架来创建一个功能完整的应用程序的示例。以下是关于这三个框架及其整合方式的详细说明: **WebWork**: WebWork是一个轻量级的MVC(模型-视图-控制器)...

    struts2+ibatis+Spring 入门

    Spring还包含了数据访问、事务管理、邮件服务、任务调度等多个模块,能够与各种其他框架如Struts2、iBatis无缝集成。 将这三者结合起来,我们可以构建出一个高效且可维护的Java Web应用。首先,Struts2作为前端控制...

    spring+ibatis

    标题 "spring+ibatis" 暗示了我们要探讨的是如何在Java开发中结合Spring框架与iBATIS(现在称为MyBatis)进行数据访问。Spring是一个全面的企业级应用框架,而MyBatis是一个轻量级的持久层框架,它简化了数据库操作...

Global site tag (gtag.js) - Google Analytics