视频链接:https://www.bilibili.com/video/BV1q94y1o7ts?vd_source=9545770e4a2968c05878ffac8589ec6c
视频选集:P77— P101
将MyBatis与 Spring进行整合,主要解决的问题就是将 SqlSessionFactory对象交由Spring来管理。所以,该整合只需要将SqlSessionFactory的对象生成器SqlSessionFactoryBean注册在 Spring 容器中,再将其注入给Dao 的实现类即可完成整合。实现 Spring 与 MyBatis的整合。常用的方式:扫描的 Mapper动态代理。Spring 像插线板一样,mybatis框架是插头,可以容易的组合到一起。插线板spring插上 mybatis,两个框架就是一个整体。



添加的依赖:



build:



最终效果:

File->Settings


最终效果:

这个文件主要是:

拷贝jdbc.propertiest属性文件到resources目录下


编写applicationContext_mapper. xml文件:

然后根据applicationContext_mapper. xml文件修改SqlMapConfig.xml文件:【两套配置会冲突】


先创建文件:


编写:


创建接口:

在同一目录下,定义相同名字的xml文件:【使用模板】



定义接口:

实现类:

在service.xml文件中导入mapper.xml文件


运行结果:


创建账户类:

在mapper中创建接口:

在同一目录下,定义相同名字的xml文件:【使用模板】

在service中创建接口:

实现类:

测试:


当项目中出现问题时候,数据依然能增加成功


我们希望无论出现什么错误都不添加:添加注解事务


然后再进行插入数据:【虽然显示插入成功,但是后面依然撤销】

如何在当前事务中规定,发生错误不撤销



使用数据库默认的隔离级别isolation = Isolation.DEFAULT


事务管理器用来生成相应技术的连接+执行语句的对象.

注意:使用了DataSourceTransactionManager就可以生成SqlSession,然后完成提交和回滚
多个事务之间的合并,互斥等都可以通过设置事务的传播特性来解决.


项目中的所有事务,必须添加到业务逻辑层上
UsersServiceoImpl为A事务,AccountsServiceImpl为B事务,现在让A事务包含B事务
在A事务中做改变:

在B事务中先将@Transactional注销掉

测试:
A和B都没有事务
测试Users【因为A事务包含B事务】

没有事务控制,两个都插入成功,虽然在控制台报错
A无事务,B有REQUIRED

A插入成功,B回滚,没有插入成功
A有REQUIRED,B无事务

A,B都没成功,都回滚了
后面的和前面的操作方式类似,最终汇总:

注解式事务可能对一个类中的所有的方法都影响
Spring非常有名的事务处理方式.声明式事务.要求项目中的方法命名有规范

配置事务切面时可以使用通配符*来匹配所有方法
新的配置文件的框架:

编写后:

将注解全去掉:


测试:

还可以加不回滚:

在某个类中通过注解屏蔽声明式设定【近水楼台先得月】,局部影响到整体

设置局部的优先级:

设置全局优先级:













AspectJ框架:



















