`
jinnianshilongnian
  • 浏览: 21441443 次
  • 性别: Icon_minigender_1
博客专栏
5c8dac6a-21dc-3466-8abb-057664ab39c7
跟我学spring3
浏览量:2406607
D659df3e-4ad7-3b12-8b9a-1e94abd75ac3
Spring杂谈
浏览量:2998817
43989fe4-8b6b-3109-aaec-379d27dd4090
跟开涛学SpringMVC...
浏览量:5632388
1df97887-a9e1-3328-b6da-091f51f886a1
Servlet3.1规范翻...
浏览量:257842
4f347843-a078-36c1-977f-797c7fc123fc
springmvc杂谈
浏览量:1593564
22722232-95c1-34f2-b8e1-d059493d3d98
hibernate杂谈
浏览量:249105
45b32b6f-7468-3077-be40-00a5853c9a48
跟我学Shiro
浏览量:5848533
Group-logo
跟我学Nginx+Lua开...
浏览量:698464
5041f67a-12b2-30ba-814d-b55f466529d5
亿级流量网站架构核心技术
浏览量:780940
社区版块
存档分类
最新评论

【第八章】 对ORM的支持 之 8.3 集成iBATIS ——跟我学spring3

阅读更多

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 sqlMapClient;
    @BeforeClass
    public static void setUpClass() {
      String[] configLocations = new String[] {
          "classpath:chapter7/applicationContext-resources.xml",
          "classpath:chapter8/applicationContext-ibatis.xml"};
      ApplicationContext ctx = new ClassPathXmlApplicationContext(configLocations);
      sqlMapClient = ctx.getBean(SqlMapClient.class);
  }
}

 

此处我们使用了chapter7/applicationContext-resources.xml定义的“dataSource”数据源,通过ctx.getBean(SqlMapClient.class)获取SqlMapClient。

 

 

8、 通过SqlMapClient创建和删除表:

 

java代码:
@Before
public void setUp() throws SQLException {
    sqlMapClient.update("UserSQL.createTable");
}
@After
public void tearDown() throws SQLException {
    sqlMapClient.update("UserSQL.dropTable");
}

 

 

9、 使用SqlMapClient进行对象持久化:


java代码:
	
@Test
public void testFirst() throws SQLException {
    UserModel model = new UserModel();
    model.setMyName("test");
    SqlMapSession session = null;
    try {
        session = sqlMapClient.openSession();
        beginTransaction(session);
        session.insert("UserSQL.insert", model);
        commitTransaction(session);
    } catch (SQLException e) {
        rollbackTransacrion(session);
        throw e;
    } finally {
        closeSession(session);
    }
}
private void closeSession(SqlMapSession session) {
   session.close();
}
private void rollbackTransacrion(SqlMapSession session) throws SQLException {
    if(session != null) {
        session.endTransaction();
    }         
}
private void commitTransaction(SqlMapSession session) throws SQLException {
    session.commitTransaction();
}
private void beginTransaction(SqlMapSession session) throws SQLException {
    session.startTransaction();
}
 


同样令人心烦的事务管理和冗长代码,Spring通用提供了SqlMapClientTemplate模板类来解决这些问题。

 

8.3.2  使用 SqlMapClientTemplate

SqlMapClientTemplate模板类同样用于简化事务管理及常见操作,类似于JdbcTemplate模板类,对于复杂操作通过提供SqlMapClientCallback回调接口来允许更复杂的操作。

       接下来示例一下SqlMapClientTemplate的使用:

 

java代码:
@Test
public void testSqlMapClientTemplate() {
SqlMapClientTemplate sqlMapClientTemplate =
new SqlMapClientTemplate(sqlMapClient);
    final UserModel model = new UserModel();
    model.setMyName("myName");
    sqlMapClientTemplate.insert("UserSQL.insert", model);
    //通过回调允许更复杂操作
    sqlMapClientTemplate.execute(new SqlMapClientCallback<Void>() {
        @Override
        public Void doInSqlMapClient(SqlMapExecutor session) throws SQLException {
            session.insert("UserSQL.insert", model);
            return null;
    }});
}
 

 

通过new SqlMapClientTemplate(sqlMapClient)创建HibernateTemplate模板类对象,通过调用模板类的save方法持久化对象,并且自动享受到Spring管理事务的好处。

 

而且SqlMapClientTemplate提供使用SqlMapClientCallback回调接口的方法execute用来支持复杂操作,当然也自动享受到Spring管理事务的好处。

 

8.3.3集成iBATIS及最佳实践

       类似于JdbcDaoSupport类,Spring对iBATIS也提供了SqlMapClientDaoSupport类来支持一致的数据库访问。SqlMapClientDaoSupport也是DaoSupport实现:

       接下来示例一下Spring集成iBATIS的最佳实践:

 

1、 定义Dao接口,此处使用cn.javass.spring.chapter7.dao.IUserDao

 

2、 定义Dao接口实现,此处是iBATIS实现:

 

java代码:
package cn.javass.spring.chapter8.dao.ibatis;
//省略import
public class UserIbatisDaoImpl extends SqlMapClientDaoSupport
    implements IUserDao {
    @Override
    public void save(UserModel model) {
        getSqlMapClientTemplate().insert("UserSQL.insert", model);
    }
    @Override
    public int countAll() {
        return (Integer) getSqlMapClientTemplate().queryForObject("UserSQL.countAll");
    }
}

 

3、修改iBATS映射文件(chapter8/sqlmaps/UserSQL.xml),添加countAll查询:

 

java代码:
<select id="countAll" resultClass="java.lang.Integer">
    <![CDATA[ select count(*) from test ]]>   
</select>

此处注意首先iBATIS实现放在dao.ibaitis包里,其次实现类命名如UserIbatisDaoImpl,即×××IbatisDaoImpl,当然如果自己有更好的命名规范可以遵循自己的,此处只是提个建议。

 

4、进行资源配置,使用resources/chapter7/applicationContext-resources.xml

 

5、dao定义配置,在chapter8/applicationContext-ibatis.xml中添加如下配置:

 

java代码:
<bean id="abstractDao" abstract="true">
    <property name="sqlMapClient" ref="sqlMapClient"/>
</bean>   
<bean id="userDao"
      class="cn.javass.spring.chapter8.dao.ibatis.UserIbatisDaoImpl"
      parent="abstractDao"/> 

 

首先定义抽象的abstractDao,其有一个sqlMapClient属性,从而可以让继承的子类自动继承sqlMapClient属性注入;然后定义userDao,且继承abstractDao,从而继承sqlMapClient注入;我们在此给配置文件命名为applicationContext-ibatis.xml表示iBAITIS实现。

 

 

5、 最后测试一下吧(cn.javass.spring.chapter8. IbatisTest): 

 

java代码:
@Test
public void testBestPractice() {
    String[] configLocations = new String[] {
            "classpath:chapter7/applicationContext-resources.xml",
            "classpath:chapter8/applicationContext-ibatis.xml"};
    ApplicationContext ctx = new ClassPathXmlApplicationContext(configLocations);
    IUserDao userDao = ctx.getBean(IUserDao.class);
    UserModel model = new UserModel();
    model.setMyName("test");
    userDao.save(model);
    Assert.assertEquals(1, userDao.countAll());
}

 

和Spring JDBC框架的最佳实践完全一样,除了使用applicationContext-ibatis.xml代替了applicationContext-jdbc.xml,其他完全一样。也就是说,DAO层的实现替换可以透明化。

 

8.3.4Spring+iBATIS的CURD

Spring集成iBATIS进行CURD(增删改查),也非常简单,首先配置映射文件,然后调用SqlMapClientTemplate相应的函数进行操作即可,此处就不介绍了。

 

 

 

 

8.3.5集成MyBatis及最佳实践

(本笔记写于2010年底)

 

2010年4月份 iBATIS团队发布iBATIS 3.0的GA版本的候选版本,在iBATIS 3中引入了泛型、注解支持等,因此需要Java5+才能使用,但在2010年6月16日,iBATIS团队决定从apache迁出并迁移到Google Code,并更名为MyBatis。目前新网站上文档并不完善。

 

目前iBATIS 2.x和MyBatis 3不是100%兼容的,如配置文件的DTD变更,SqlMapClient直接由SqlSessionFactory代替了,包名也有com.ibatis变成org.ibatis等等。

ibatis 3.x和MyBatis是兼容的,只需要将DTD变更一下就可以了。

 

感兴趣的朋友可以到http://www.mybatis.org/官网去下载最新的文档学习,作者只使用过iBATIS2.3.4及以前版本,没在新项目使用过最新的iBATIS 3.x和Mybatis,因此如果读者需要在项目中使用最新的MyBatis,请先做好调研再使用。

 

       接下来示例一下Spring集成MyBatis的最佳实践:

 

1、准备需要的jar包,到MyBatis官网下载mybatis 3.0.4版本和mybatis-spring 1.0.0版本,并拷贝如下jar包到类路径:


mybatis-3.0.4\mybatis-3.0.4.jar              //核心MyBatis

mybatis-spring-1.0.0\mybatis-spring-1.0.0.jar  //集成Spring

 

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

 

3、MyBatis映射定义(chapter8/sqlmaps/UserSQL-mybatis.xml):


java代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="UserSQL">
    <sql id="createTable">
    <!--id自增主键从0开始 -->
    <![CDATA[
      create memory table test(
        id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, 
        name varchar(100))
    ]]>
    </sql>
    <sql id="dropTable">
    <![CDATA[ drop table test ]]>
    </sql>
    <insert id="insert" parameterType="cn.javass.spring.chapter7.UserModel">
    <![CDATA[ insert into test(name) values (#{myName}) ]]>
        <selectKey resultType="int" keyProperty="id" order="AFTER">
            <!-- 获取hsqldb插入的主键 -->
            call identity();
            <!-- mysql使用select last_insert_id();获取插入的主键 -->
        </selectKey>
    </insert>
    <select id="countAll" resultType="java.lang.Integer">
    <![CDATA[ select count(*) from test ]]>   
    </select>
</mapper>
 
 

     从映射定义中可以看出MyBatis与iBATIS2.3.4有如下不同:

  • http://ibatis.apache.org/dtd/sql-map-2.dtd 废弃,而使用http://mybatis.org/dtd/mybatis-3-mapper.dtd
  • <sqlMap>废弃,而使用<mapper>标签;
  • <statement>废弃了,而使用<sql>标签;
  • parameterClass属性废弃,而使用parameterType属性;
  • resultClass属性废弃,而使用resultType属性;
  • #myName#方式指定命名参数废弃,而使用#{myName}方式。

 

3、 MyBatis配置文件(chapter8/sql-map-config-mybatis.xml)定义:

 

java代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <setting name="cacheEnabled" value="false"/>
    </settings>
    <mappers>
        <mapper resource="chapter8/sqlmaps/UserSQL-mybatis.xml"/>
    </mappers>
</configuration>

     从配置定义中可以看出MyBatis与iBATIS2.3.4有如下不同:

 

4、 定义Dao接口,此处使用cn.javass.spring.chapter7.dao. IUserDao

 

5、 定义Dao接口实现,此处是MyBatis实现:

 

java代码:
package cn.javass.spring.chapter8.dao.mybatis;
//省略import
public class UserMybatisDaoImpl extends SqlSessionDaoSupport
implements IUserDao {
    @Override
    public void save(UserModel model) {
        getSqlSession().insert("UserSQL.insert", model);
    }
    @Override
    public int countAll() {
        return (Integer) getSqlSession().selectOne("UserSQL.countAll");
    }
}
 

 

     和Ibatis集成方式不同的有如下地方:

  • 使用SqlSessionDaoSupport来支持一致性的DAO访问,该类位于org.mybatis.spring.support包中,非Spring提供;
  • 使用getSqlSession方法获取SqlSessionTemplate,在较早版本中是getSqlSessionTemplate方法名,不知为什么改成getSqlSession方法名,因此这个地方在使用时需要注意。
  •  SqlSessionTemplate是SqlSession接口的实现,并且自动享受Spring管理事务好处,因此从此处可以推断出为什么把获取模板类的方法名改为getSqlSession而不是getSqlSessionTemplate。

6、进行资源配置,使用resources/chapter7/applicationContext-resources.xml

 

7、dao定义配置,在chapter8/applicationContext-mybatis.xml中添加如下配置:

 

java代码:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource"/><!-- 1、指定数据源 -->
  <property name="configLocation" value="chapter8/sql-map-config-mybatis.xml"/>
</bean>
<bean id="abstractDao" abstract="true">
   <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>   
<bean id="userDao"
           class="cn.javass.spring.chapter8.dao.mybatis.UserMybatisDaoImpl"
           parent="abstractDao"/> 

 

   和Ibatis集成方式不同的有如下地方:

  • SqlMapClient类废弃,而使用SqlSessionFactory代替;
  • 使用SqlSessionFactoryBean进行集成MyBatis。

首先定义抽象的abstractDao,其有一个sqlSessionFactory属性,从而可以让继承的子类自动继承sqlSessionFactory属性注入;然后定义userDao,且继承abstractDao,从而继承sqlSessionFactory注入;我们在此给配置文件命名为applicationContext-mybatis.xml表示MyBatis实现。

 

 

8、最后测试一下吧(cn.javass.spring.chapter8. IbatisTest):


java代码:
@Test
public void testMybatisBestPractice() {
    String[] configLocations = new String[] {
        "classpath:chapter7/applicationContext-resources.xml",
        "classpath:chapter8/applicationContext-mybatis.xml"};
     ApplicationContext ctx = new ClassPathXmlApplicationContext(configLocations);
    IUserDao userDao = ctx.getBean(IUserDao.class);
    UserModel model = new UserModel();
    model.setMyName("test");
    userDao.save(model);
    Assert.assertEquals(1, userDao.countAll());
}
 
 


和Spring 集成Ibatis的最佳实践完全一样,除了使用applicationContext-mybatis.xml代替了applicationContext-ibatis.xml,其他完全一样,且MyBatis 3.x与Spring整合只能运行在Spring3.x。

 

在写本书时,MyBatis与Spring集成所定义的API不稳定,且期待Spring能在发布新版本时将加入对MyBatis的支持。

 

 

原创内容,转载请注明出处【http://sishuok.com/forum/blogPost/list/0/2498.html


32
2
分享到:
评论
8 楼 jieyuan_cg 2015-09-08  
afeng217 写道
在与MyBatis集成的时候,还可以更加改进:
利用mapper的xml文件映射到java类的,然后,在spring中将该mapper类,注入到service中,带来的方便,就是,service类中可以直接调用mapper的方法,犹如,调用了xml中定义的操作。
例如:
mapper类:
public interface PersonMapper {

    public Person getPerson(String name);
}

xml定义:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="PersonMapper">
<select id="getPerson" parameterType="string" resultType="Person">
select name, age from person where name = #{name}
</select>
</mapper>

service类:
    public void execute() {
        Person person = personMapper.getPerson("zw");
    }

另外,这里的依赖关系,通过spring的xml配置实现。
这样避免了,使用getSqlSession().insert("UserSQL.insert", model);  这样的语句。

这样确实可以自动扫描,但,如果在dao层面要做一些缓存方面的工作,就比较麻烦了。
不如每个dao增加缓存功能。
7 楼 jinnianshilongnian 2012-12-21  
afeng217 写道
在与MyBatis集成的时候,还可以更加改进:
利用mapper的xml文件映射到java类的,然后,在spring中将该mapper类,注入到service中,带来的方便,就是,service类中可以直接调用mapper的方法,犹如,调用了xml中定义的操作。
例如:
mapper类:
public interface PersonMapper {

    public Person getPerson(String name);
}

xml定义:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="PersonMapper">
<select id="getPerson" parameterType="string" resultType="Person">
select name, age from person where name = #{name}
</select>
</mapper>

service类:
    public void execute() {
        Person person = personMapper.getPerson("zw");
    }

另外,这里的依赖关系,通过spring的xml配置实现。
这样避免了,使用getSqlSession().insert("UserSQL.insert", model);  这样的语句。

+1
6 楼 afeng217 2012-12-21  
在与MyBatis集成的时候,还可以更加改进:
利用mapper的xml文件映射到java类的,然后,在spring中将该mapper类,注入到service中,带来的方便,就是,service类中可以直接调用mapper的方法,犹如,调用了xml中定义的操作。
例如:
mapper类:
public interface PersonMapper {

    public Person getPerson(String name);
}

xml定义:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="PersonMapper">
<select id="getPerson" parameterType="string" resultType="Person">
select name, age from person where name = #{name}
</select>
</mapper>

service类:
    public void execute() {
        Person person = personMapper.getPerson("zw");
    }

另外,这里的依赖关系,通过spring的xml配置实现。
这样避免了,使用getSqlSession().insert("UserSQL.insert", model);  这样的语句。
5 楼 jinnianshilongnian 2012-09-12  
lijun880312 写道
这一章看得最懂也必须是最详细的,我就用的ibatis!!楼主大爱啊

谢谢
4 楼 lijun880312 2012-09-12  
这一章看得最懂也必须是最详细的,我就用的ibatis!!楼主大爱啊
3 楼 ps329795485 2012-03-04  
很好 学习了
2 楼 fcoun043 2012-03-03  
相见恨晚的感觉
1 楼 zhua12 2012-03-03  
非常感谢楼主啊,一直跟着看下来了,很详细 很全面。

相关推荐

    跟我学spring3(8-13)

    【第八章】 对ORM的支持 之 8.3 集成iBATIS ——跟我学spring3 【第八章】 对ORM的支持 之 8.4 集成JPA ——跟我学spring3 【第九章】 Spring的事务 之 9.1 数据库事务概述 ——跟我学spring3 【第九章】 Spring的...

    跟我学spring3(8-13).pdf

    对ORM的支持 之 8.1 概述 8.2 集成Hibernate3 8.3 集成iBATIS 8.4 集成JPA 9.1 数据库事务概述 9.2 事务管理器 9.3 编程式事务 9.4 声明式事务 10.1 概述 10.2 集成Struts1.x 10.3 集成Struts2.x 10.4 集成JSF 11.1 ...

    跟开涛学Spring

    1. spring 1.1 【第二章】 IoC 之 2.3 IoC的配置使用——跟我学Spring3 . . ....1.36 【第八章】 对ORM的支持 之 8.2 集成Hibernate3 ——跟我学spring3 . . . . . . . . . . . . . . . . . . .352

    Spring高版本对ibatis的支持

    最近想在最新的Spring5.0中集成ibatis(不是mybatis),发现已经不在支持SqlmapClientTemplate和SqlmapClientFactoryBean,于是搞了这个工具jar来进行支持如下配置 &lt;bean id="sqlMapClient" class="org.spring...

    跟我学Spring3(8.2)对ORM的支持之集成Hibe

    跟我学Spring3(8.2)对ORM的支持之集成Hibernate3Java开发Java经验技巧共11页.pdf.zip

    跟我学spring3(8-13)1

    1.1 【第八章】 对ORM的支持 之 8.1 概述 ——跟我学spring3 41.4 跟我学spring3 电子书下载 361.5 【第八章】 对ORM的支

    跟我学Spring3(8.1)对ORM的支持之概述Java

    跟我学Spring3(8.1)对ORM的支持之概述Java开发Java经验技巧共3页.pdf.zip

    python利用元类和描述器实现ORM模型(csdn)————程序.pdf

    python利用元类和描述器实现ORM模型(csdn)————程序

    Spring对IBatis的整合

    Spring对IBatis的整合 10.3 Spring对IBatis的支持 Spring对IBatis提供了完善的内建支持。使用Spring提供的IBatis辅助类,可以大大简化原有的IBatis访问代码。这些辅助类位于org.springframework.orm.ibatis包下,...

    基于Spring ORM 3.2.x分支的Ibatis集成设计源码

    本源码为基于Spring ORM 3.2.x分支的Ibatis集成设计,共包含20个文件,其中xml文件4个,yaml文件3个,java文件3个,gitattributes文件1个,yml文件1个,gitignore文件1个,properties文件1个,LICENSE文件1个,...

    springorm源代码

    spring集成ibatis后的orm源码,不包括mybaits,可以map工厂进行跟踪

    spring-orm.jar

    spring-orm.jar

    spring-orm源码

    spring-orm源码,可以导入Eclipse工程里面!

    Spring整合其他ORM框架

    Spring整合其他ORM框架:Spring整合其他ORM框架整合的时候所需要的jar包spring-orm-3.2.0.RELEASE.jar

    jdbc+mybatis+spring所有jar包

    mybatis是ibatis的升级版,spring也有自带mybatis的orm。所以,搭建ibatis的框架也会有多种方式(我这里mybatis是3.0的,ibatis是2.3的,spring是3.0的,数据库是mysql)。下面介绍3中方式 1,只是用mybatis3。 2...

    iBATIS orm 指南

    iBATIS官方用户指南 3-User-Guide

    spring-orm最新jar包

    这个jar文件包含Spring对DAO特性集进行了扩展,使其支持 iBATIS、JDO、OJB、TopLink,因为Hibernate已经独立成包了,现在不包含在这个包里了。这个jar文件里大部分的类都要依赖spring-dao.jar里的类,用这个包时你...

Global site tag (gtag.js) - Google Analytics