spring(2)

spring的优势

  1. spring是一个框架,是一个生态圈,其扩展了许多不同的领域,例如web项目、移动项目等。
  2. spring的三大核心也是其优势点
    1. IOC控制反转
    2. AOP面相切片编程
    3. 容器使用
  3. spring是一套框架,不依赖于任何应用服务器,所以做到了write once,run anywhere
  4. 封装了内置tomcat容器,也设置了jdbc,同时使用mybatis实现数据持久层与数据库的简单链接
pom.xml   //导入mybatis  jar包的中央仓库坐标
//加入jdbc驱动
<dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-jdbc
         </artifactId>
</dependency>

//整合mybatis
<dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter
        </artifactId>
        <version>2.1.0</version>
</dependency>
application.yml  
//配置mysql启动配置项
spring:
 datasource:
  ##获取连接的参数 driver  url username password
  driver-class-name: com.mysql.cj.jdbc.Driver
  url: jdbc:mysql://localhost:port/库名?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
  username: username
  password: password
//配置mybatis的映射文件等
mybatis:
 ##映射文件{sql文件}
  type-aliases-package: type-aliases-package #设置实体类别名
  mapper-locations: classpath:mapper/*Mapper.xml
  configuration:
   log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

然后就开始创建mapper层创建mapper接口,然后在resource中创建对应的映射文件

有两种方式

  1. 如果没有在yml文件中配置
mapper-locations: classpath:mapper/*Mapper.xml

在需要再resource下创建和src中的mapper文件路径一样的文件夹,
然后创建相应的xml的文件

  1. 如果在yml文件中配置
mapper-locations: classpath:mapper/*Mapper.xml

那么不需要和src下的mapper文件路径相同,直接创建相应的mapper文件夹
在这里插入图片描述

spring事务

  1. sping事务:在业务层(service)与持久层(mapper或者dao层)进行交互的时候,尤其时在进行增删改的操作,因为查询操作不需要对数据库进行数据更改操作,只需要返回某情况(where sort limit)情况下的数据。在增删改的时候,通常会涉及到多个表单数据更改,
class serviceImpl{
	@Autowired
	private Mapper mapper;
	
	//删除某电影类型的时候,还需要把涉及到此类别的电影进行类型修改
	//只是演示事务的概念,有不对的希望指出,谢谢! 
	//可能类型删除完毕,但是对于对应的电影无法进行修改,这个时候是无法完成该操作的,我们希望的是两个操作同时执行或者同时不执行并且报错,  简称事务回滚操作, 这时候,我们使用@Transactional注解该方法,有一个操作不完成则不继续进行,回滚到整个方法开始,躲避与持久层的交互出现的错误。
	public boolean delete(Movie movie){
			//删除对应类型
			mapper.deleteType(movie.getType());
			//删除电影中的该类型
			mapper.updateMovie(movie);
	}
}
  1. 事务分为编程式事务与声明式事务。
  2. 声明式事务:通过@Transactional注解完成事务定义。
    - 实现过程:
在运行@SringbootApplication的启动类后,该启动类会加载两个注解@EnableAutoConfiguration@Conponent注解,扫描包内的全部组件,进行bean初始化,在这个时候,拥有@Transactional注解的类会生成一个代理对象,代理对象变为bean注入ioc容器当做bean的时候,会提前进行事务操作。

@Transactional(propagation = Propagation.REQUIRES_NEW)

spring事务的传播机制

  1. 什么是传播机制
不同方法之间进行调用的时候,如何进行**事务**的选取
  1. 传播机制都有哪些
class A{ 
	public void a(){}
}
class B{ 
	public void b(){}
}

@Transactional(propagation = Propagation.事务处理方法)
使用声明式事务时,需要配置使用事务的类对于事务的调用方法,使用propagation = Propagation.事务传播方法

🎏事务方法

🎈REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
🎈SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。
🎈MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。
🎈REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。
🎈NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
🎈NEVER:以非事务方式执行,如果当前存在事务,则抛出异常
🎈NESTED:支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。
3. 怎么进行传播机制的设置

@Transactional(propagation = Propagation.事务处理方法)

spring事务的隔离级别

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值