使用
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);
}
结束
分享到:
相关推荐
这个整合实例提供了基于这些技术的源码,可以帮助开发者深入理解它们如何协同工作。 Struts是MVC(Model-View-Controller)设计模式的一种实现,主要用于处理用户请求并控制应用程序的流程。它通过Action类来处理...
在Spring和Struts2的整合项目中,iBatis作为数据访问层,负责与数据库交互,执行增删改查等操作。通过XML配置文件或注解,可以将SQL语句与Java对象映射起来,使得数据操作更加便捷。 在项目源码中,"ibatis"这个...
6. **Spring的IoC容器**:`iBatis`的SqlSession和Mapper实例可以通过`Spring`的IoC容器管理,避免手动创建和关闭,减少资源泄漏的可能性。 7. **测试支持**:整合后的`iBatis`和`Spring`项目可以方便地进行单元测试...
5. **整合iBatis与Spring**:通过Spring的SqlSessionFactoryBean,配置数据源和MyBatis的配置文件,将DAO接口与Mapper XML关联起来。 6. **部署与测试**:将所有配置文件、类库和应用代码打包成WAR文件,部署到应用...
本文将深入探讨Spring如何与iBatis进行整合,并提供详细的配置步骤和关键知识点。 1. **iBatis简介** iBatis是一个基于Java的持久层框架,它允许开发者将SQL语句与Java代码分离,提供XML或注解方式定义SQL映射,...
在"Struts2+ibatis-2.3+spring2.5整合实例"中,我们首先需要设置项目的环境,包括JDK、Maven或Gradle等构建工具,以及Tomcat服务器。然后,创建一个新的Maven或Gradle项目,并在`pom.xml`或`build.gradle`文件中添加...
【标题】"maven+ibatis+spring mvc源码" 涉及到的是一个典型的Java Web开发架构,结合了Maven项目管理工具、MyBatis持久层框架以及Spring MVC作为控制器层的实现。这一组合是现代企业级应用开发中的常见选择,具有...
Spring还提供了丰富的模块,如Spring MVC(Web开发)、Spring JDBC和Spring Data(数据访问),以及Spring Security(安全控制)等,能很好地与Struts2和iBatis集成。 在"SSI_Project"中,Spring可能用于管理整个...
每个zip可能包含Web应用的源码、配置文件、资源文件等,供开发者学习和参考如何在实际项目中实现Spring与iBATIS的整合。 总之,`ibatis-spring`的整合是一个常见的企业级开发实践,它使得数据库操作更加简洁,同时...
《Ibatis 入门经典 实例》 Ibatis 是一款著名的轻量级 Java 持久层框架,它提供了一种映射 SQL 和 Java 对象的简单方式,从而减轻了开发人员在数据库操作中的工作负担。这篇实例教程将带你深入理解 Ibatis 的核心...
在Spring和iBatis的整合中,我们可以利用Spring的DataSource和SqlSessionFactoryBean来配置数据源,然后通过MyBatis的Mapper接口与SQL交互。 jQuery是一个JavaScript库,它简化了HTML文档遍历、事件处理、动画制作...
在IT行业中,Spring框架与MyBatis(原iBATIS)的整合是常见的数据库访问解决方案。这个主题主要涉及如何将轻量级的SQL映射框架iBATIS与强大的Spring框架结合,实现更高效、灵活的持久层管理。下面将详细阐述这一整合...
SpringMVC作为Spring框架的一部分,主要用于构建Web应用程序的Model-View-Controller(MVC)架构,而iBatis则是一个轻量级的持久层框架,它将SQL查询与Java代码解耦,提供了灵活的数据库操作方式。 SpringMVC的核心...
这个"webwork+spring+ibatis简单实例"提供了如何整合这三个框架来创建一个功能完整的应用程序的示例。以下是关于这三个框架及其整合方式的详细说明: **WebWork**: WebWork是一个轻量级的MVC(模型-视图-控制器)...
Spring还包含了数据访问、事务管理、邮件服务、任务调度等多个模块,能够与各种其他框架如Struts2、iBatis无缝集成。 将这三者结合起来,我们可以构建出一个高效且可维护的Java Web应用。首先,Struts2作为前端控制...
标题 "spring+ibatis" 暗示了我们要探讨的是如何在Java开发中结合Spring框架与iBATIS(现在称为MyBatis)进行数据访问。Spring是一个全面的企业级应用框架,而MyBatis是一个轻量级的持久层框架,它简化了数据库操作...