TOP

跟我学spring3(8.3):对ORM的支持之集成iBATIS(一)
2017-09-30 17:07:54 】 浏览:10051
Tags:跟我学 spring3 8.3 ORM 支持 集成 iBATIS

8.3  集成iBATIS

iBATIS是一个半自动化的ORM框架,需要通过配置方式指定映射SQL语句,而不是由框架本身生成(如Hibernate自动生成对应SQL来持久化对象),即Hibernate属于全自动ORM框架。

Spring提供对iBATIS 2.X的集成,提供一致的异常体系、一致的DAO访问支持、Spring管理事务支持。

       Spring 2.5.5+版本支持iBATIS 2.3+版本,不支持低版本。

8.3.1  如何集成

Spring通过使用如下Bean进行集成iBATIS:

  • SqlMapClientFactoryBean:用于集成iBATIS。

configLocation和configLocations:用于指定SQL Map XML配置文件,用于指定如数据源等配置信息;

mappingLocations:用于指定SQL Map映射文件,即半自动概念中的SQL语句定义;

sqlMapClientProperties:定义iBATIS 配置文件配置信息;

dataSource:定义数据源。

如果在Spring配置文件中指定了DataSource,就不要在iBATIS配置文件指定了,否则Spring配置文件指定的DataSource将覆盖iBATIS配置文件中定义的DataSource。

接下来示例一下如何集成iBATIS:

1、准备需要的jar包,从spring-framework-3.0.5.RELEASE-dependencies.zip中拷贝如下jar包:

  com.springsource.com.ibatis-2.3.4.726.jar

2、 对象模型定义,此处使用第七章中的UserModel

3、 iBATIS映射定义(chapter8/sqlmaps/UserSQL.xml):

java代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
    "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="UserSQL">
  <statement id="createTable">
    <!--id自增主键从0开始 -->
    <![CDATA[
        create memory table test(
          id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, 
          name varchar(100))
    ]]>
  </statement>
  <statement id="dropTable">
    <![CDATA[  drop table test  ]]>
  </statement>
  <insert id="insert" parameterClass="cn.javass.spring.chapter7.UserModel">
    <![CDATA[
      insert into test(name) values (#myName#)
    ]]>
    <selectKey resultClass="int" keyProperty="id" type="post">
      <!-- 获取hsqldb插入的主键 -->
      call identity();
      <!-- mysql使用select last_insert_id();获取插入的主键 -->
    </selectKey>
  </insert>
</sqlMap>

4、 iBATIS配置文件(chapter8/sql-map-config.xml)定义:

java代码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

<sqlMapConfig>
    <settings enhancementEnabled="true" useStatementNamespaces="true"
        maxTransactions="20" maxRequests="32" maxSessions="10"/>
    <sqlMap resource="chapter8/sqlmaps/UserSQL.xml"/>
</sqlMapConfig>

5、 数据源定义,此处使用第7章的配置文件,即“chapter7/applicationContext-resources.xml”文件。

6、 SqlMapClient配置(chapter8/applicationContext-ibatis.xml)定义:

java代码:

<bean id="sqlMapClient"
    class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
    <!-- 1、指定数据源 -->
    <property name="dataSource" ref="dataSource"/>
    <!-- 2、指定配置文件 -->
    <property name="configLocation" value="chapter8/sql-map-config.xml"/>
</bean>

7、 获取SqlMapClient

java代码:

package cn.javass.spring.chapter8;
//省略import
public class IbatisTest {
    private static SqlMapClient sqlM  
		
跟我学spring3(8.3):对ORM的支持之集成iBATIS(一) https://www.cppentry.com/bencandy.php?fid=76&id=123213

首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇浅谈Java中的equals和== 下一篇跟我学Spring3(9.1):Spring的..