通过ios技术,将mybatis和Spring集成在一起,

ioc能创建对象,可以把mybatis框架中的对象就给spring统一创建,开发人员从spring中获取对象

开发人员就不用同时面对两个或多个框架了,就面对一个spring

实现步骤

1.新建maven项目

2.加入maven依赖

1.spring依赖

2.mybatis依赖

3.mysql驱动

4.spring的事务的依赖

5.mybatis和spring集成的依赖(mybatis官方提供过的,用来创建mybatis中的SqlSessionFactory,dao对象的)

6.jdbc的依赖(不加容易出错)

3.创建实体类

4.创建dao接口和mapper对象

5.创建mybatis主配置文件

6.创建Service的配置文件:声明mybatis的对象交给spring创建

7.创建spring的配置文件:声明mybatis的对象交给spring创建

1.数据源

2.SqlsessionFactory

3.dao对象

4.声明自定义的service

8.创建测试类,获取Service对象,通过service调用dao完成数据库的访问

spring框架中提供事务处理方案

1.适合中小项目使用的,注解方案

使用@Transactional的步骤(加在共有方法上)

1.需要声明事务管理器对象

<bean id="xx" class="DataSourceTransactionManagerj">

2.开启事务注解驱动,告诉Spring框架,我要使用注解的方式管理事务

spring使用aop机制,创建@Transactional所在的类代理对象,给方法加入事务的功能。

spring给业务方法加入事务

@Around(“需要增加的事务功能的业务方法名称 ”)

Object myAround(){

//开启事务

try{

buy(1001,10);

spring的事务管理.commit();

}catch(Exception e){

spring的事务管理.rollback();

}

}

3.在你的方法的上面加入@Trancational

@Transactional(

    //以下全都是默认值,可不写

    propagation = Propagation.REQUIRED,

    isolation = Isolation.DEFAULT,

    readOnly = false,

    rollbackFor = {

        NullPointerException.class, NotEnughExecption.class

    }

)

 

默认的类型

//

propagation = Propagation.REQUIRED,

//

isolation = Isolation.DEFAULT,

//只读

readOnly = false,

//异常数组

rollbackFor = {

    // NullPointerException.class, NotEnughExecption.class

}

其中rollbackFor:表示发生指定的异常一定回滚

处理逻辑是:

1)spring框架会首先检查方法抛出的异常是不是在rollbackFor列表中

如果在rollbackFor列表中,不管是什么类型,一定回滚

2)如果抛出的异常不在列表中,spring会判断异常是不是runtimeException

如果是一定回滚

2.适合大型项目,有很多类,方法,需要大量配置事物的,使用aspectJ框架,在spring的配置文件中声明类,
方法需要的业。这种业务方式方法的事务配置完全分离。且都是在配置文件中实现的

1.如果使用aspectJ框架,首先要添加aspectJ依赖

2.需要声明事务管理器对象(只要做事务,必须要有事务管理器)

<bean id="xx" class="DataSourceTransactionManagerj">

3.声明方法需要的事务类型(配置方法的事务属性【隔离界别,传播行为,超时】

<!-- 第二种方式使用aspectJ开启事务 -->

<tx:advice id = "myAdvice" transaction-manager="transationManager">

  <!-- tx:attributes :配置事务属性 -->

  <tx:attributes>

    <tx:method name="buy" propagation="REQUIRED" isolation="DEFAULT"

    rollback-for="java.lang.NullPointerException,com.my.execpt.NotEnughExecption"/>

    <!-- name属性中可以使用*通配符 -->

 

  </tx:attributes>

</tx:advice>

4.配置aop,指定哪些类要创建代理

<!-- 配置aop -->

<aop:config>

  <!-- 配置切入点表达式:指定包中 id:切入点的id,唯一值  expression:切入点表达式,指定那些类需要事务-->

  <aop:pointcut id="servicept" expression="execution(* *..service..*.*(..))"/>

 

  <aop:advisor advice-ref="myAdvice" pointcut-ref="servicept" />

</aop:config>

在wab中添加监听器,防止spring容器的配位文件每次都创建一个新的

1.增加依赖

<groupid>org.springframework</groupid>

<artifactId>spring-web</artfactId>

<version>5.2.5.RELEASE</version>

2.注册监听器ContextLoaderListener(在web.xml中添加)

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

3.修改默认路径(在web.xml中添加)

<context-param>

	<param-name>contextConfigLocation</param-name>

	<param-value>classpath:spring.xml</param-value>

</context-param>

 
文章作者: 郭远
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 郭远的博客空间
Spring Spring
喜欢就支持一下吧
打赏
微信 微信
支付宝 支付宝