当前位置: 首页 > news >正文

学习笔记13——Spring整合Mybatis、junit、AOP、事务

学习笔记系列开头惯例发布一些寻亲消息

链接:https://baobeihuijia.com/bbhj/

Mybatis - Spring(使用第三方包new一个对象bean)

  • 原始的Mybatis与数据库交互【通过sqlmapconfig来配置和连接】

    • 初始化SqlSessionFactory
    • 获得连接
    • 获取数据层接口
      • 需要一个类与数据中的数据进行匹配
      • 用注解形式进行增删改查
    • 关闭连接
  • 使用第三方包Spring-Mybatis,将mybatis改为spring的模式,不要再类内new SqlSessionFactory,而是把mybatis当作容器的对象可以用

    • 引入mybatis-spring第三方包来帮助整合,在注解方法中,如果要用第三方包则需要新建一个config然后在这个类中手动new一个bean
    • 通过Bean生成一个SqlSessionFactoryBean对象(加入扫描类型的包),与数据源建立连接
    • 生成MapperScannerConfigurer对象,获取数据层
    • 因此就可以通过注解的方式生成对象调用数据库了
    public class MybatisConfig {//定义bean,SqlSessionFactoryBean,用于产生SqlSessionFactory对象@Beanpublic SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();ssfb.setTypeAliasesPackage("com.itheima.domain");ssfb.setDataSource(dataSource);return ssfb;}//定义bean,返回MapperScannerConfigurer对象@Beanpublic MapperScannerConfigurer mapperScannerConfigurer(){MapperScannerConfigurer msc = new MapperScannerConfigurer();msc.setBasePackage("com.itheima.dao");return msc;}
    }
    

Junit-Spring(添加注解)

  • Junit与spring的整合(在测试类上添加注解,然后在类内直接@Autowired就可以将容器的对象引入测试)

    //设置类运行器
    @RunWith(SpringJUnit4ClassRunner.class)
    //设置Spring环境对应的配置类
    @ContextConfiguration(classes = SpringConfig.class)
    

AOP-Spring

新建一个class作为component,并且标记该类不是普通的类,是AOP类,打开config的AOP扫描

一般用在service拦截判断,拦截一批处理一批,然后将正确数据传入数据层

务方

[外链图片转存中…(img-OBMznC6o-1703559380919)]

  • 有些异常默认不参与回滚:需要@Transactional的时候手动添加

  • 事务传播行为有七种:REQUIRES_NEW是让该事务协调员不加入到事务管理员,而是自己开一个事务,失败了不会跟着回滚

    @Transactional(propagation = Propagation.REQUIRES_NEW)
    

    在这里插入图片描述

相关文章:

  • Web前端框架全景:流行选择与技术趋势
  • Java集合/泛型篇----第三篇
  • react中的类(有状态)组件,函数(无状态)组件·示例,对比及组件样式引用方案(附代码)
  • springBoot2.3-基本介绍及入门案例
  • CDH 6.3.2集成flink 1.18 zookeeper版本不匹配Flink-yarn启动失败
  • 通信原理课设(gec6818) 007:语音识别
  • 【算法题】30. 串联所有单词的子串
  • 如何使用ArcGIS Pro将Excel表转换为SHP文件
  • 14.用户管理
  • CentOS 5/6/7 基于开源项目制作openssh 9.6p1 rpm包—— 筑梦之路
  • 小程序wx:if 和hidden的区别?
  • Spring Data Redis对象缓存序列化问题
  • K8S Helm 安装ingress-nginx/ingress-nginx
  • 阿里云ECS云服务器优势整理(共9点)
  • LabVIEW在大型风电机组状态监测系统开发中的应用
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 收藏网友的 源程序下载网
  • 2017 前端面试准备 - 收藏集 - 掘金
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Angular 2 DI - IoC DI - 1
  • canvas 绘制双线技巧
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • es6--symbol
  • extjs4学习之配置
  • java8 Stream Pipelines 浅析
  • JavaScript 奇技淫巧
  • Redis在Web项目中的应用与实践
  • tab.js分享及浏览器兼容性问题汇总
  • Web标准制定过程
  • 从0到1:PostCSS 插件开发最佳实践
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 从零开始的无人驾驶 1
  • 复习Javascript专题(四):js中的深浅拷贝
  • 利用jquery编写加法运算验证码
  • 深入浏览器事件循环的本质
  • 数据仓库的几种建模方法
  • 协程
  • 学习ES6 变量的解构赋值
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 正则与JS中的正则
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • (4)STL算法之比较
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (南京观海微电子)——I3C协议介绍
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (算法)Travel Information Center
  • (一)80c52学习之旅-起始篇
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (原創) 未来三学期想要修的课 (日記)
  • (转)菜鸟学数据库(三)——存储过程
  • (转)甲方乙方——赵民谈找工作
  • . Flume面试题