ibatis 开发中的经验 (三)ibatis与spring2集成配置

ibatis项目中用到了一些基本配置,需要和spring集成,看了看这些配置大部分同hibernate中是一样的,也比较好理解,只是需要他们的配置中每个类的含义,还有其中的一些细节还是需要我们了解的,知识不在多,而在不断吸收和重复,在使用和练习中加深对各种问题的理解。

读取属性文件配置

	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath:zydc.properties</value><!-- /web -->
			</list>
		</property>
	</bean>

这个类是一个spring工具类,是为了在配置文件中加载其他的属性文件,可以加载一个文件也可以加载多个,如果是同时加载多个文件在<list>标签里面多谢几个<value>值即可,这个文件要写在配置文件开始,其他的bean配置中可以通过${key}这种形式引用属性文件中的值。

基本数据源配置

	<!-- Apache Database Connection Pool  -->
	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName">
			<value>${db.driver}</value>
		</property>
		<property name="url">
			<value>${db.url}</value>
		</property>
		<property name="username">
			<value>${db.user}</value>
		</property>
		<property name="password">
			<value>${db.password}</value>
		</property>
	</bean>

上面配置了一个数据源,其中有一个数据库连接池,也相当于一个基本的单元,其他的配置如果有需要会引用这个配置。

<bean id="sqlMapClient"
		class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
		<property name="configLocation">
			<value>classpath:sql-map-config.xml</value>
		</property>
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="lobHandler" ref="lobHandler"/>
	</bean>

这个是ibatis特有的对象,横向比较一下,相当于hibernate中的sessionFactory对象,如果你对hibernate配置比较熟悉,那么理解这个配置也会觉得容易的多。

里面主要有三个属性这个类表示sqlMapClientfactory交给spring管理,达到session共享,还有一个configlocation属性,这是读取ibatis自己的配置文件,你是否还记得hibernate中也有一个hibernate.cfg.xml配置文件,这两个是类似的。

其次,需要给sqlmapclientfactory配置数据源,上面已经配置好,将他的id引用一下即可。最后一个属性也很重要,表示处理一些大的对象,lob即large object,大对象可以达到2GB。

<bean id="lobHandler"class="org.springframework.jdbc.support.lob.DefaultLobHandler"/>

通过从网上查阅资料,除了Oracle9i以及更高版本数据库,都是用这个类配置.

简单JDBC模板类

	<bean id="jdbcTemplate"
		class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource">
			<ref local="dataSource" />
		</property>
	</bean>

对比hibernate中gettemplate()方法具有异曲同工之妙,都是将操作封装了,比如保存操作,只需要jdbcTemplate.insert()一个方法就完成了,不需要一大堆别的代码。

事务管理配置

在ibatis中事务配置是这样的思路非常清晰,首先,是为每一个单一的事务,它仅仅对jdbc数据库连接起作用,也就是说它可以为每一个dao层的实现服务,而不能够为服务层开启事务,如下

	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource">
			<ref local="dataSource" />
		</property>

	</bean>

如果需要为服务层开发事务,需要配置事务代理类,如下

<bean id="baseTransactionProxy"
		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
		abstract="true">
		<property name="transactionManager">
			<ref bean="transactionManager" />
		</property>
		<property name="transactionAttributes">
			<props>
				<prop key="insert*">PROPAGATION_REQUIRED</prop>
				<prop key="update*">PROPAGATION_REQUIRED</prop>
				<prop key="delete*">PROPAGATION_REQUIRED</prop>
				<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
			</props>
		</property>
	</bean>

该事务代理类原理也简单,利用了拦截器机制,通过拦截请求方法调用,如果同他的事务属性中的key配置一样,它将按照自己的事务配置进行事务管理。这种方式同hibernate中是一样的。

到此,ibatis框架同spring集成配置就配置完了,里面也没多少内容,把这个配置文之后在配置一下sql语句文件,就可以正常开发了,以后,再用ibatis就只是写写sql语句,ibatis这个框架相对于hibernate简单了很多,学习容易,主要是对它的一些动态标签配置,使用几次后也会比较熟了。

ibatis 开发中的经验 (三)ibatis与spring2集成配置,布布扣,bubuko.com

时间: 2024-10-05 20:26:48

ibatis 开发中的经验 (三)ibatis与spring2集成配置的相关文章

