`
青衫麦子
  • 浏览: 2789 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

spring与mybatis三种整合方法

 
阅读更多
1.单独使用MyBatis
单独使用MyBatis,不结合其他框架,主要步骤是:
1.创建SqlSessionFactory对象
创建方法是通过SqlSessionFactoryBuilder这个类从mybatis的XML配置文件,或者porperties,或者URL获取相关数据库的配置信息。
2.从sqlSessionFactory获取SqlSession。
3.使用SqlSession提供的API,对数据库进行增删改查,以及事务管理。
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
session.insert("BlogMapper.selectBlog", 101);
session.commit();
sesssion.close();
 
2.结合Spring框架使用MyBatis
 MyBatis + Spring的使用方式,一般是在Spring的配置文件里,配置以下内容:
1.数据源(DataSource)
2.SqlSessionFactoryBean,实现FactoryBean接口,通过注入DataSource对象,以及MyBatis的相关配置信息,返回SQLSessionFactory对象。

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/mysql"></jee:jndi-lookup>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"></property>
    <property name="mapperLocations" value="classpath:mybatis/*/*.xml"></property>
</bean>
加入以上的配置信息就可以Dao类里,直接引用sqlSessionFactory这个对象,对数据库进行操作(跟1的代码一样)。
如果Dao的代码写多了,这时候会发现,每次的数据库操作,步骤都是要先
①获取SqlSession对象->②调用数据库操作的方法->③提交事务->④关闭SqlSession
其中①③④这三个步骤会一直环绕在每个Dao的方法里。
这时候会这么想,能否提供这样一个功能,在调用方法之前自动获取SqlSession对象,在调用方法之后自动提交事务和关闭SqlSession对象。这样①③④这样重复的代码就可以剔除了,整个Dao类的代码也变得更加简洁。
3.SqlSessionTemplate的应用
上面提到的,在调用方法之前和调用方法之后,各执行一些操作。这种技术一下子就联想到就是AOP编程方式。
AOP是Spring的第二个核心功能,所以自然它也提供了这样的是一个实现类,就是SqlSessionTemplate

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/mysql"></jee:jndi-lookup>
 
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"></property>
    <property name="mapperLocations" value="classpath:mybatis/*/*.xml"></property>
</bean>
     
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg ref="sqlSessionFactory" />
</bean>
 
 引入SqlSessionTemplate这个类,在写Dao时,每个方法,在执行之前,自动获取SqlSession对象,执行之后,自动提交事务和关闭会话。

public Object save(String str, Object obj) throws Exception {
  return sqlSessionTemplate.insert(str, obj);
}
现在代码一下子变得更简洁了,只剩下数据操作的方法。
4.SqlSessionTemplate原理解析思路
为什么SqlSessionTemplate能够在每个方法,在执行之前,自动获取SqlSession对象,执行之后,自动提交事务和关闭会话。
要知道这个原理,其实相当于要了解Spring AOP原理。
要了解Spring AOP原理,就必须知道Java技术里,动态代理的原理。
Java的动态代理主要是涉及到JDK里java.lang.reflect包下的InvocationHandler接口和Proxy类里创建代理对象的方法。
SqlSessionTemplate的源码解析
SqlSessionTemplate的构造方法里,创建了一个SqlSession的代理对象。


在这个代理对象,每次SQLSession的方法被调用,都执行以下操作。

上面代码涉及到的知识点比较多,要完全理解,需要掌握下面列出的几点。
5.知识点归纳
1.MyBatis中的SqlSessionFactory和SqlSession
2.Spring中的SqlSessionFactoryBean和SqlSessionTemplate
3.Spring AOP原理
4.Java动态代理原理
5.Java反射原理
分享到:
评论

相关推荐

    Spring与Mybatis三种常用整合方法

    ### Spring与Mybatis三种常用整合方法详解 #### 第一种整合方法:使用MapperFactoryBean **1.1 Spring配置文件** 为了使Spring与Mybatis能够顺利整合,首先需要在Spring配置文件中进行必要的设置。以下是一个典型...

    spring_mybatis 整合jar包

    描述中提到"基本常用jar包的整合",意味着这个压缩包包含了一些基础且常用的库,这些库是进行Spring和MyBatis整合所必需的。例如,Spring的`spring-context`、`spring-beans`、`spring-jdbc`和`spring-tx`,以及...

    Spring整合Mybatis与SpringBoot整合Mybatis原理分析

    将Spring与Mybatis整合,可以充分利用两者的优点,构建出高效、灵活的Web应用。 1. **Spring整合Mybatis的基本步骤** - **引入依赖**: 在项目的pom.xml中添加Spring和Mybatis的相关依赖。 - **配置数据源**: ...

    mybatis与spring整合的全部jar包

    以上就是关于“mybatis与spring整合的全部jar包”的详细知识点,这些组件共同构建了一个灵活且易于维护的Java Web应用程序。通过理解这些概念和技术,开发者可以更好地理解和使用SSM框架来开发复杂的企业级应用。

    Mybatis与Spring整合所需的jar包

    mybatis与spring整合时所依赖的jar包,包括: 1.Mybatis所需的jar包括: ant-1.9.6.jar ant-launcher-1.9.6.jar asm-5.2.jar cglib-3.2.5.jar commons-logging-1.2.jar javassist-3.22.0-CR2.jar log4j-...

    Spring-Mybatis整合

    现在我们来详细讨论一下Spring-Mybatis整合的相关知识点。 1. **Spring 概述**: Spring 是一个全面的企业级应用框架,它提供了一个容器来管理对象的生命周期和依赖关系。Spring 的核心特性包括依赖注入(DI)和...

    spring整合Mybatis

    最后,`springMybatis`可能是指项目的根目录或者模块名称,通常包含`src/main/resources`下的Mybatis配置文件、Mapper接口和XML文件,以及`src/main/java`下的业务逻辑和服务层代码。 综上所述,"Spring整合Mybatis...

    spring与Mybatis整合所有jar包

    以上就是Spring与MyBatis整合所需的关键知识点。在实际项目中,还需要根据具体需求进行适当的配置调整和优化,确保框架的高效协同工作。正确配置和理解这些概念对于Java开发者来说至关重要,因为它们构成了许多企业...

    mybatis与spring整合全部jar包

    这个“mybatis与spring整合全部jar包”包含了这三个框架整合所需的所有依赖库,使得开发者可以快速搭建SSM项目。 首先,让我们深入了解一下这三个组件: 1. **Spring**:Spring 是一个全面的Java企业级应用开发...

    spring与mybatis整合所用的jar包

    下面将详细介绍Spring与MyBatis整合所需的知识点。 1. **Spring Framework**: Spring的核心是IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入),它通过容器管理对象的生命周期和对象...

    spring4.3 mybatis3.4 整合

    在IT行业中,Spring框架与MyBatis的整合是常见的企业级应用开发模式,尤其是在Java领域。本项目基于Spring 4.3和MyBatis 3.4进行整合,旨在构建一个SSM(Spring、SpringMVC、MyBatis)集成的多模块Web项目。这个项目...

    SpringMvc+Spring+Mybatis+Maven整合.part10

    通过SpringMvc+Spring+Mybatis+Maven整合,学习用maven搭建框架

    Spring3+springmvc+mybatis三大整合

    在Java开发领域,Spring、SpringMVC和MyBatis是三个非常重要的开源框架,它们各自在不同的层次上解决了Web应用中的问题。Spring作为全面的框架,提供了依赖注入(DI)和面向切面编程(AOP)等核心特性;SpringMVC是...

    mybatis-spring 整合jar包

    mybatis-spring 整合jar包,Spring和MyBatis环境整合mybatis-spring-1.1.1

    Spring与MyBatis整合源码

    3. **Spring与MyBatis整合**:整合Spring和MyBatis主要涉及以下几个步骤: - **配置数据源**:在Spring的配置文件中,我们需要定义数据源(DataSource),这是连接数据库的关键。 - **配置SqlSessionFactory**:...

    spring和mybatis整合小案例

    3. **Spring与MyBatis整合**: - **配置MyBatis-Spring**:整合的关键在于配置Spring的SqlSessionFactoryBean,它会根据配置文件生成SqlSessionFactory,该工厂用于创建SqlSession对象,进而执行数据库操作。 - **...

    spring+mybatis+cxf整合

    本文将详细解析"spring+mybatis+cxf整合"这一主题,包括这三个框架的基本概念、如何整合以及整合后能实现的功能。 首先,Spring是一个开源的Java平台,它简化了开发过程,提供了强大的依赖注入(DI)和面向切面编程...

Global site tag (gtag.js) - Google Analytics