Springboot整合mabatis、Spring事务管理、

Springboot整合mabatis
整合步骤【注】
【第一步】添加依赖,创建模块的时候勾选mybatis-spring-boot-starter
【第二步】在application.yml中配置数据源连接参数
【第三步】定义Mapper接口,编写方法和SQL。在引导类使用@MapperScan()加载指定包中的所有Mapper接口。
【第四步】在都需要的地方(service层、单元测试)中注入mapper对象,调用方法。
mybatis相关配置,在配置文件中设置(重点)

# 连接数据库的环境信息
spring:
  datasource:
#    driver-class-name: com.mysql.jdbc.Driver
    driver-class-name: com.mysql.cj.jdbc.Driver  #【必须配】
    url: jdbc:mysql://localhost:3306/spring?useSSL=false&serverTimezone=Asia/Shanghai #【必须配】
    username: root #【必须配】
    password: root #【必须配】
#    type: com.alibaba.druid.pool.DruidDataSource #使用Druid连接池
    type: com.zaxxer.hikari.HikariDataSource #默认也是使用HikariDataSource连接池,可以不用配置【了解】
    hikari: #【了解】
      maximum-pool-size: 10 # 最大连接数【了解】
      minimum-idle: 3 # 最小连接数【了解】


#mybatis相关配置
mybatis:
  configuration:
    map-underscore-to-camel-case: true #开启驼峰命名映射 #【很常用】
  mapper-locations: classpath*:mapper/*Mapper.xml #加载mapper目录中所有Mapper结尾的映射配置文件#【很常用】

  type-aliases-package: com.itheima.pojo #配置别名,映射配置文件中resultType属性就可以使用别名【了解】
#  config-location: classpath:mybatis-config.xml #加载mybatis核心配置文件,如果有的话【了解】

# 设置项目的日志级别
logging:
  level:
#    root: debug  # 整个项目的debug级别的日志信息全部输出,太多了,往往不需要这么多。
    com.itheima.mapper: debug  # 整个项目的debug级别的日志信息全部输出,太多了,往往不需要这么多。 #【很常用】

Spring事务管理
需求:银行转账
基础业务实现
配置初始化库
【第一步】将DDL语句(创建数据库和表)定义到resources/schema.sql中,将DML语句(增删改)定义resources/data.sql中。
【第二步】在application.yml中开启SQL初始化
事务管理-快速入门
在类/接口/方法上使用@Transactional注解开启事务管理
事务原理
pring底层会使用AOP给service创建代理对象,我们使用的实际是代理对象,在代理对象内部使用JdbcTransactionManager对象来管理事务,包括开启事务、提交事务、回滚事务这三个操作

拔高-事务失效(编译期异常所致)
-rollbackFor解决
场景:在业务层方法中抛出了编译期异常
解决:需在@Transactional注解中使用rollbackFor属性指定要回滚的异常。@Transactional(rollbackFor = Exception.class)
拔高-事务失效(捕获异常所致)
场景:在业务层方法中对异常进行了try…catch处理,代理对象感知不到异常
解决:业务方法内不要捕获异常或者将捕获的异常重新抛出。
拔高-事务的传播行为
拔高-传播行为失效
场景:当我们业务层方法直接调用了本类方法,相当于使用this调用,this表示目标对象,使用目标对象调用方法就会导致事务的传播行为失效。
解决:在业务类中注入service的代理对象,使用代理对象调用方法。此时可能会有set方式循环依赖产生,需要我们在application.yml中配置运行set方式循环依赖。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值