ibatis 开发中的经验 (一)ibatis 和hibernate 在开发中的理解

这个项目的底层是用ibatis框架完毕,这几天也是都在用这个框架写代码,也有了一些简单的理解,把项目拿过来后基本的配置都已经配置好了,比方一些事务.日志控制等,在开发中主要用到的是写SQL语句以及熟悉ibatis xml文件都提供的一些标签,这些标签大部分是用来处理推断.逻辑,使得sql能够动态组装变的更灵活. 在写代码的工作量上ibatis要比hibernate高一些,在你写了服务层后还须要些dao层,dao层实现,然后这些在hibernate中不须要自己写,仅仅写到服务层就能够调用hiber

android开发中监听器的三种实现方法(OnClickListener)

Android开发中监听器的实现有三种方法,对于初学者来说,能够很好地理解这三种方法,将能更好地增进自己对android中监听器的理解. 一.什么是监听器. 监听器是一个存在于View类下的接口,一般以On******Llistener命名,实现该接口需要复写相应的on****(View v)方法(如onClick(View v)). 二.监听器的三种实现方法 (以OnClickListener为例) 方法一:在Activity中定义一个内部类继承监听器接口(这里是OnClickListener

android开发中碰到的三个小问题

Android开发中注意到的几个问题 1.  关于actionbar 初始化配置actionbar,getactionbar经常为null,原因是因为在源码或者布局文件中设置了全屏显示的缘故,不设置全屏显示就不会有问题. 2.  关于textview Textview默认是没有焦点的,因此不可能有点击事件,也无法直接实现背景的selector.通过设置android:clickable = true;就可以了,这一点与Button有很大的不同 3.  关于sourcinsight中的php代码.

本图片处理类功能非常之强大可以实现几乎所有WEB开发中对图像的处理功能都集成了,包括有缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等功能

import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Toolkit; import java.awt.color.ColorSpace; import java.awt.geom.AffineTransform;

WEB开发中一些常见的攻击方式及简单的防御方法

WEB开发中一些常见的攻击方式及简单的防御方法 20151127 转载http://www.lvtao.net/dev/582.html SQL注入最常见的攻击方式,所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击. 跨站脚本攻击(XSS)跨站脚本攻击(也称为XSS)指利用网站漏洞从用户那里恶意盗取

ibatis 和hibernate 在开发中的理解

这个项目的底层是用ibatis框架完成,这几天也是都在用这个框架写代码,也有了一些简单的理解,把项目拿过来后主要的配置都已经配置好了,比如一些事务.日志控制等,在开发中主要用到的是写SQL语句以及熟悉ibatis xml文件都提供的一些标签,这些标签大部分是用来处理判断.逻辑,使得sql可以动态组装变的更灵活. 在写代码的工作量上ibatis要比hibernate高一些,在你写了服务层后还需要些dao层,dao层实现,然后这些在hibernate中不需要自己写,只写到服务层就可以调用hibern

iBATIS开发指南笔记

第一部分  概述 (一)目标和初衷 1. iBATIS的目标是:用少量的代码获得大量的数据访问功能 2. 初衷是让程序员将如下过程做的更好更简单: Separating SQL code from programming code 将SQL代码从程序代码中分离 Passing input parameters to the library classes and extracting the output 对类库传递输入参数来提取输出结果 Separating data access class

ibatis开发环境搭建

IBatis是一款使用方便的数据访问工具,也可作为数据持久层的框架.和ORM框架(如Hibernate)将数据库表直接映射为Java对象相比,iBatis是将SQL语句映射为Java对象.相对于全自动SQL的Hibernate,iBatis允许你对SQL有完全控制权,可以视为半自动的数据访问工具. iBatis的最大优点是简便,轻量级,仅需iBatis的一个jar和数据库的驱动即可运行,而且使用iBatis仅需掌握SQL和XML的用法即可,而不像Hibernate那样需要配置对象间的关系.学习i

ibatis开发实例

ibatis Mybatis 官网:http://blog.mybatis.org/ ibatis的自动生成插件:ibator 搭建iBatis 开发环境: 1 .导入相关的jar 包,ibatis-2.3.0.677.jar .mysql-connector-java-5.1.6-bin.jar 2 .编写配置文件:Jdbc 连接的属性文件 ;总配置文件, SqlMapConfig.xml  关于每个实体的映射文件(Map 文件) Demo : model层 package com.ccsso