- 浏览: 10364 次
- 性别:
- 来自: 上海
文章分类
最新评论
郑重声明,该内容是复制自该网址http://www.blogjava.net/baizhihui19870626/articles/378330.html因为是对我自己很有用的,怕时间久了该网址不能访问,所以特此做了保存,以便日后学习
这两天一直在研究ibatis与spring的整合 一个小小的demo搞的我头晕目眩的,但程序一旦跑起来了,突然有一种豁然开朗,重见天日,感觉生活很美好的感觉!,也许,这就是那一行行的代码带给我们的不同享受吧。呵呵,废话就不多说了。
在此先引用几句别人的资料。。。
Spring通过DAO模式,提供了对iBATIS的良好支持。SqlMapClient对象是iBATIS中的主要对象,我们可以通过配置让spring来管理SqlMapClient对象的创建。
与hibernate类似,Spring提供了SqlMapClientDaoSupport对象,我们的DAO可以继承这个类,通过它所提供的SqlMapClientTemplate对象来操纵数据库。看起来这些概念都与hibernate类似。
通过SqlMapClientTemplate来操纵数据库的CRUD是没有问题的。此篇文章没有进行事务处理。
本文采用ibatis+spring+mysql 进行编写
数据库脚本如下
[sql] view plaincopy
create database ibatis;
create table person(
id int primary key,
name varchar(10),
sex int
);
一:要有一个PO类
Person.java
[java] view plaincopy
package po;
import java.io.Serializable;
public class Person implements Serializable{
/**
*
*/
private static final long serialVersionUID = -517413165963030507L;
/**
*
*/
private int id;
private String name;
private int sex;
public Person(){
}
public Person(int id,String name,int sex){
this.id = id;
this.name = name;
this.sex = sex;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
}
二:DAO接口类
IAction.java
[java] view plaincopy
package dao;
import java.util.List;
import po.Person;
public interface IAction {
public boolean insertPerson(Person person); //添加
public boolean deleteById(int id); //删除
public boolean updatePerson(Person person); //修改
public Person queryById(int id); //根据ID查询
public List<Person> queryAllPerson(); //查询全部
}
三:DAO实现类
ActionImpl.java 此类继承SqlMapClientSupport 实现IAction接口
[java] view plaincopy
package dao.impl;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.ibatis.sqlmap.client.SqlMapSession;
import po.Person;
import dao.IAction;
public class ActionImpl extends SqlMapClientDaoSupport implements IAction {
//添加操作
@Override
public boolean insertPerson(Person person) {
// TODO Auto-generated method stub
getSqlMapClientTemplate().insert("insertPerson",person);
return false;
}
//删除操作
@Override
public boolean deleteById(int id) {
// TODO Auto-generated method stub
getSqlMapClientTemplate().delete("deleteById", id);
return false;
}
//查询全部
@Override
public List<Person> queryAllPerson() {
// TODO Auto-generated method stub
List<Person> persons = getSqlMapClientTemplate().queryForList("queryAllPerson");
return persons;
}
@Override
public Person queryById(int id) {
// TODO Auto-generated method stub
[java] view plaincopy
//自己添加实现代码
return null;
}
@Override
public boolean updatePerson(Person person) {
// TODO Auto-generated method stub
[java] view plaincopy
//自己添加实现代码
return false;
}
四:既然是ibatis spring整合 那就必须要有ibatis的配置文件
SqlMapConfig.xml
[html] view plaincopy
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
[html] view plaincopy
<!--此处一定不能有<settings/> 标签-->
<!-- <settings cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
errorTracingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="false" /> -->
<sqlMap resource="po/Person.xml" />
</sqlMapConfig>
SqlMapClient.xml里本应该有数据源的配置的 使用spring之后数据源的配置移植到了spring上
五:Person.xml
里面配置了一下对数据的增删改查操作
[html] view plaincopy
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap>
<typeAlias alias="person" type="po.Person" />
<insert id="insertPerson" parameterClass="po.Person">
<![CDATA[
insert into person values (#id#,#name#,#sex#)
]]>
</insert>
<delete id="deleteById" parameterClass="int">
<![CDATA[
delete from person where id=#id#
]]>
</delete>
<update id="updatePerson" parameterClass="po.Person">
<![CDATA[
update person set name=#name#,sex=#sex# where id=#id#
]]>
</update>
<select id="queryById" parameterClass="int" resultClass="po.Person">
<![CDATA[
select * from person where id=#id#
]]>
</select>
<select id="queryAllPerson" cacheModel="personCache" resultClass="po.Person">
<![CDATA[
select * from person
]]>
</select>
</sqlMap>
六:下面最重要的也就是配置applicationContext.xml了
[html] view plaincopy
<?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:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/ibatis" />
<property name="username" value="root" />
<property name="password" value="1" />
</bean>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation"> <!-- name 为configLocation或s 不可为其他 -->
<value>SqlMapConfig.xml</value> <!-- 不区分大小写,路径前可加'/' -->
</property>
<!-- dataSource不是必需 -->
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
<bean id="personDAO" class="dao.impl.ActionImpl">
<!-- dataSource不是必需 -->
<property name="dataSource">
<ref local="dataSource" />
</property>
<!-- sqlMapClient必需 -->
<property name="sqlMapClient">
<ref local="sqlMapClient"/>
</property>
</bean>
<!-- transactionManager不是必需 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
</beans>
注释里面的必需或不是必需都是本人多次试验的,至于为什么是必需不必需 其中的原理我也不是能太讲清楚,在此先是这些写罢了。
里面的每一个节点,属性,如果不太理解,可以上网查一些其他资料。
七:编写测试类
此类利用junit进行测试。只测试了部分功能。
[html] view plaincopy
package dao.impl;
import java.util.Iterator;
import java.util.List;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import po.Person;
public class ActionImplTest {
private static ApplicationContext applicationContext = null; //提供静态ApplicationContext
static{
applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); //实例化
}
//添加操作
@Test
public void testInsertPerson(){
ActionImpl s = (ActionImpl)applicationContext.getBean("personDAO");
s.insertPerson(new Person(1,"zhangsan",2));
}
//删除操作
@Test
public void testDeletePerson(){
ActionImpl s = (ActionImpl)applicationContext.getBean("personDAO");
s.deleteById(1);
}
//查询全部
@Test
public void testQueryAllPerson(){
ActionImpl s = (ActionImpl)applicationContext.getBean("personDAO");
List<Person> persons = s.queryAllPerson();
//System.out.println(persons.size());
Iterator<Person> ite = persons.iterator();
while(ite.hasNext()){
Person person = ite.next();
System.out.print("ID: "+person.getId());
System.out.print(" Name: "+person.getName());
System.out.print(" Sex: "+person.getSex());
System.out.println();
}
}
}
八:如需记录日志 则要log4j.properties
[html] view plaincopy
#log4j.rootLogger=DEBUG, stdout
#log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=%c{1} - %m%n
#log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.rootLogger=DEBUG, stdout, fileout
#log4j.logger.test=info
#log4j.logger.org.apache.jasper = DEBUG
#log4j.logger.org.apache.catalina.startup.TldConfig = DEBUG
#log4j.logger.org.apache.catalina.session.ManagerBase = DEBUG
log4j.logger.com.fiscal = DEBUG
log4j.logger.com.system = DEBUG
log4j.logger.com.ibatis = DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource = DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner = DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = DEBUG
log4j.logger.java.sql.Connection = DEBUG
log4j.logger.java.sql.Statement = DEBUG
log4j.logger.java.sql.PreparedStatement = DEBUG, fileout
log4j.logger.java.sql.ResultSet = DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.fileout=org.apache.log4j.RollingFileAppender
log4j.appender.fileout.File=C\:\\ibatis.log
log4j.appender.fileout.MaxFileSize=10000KB
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH\:mm\:ss} \:%m%n
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.ConversionPattern=[%-5p]_%d{yyyy-MM-dd HH\:mm\:ss} \:%m%n
#log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
# log4j.logger.org=info
九:已经到最后了,我觉得这最后的才是最最重要的,就是一下jar包问题
我调试了很长时间 一大部分时间是jar问题
在此列出一下我认为能够跑起来这个小程序所需的一下jar包
如没有,可网上下载。
[sql] view plaincopy
ibaits-2.3.4.jar
spring.jar
mysql-connector-java-bin.jar
commons-dbcp-1.4.jar
commons-pool-1.5.6.jar
spring-orm-2.5.6.jar //已集成到spring.jar里
//记录日志所需
log4j-1.2.15.jar
commons-logging.jar
下面是本人的目录结构图
结束语:此文没有过多的讲些原理性的问题,比如为何这样写,又为何这样配置,只是给出了一个搭建框架的架子而已。
因为我也是一个菜鸟,至于如何,我想,等我们有经验了,会慢慢都懂得。
还希望大家共同努力,实现自己的梦想。
希望能与各位共勉!
小白
这两天一直在研究ibatis与spring的整合 一个小小的demo搞的我头晕目眩的,但程序一旦跑起来了,突然有一种豁然开朗,重见天日,感觉生活很美好的感觉!,也许,这就是那一行行的代码带给我们的不同享受吧。呵呵,废话就不多说了。
在此先引用几句别人的资料。。。
Spring通过DAO模式,提供了对iBATIS的良好支持。SqlMapClient对象是iBATIS中的主要对象,我们可以通过配置让spring来管理SqlMapClient对象的创建。
与hibernate类似,Spring提供了SqlMapClientDaoSupport对象,我们的DAO可以继承这个类,通过它所提供的SqlMapClientTemplate对象来操纵数据库。看起来这些概念都与hibernate类似。
通过SqlMapClientTemplate来操纵数据库的CRUD是没有问题的。此篇文章没有进行事务处理。
本文采用ibatis+spring+mysql 进行编写
数据库脚本如下
[sql] view plaincopy
create database ibatis;
create table person(
id int primary key,
name varchar(10),
sex int
);
一:要有一个PO类
Person.java
[java] view plaincopy
package po;
import java.io.Serializable;
public class Person implements Serializable{
/**
*
*/
private static final long serialVersionUID = -517413165963030507L;
/**
*
*/
private int id;
private String name;
private int sex;
public Person(){
}
public Person(int id,String name,int sex){
this.id = id;
this.name = name;
this.sex = sex;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
}
二:DAO接口类
IAction.java
[java] view plaincopy
package dao;
import java.util.List;
import po.Person;
public interface IAction {
public boolean insertPerson(Person person); //添加
public boolean deleteById(int id); //删除
public boolean updatePerson(Person person); //修改
public Person queryById(int id); //根据ID查询
public List<Person> queryAllPerson(); //查询全部
}
三:DAO实现类
ActionImpl.java 此类继承SqlMapClientSupport 实现IAction接口
[java] view plaincopy
package dao.impl;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.ibatis.sqlmap.client.SqlMapSession;
import po.Person;
import dao.IAction;
public class ActionImpl extends SqlMapClientDaoSupport implements IAction {
//添加操作
@Override
public boolean insertPerson(Person person) {
// TODO Auto-generated method stub
getSqlMapClientTemplate().insert("insertPerson",person);
return false;
}
//删除操作
@Override
public boolean deleteById(int id) {
// TODO Auto-generated method stub
getSqlMapClientTemplate().delete("deleteById", id);
return false;
}
//查询全部
@Override
public List<Person> queryAllPerson() {
// TODO Auto-generated method stub
List<Person> persons = getSqlMapClientTemplate().queryForList("queryAllPerson");
return persons;
}
@Override
public Person queryById(int id) {
// TODO Auto-generated method stub
[java] view plaincopy
//自己添加实现代码
return null;
}
@Override
public boolean updatePerson(Person person) {
// TODO Auto-generated method stub
[java] view plaincopy
//自己添加实现代码
return false;
}
四:既然是ibatis spring整合 那就必须要有ibatis的配置文件
SqlMapConfig.xml
[html] view plaincopy
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
[html] view plaincopy
<!--此处一定不能有<settings/> 标签-->
<!-- <settings cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
errorTracingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="false" /> -->
<sqlMap resource="po/Person.xml" />
</sqlMapConfig>
SqlMapClient.xml里本应该有数据源的配置的 使用spring之后数据源的配置移植到了spring上
五:Person.xml
里面配置了一下对数据的增删改查操作
[html] view plaincopy
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap>
<typeAlias alias="person" type="po.Person" />
<insert id="insertPerson" parameterClass="po.Person">
<![CDATA[
insert into person values (#id#,#name#,#sex#)
]]>
</insert>
<delete id="deleteById" parameterClass="int">
<![CDATA[
delete from person where id=#id#
]]>
</delete>
<update id="updatePerson" parameterClass="po.Person">
<![CDATA[
update person set name=#name#,sex=#sex# where id=#id#
]]>
</update>
<select id="queryById" parameterClass="int" resultClass="po.Person">
<![CDATA[
select * from person where id=#id#
]]>
</select>
<select id="queryAllPerson" cacheModel="personCache" resultClass="po.Person">
<![CDATA[
select * from person
]]>
</select>
</sqlMap>
六:下面最重要的也就是配置applicationContext.xml了
[html] view plaincopy
<?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:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/ibatis" />
<property name="username" value="root" />
<property name="password" value="1" />
</bean>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation"> <!-- name 为configLocation或s 不可为其他 -->
<value>SqlMapConfig.xml</value> <!-- 不区分大小写,路径前可加'/' -->
</property>
<!-- dataSource不是必需 -->
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
<bean id="personDAO" class="dao.impl.ActionImpl">
<!-- dataSource不是必需 -->
<property name="dataSource">
<ref local="dataSource" />
</property>
<!-- sqlMapClient必需 -->
<property name="sqlMapClient">
<ref local="sqlMapClient"/>
</property>
</bean>
<!-- transactionManager不是必需 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
</beans>
注释里面的必需或不是必需都是本人多次试验的,至于为什么是必需不必需 其中的原理我也不是能太讲清楚,在此先是这些写罢了。
里面的每一个节点,属性,如果不太理解,可以上网查一些其他资料。
七:编写测试类
此类利用junit进行测试。只测试了部分功能。
[html] view plaincopy
package dao.impl;
import java.util.Iterator;
import java.util.List;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import po.Person;
public class ActionImplTest {
private static ApplicationContext applicationContext = null; //提供静态ApplicationContext
static{
applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); //实例化
}
//添加操作
@Test
public void testInsertPerson(){
ActionImpl s = (ActionImpl)applicationContext.getBean("personDAO");
s.insertPerson(new Person(1,"zhangsan",2));
}
//删除操作
@Test
public void testDeletePerson(){
ActionImpl s = (ActionImpl)applicationContext.getBean("personDAO");
s.deleteById(1);
}
//查询全部
@Test
public void testQueryAllPerson(){
ActionImpl s = (ActionImpl)applicationContext.getBean("personDAO");
List<Person> persons = s.queryAllPerson();
//System.out.println(persons.size());
Iterator<Person> ite = persons.iterator();
while(ite.hasNext()){
Person person = ite.next();
System.out.print("ID: "+person.getId());
System.out.print(" Name: "+person.getName());
System.out.print(" Sex: "+person.getSex());
System.out.println();
}
}
}
八:如需记录日志 则要log4j.properties
[html] view plaincopy
#log4j.rootLogger=DEBUG, stdout
#log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=%c{1} - %m%n
#log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.rootLogger=DEBUG, stdout, fileout
#log4j.logger.test=info
#log4j.logger.org.apache.jasper = DEBUG
#log4j.logger.org.apache.catalina.startup.TldConfig = DEBUG
#log4j.logger.org.apache.catalina.session.ManagerBase = DEBUG
log4j.logger.com.fiscal = DEBUG
log4j.logger.com.system = DEBUG
log4j.logger.com.ibatis = DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource = DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner = DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = DEBUG
log4j.logger.java.sql.Connection = DEBUG
log4j.logger.java.sql.Statement = DEBUG
log4j.logger.java.sql.PreparedStatement = DEBUG, fileout
log4j.logger.java.sql.ResultSet = DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.fileout=org.apache.log4j.RollingFileAppender
log4j.appender.fileout.File=C\:\\ibatis.log
log4j.appender.fileout.MaxFileSize=10000KB
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH\:mm\:ss} \:%m%n
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.ConversionPattern=[%-5p]_%d{yyyy-MM-dd HH\:mm\:ss} \:%m%n
#log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
# log4j.logger.org=info
九:已经到最后了,我觉得这最后的才是最最重要的,就是一下jar包问题
我调试了很长时间 一大部分时间是jar问题
在此列出一下我认为能够跑起来这个小程序所需的一下jar包
如没有,可网上下载。
[sql] view plaincopy
ibaits-2.3.4.jar
spring.jar
mysql-connector-java-bin.jar
commons-dbcp-1.4.jar
commons-pool-1.5.6.jar
spring-orm-2.5.6.jar //已集成到spring.jar里
//记录日志所需
log4j-1.2.15.jar
commons-logging.jar
下面是本人的目录结构图
结束语:此文没有过多的讲些原理性的问题,比如为何这样写,又为何这样配置,只是给出了一个搭建框架的架子而已。
因为我也是一个菜鸟,至于如何,我想,等我们有经验了,会慢慢都懂得。
还希望大家共同努力,实现自己的梦想。
希望能与各位共勉!
小白
相关推荐
jbpm4.4 ibatis-spring 整合
在iBatis-Spring整合中,Spring可以管理SqlSessionFactory和SqlSessionTemplate,这样我们无需手动创建和关闭SqlSession,降低了资源泄露的风险。同时,Spring的事务管理功能可确保数据操作的原子性和一致性。 整合...
《MyBatis-Spring整合详解及1.0.2版本剖析》 MyBatis-Spring是MyBatis和Spring框架的集成库,旨在简化在Spring应用中使用MyBatis的过程,实现两者的无缝连接。本篇文章将深入探讨MyBatis-Spring的核心功能,以及...
包含ibatsi spring进行整合所需的全部jar包 包括ibatis-xx.jar spring.jar commous-dbcp-1.4.jar commons-pool-2.5.6.jar log4j-xx.jar等等
iBatis和Spring整合 iBatis和Spring整合
### ibatis与Spring框架整合详解 #### 一、ibatis简介 ibatis是一个开源的、基于Java的持久层框架,它提供了SQL映射的方式来进行数据库访问。与Hibernate等其他ORM框架相比,ibatis更加轻量级,对于那些只需要简单...
文档还会深入讲解iBATIS与Spring框架的整合。Spring是一个全面的企业级应用开发框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等特性,有助于降低软件组件...
整合iBATIS与Spring的主要目的是利用Spring的管理能力,如bean的生命周期管理和事务管理,以及其与其他组件(如Spring MVC)的无缝集成,简化应用开发并提高可维护性。 在实际的项目中,Spring与iBATIS的整合通常...
当我们谈到`iBatis` 和 `Spring` 的整合时,意味着我们可以利用两者的优点,构建一个高效、灵活且易于维护的系统。 整合`iBatis` 和 `Spring` 主要涉及以下几个关键知识点: 1. **数据源配置**:在整合过程中,...
在"Struts2+ibatis-2.3+spring2.5整合实例"中,我们首先需要设置项目的环境,包括JDK、Maven或Gradle等构建工具,以及Tomcat服务器。然后,创建一个新的Maven或Gradle项目,并在`pom.xml`或`build.gradle`文件中添加...
Struts 2 与 Spring 的整合提供了更强大的功能,例如利用 Spring 的 DI 来管理 Struts 2 的动作类,以及事务管理。 **IBatis 框架** IBatis 是一个持久层框架,它将 SQL 查询与 Java 代码分离,允许开发者编写 SQL...
Ibatis和Spring整合例子,实现增删改查功能.
在这个特定的案例中,我们关注的是"Ibatis Spring Struts"的整合。这三个框架分别是:Ibatis(一个轻量级的持久层框架),Spring(一个全面的企业级应用开发框架),以及Struts(一个用于构建MVC(Model-View-...
Struts2+iBATIS+Spring整合是Java Web开发中一种常见的技术栈组合,这三种框架协同工作,可以构建出高效、灵活的企业级应用。Struts2作为MVC(Model-View-Controller)架构的一部分,主要负责处理HTTP请求,管理前端...
Struts1、Spring和iBatis是Java Web开发中经典的三大框架,它们分别负责MVC模式中的控制器、业务逻辑管理和服务层数据访问。这个"Struts1+Spring+iBatis-jar包"集合了这三个框架的核心组件,为开发者提供了一个快速...
在整合iBATIS和Spring的过程中,主要目标是利用Spring的IOC(Inversion of Control)容器来管理和协调数据访问层(DAO)以及事务处理,同时利用iBATIS作为SQL映射框架,提供灵活的数据库操作。以下将详细阐述整合的...
flex 整合 spring+struts2+ibatis - 乐的日志 - 网易博客.htm flex 整合 spring+struts2+ibatis - 乐的日志 - 网易博客.htm
"Ibatis+Spring整合"是指将这两个框架集成到同一个项目中,以利用它们的优势互补,实现更高效、更灵活的数据访问层。下面我们将详细探讨这个整合过程中的关键知识点。 首先,集成Ibatis和Spring的第一步是引入相关...
- 在开始使用MyBatis-Spring整合之前,用户需要具备Spring和MyBatis框架的基本知识以及相关的术语理解。本手册假定读者已经掌握了这两个框架的基本安装和配置方法。 - MyBatis-Spring与MyBatis和Spring 3.0一样,...
- Spring可以管理SqlSessionTemplate或SqlSessionDaoSupport,它们是iBatis与Spring整合的关键类,提供数据库操作的方法。 - 将iBatis的Mapper接口定义为Spring的Bean,通过@Autowired注解自动注入到需要的地方。 ...