【Spring】(4)
文章目录
- 整合Mybatis
- 方式一:
- 方式二:
- 声明式事务
整合Mybatis
总结步骤: 定义实体类 -> 定义对应的mapper -> 定义mapper对应的xml文件 -> 资源文件中配置mybatis相关的bean (dataSource、sqlSessionFactory、sqlSession) -> 编写实现类,注入到bean -> 测试
方式一:
ApplicationContext.xml
是核心的配置文件
- 配置mybatis
<!--spring要操作数据库需要spring-jdbc依赖-->
<!--数据源:使用Spring的数据源替换mybatis的配置-->
<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false"/><property name="username" value="root"/><property name="password" value="123456"/>
</bean><!--sqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="datasource"/><!--绑定mybatis配置文件--><property name="configLocation" value="classpath:mybatis-config.xml"/><property name="mapperLocations" value="classpath:com/zxt/mapper/*.xml"/>
</bean><!--这就是sqlSession,通过构造器注入第1个参数(sqlSessionFactory),因为没有setter-->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"><constructor-arg index="0" ref="sqlSessionFactory"/>
</bean>
第1个 bean 构建数据源,用到的类为org.springframework.jdbc.datasource.DriverManagerDataSource
第2个 bean 构建 sqlSessionFactory,用到的类为org.mybatis.spring.SqlSessionFactoryBean
第3个 bean 构建 sqlSession,用到的类为org.mybatis.spring.SqlSessionTemplate
- 给接口加实现类,注册到spring
- 测试
方式二:
- 定义实现类,继承
SqlSessionDaoSupport
,实现所对应的mapper - 通过调用
getSqlSession()
方法,获得 sqlSession 对象。
return getSqlSession().getMapper(UserMapper.class).getUsers();
- 配置bean传入sqlSessionFactory
<bean id="userMapperImpl2" class="com.zxt.mapper.UserMapperImpl2"><property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
声明式事务
通过aop完成事务,不影响程序本身
- 配置数据源
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="datasource"/>
</bean>
- 添加约束文件
xmlns:tx="http://www.springframework.org/schema/tx"<!--xsi:schemaLocation里加-->
http://www.springframework.org/schema/tx
https://www.springframework.org/schema/tx/spring-aop.xsd
- 配置事务通知
<!--配置事务通知-->
<tx:advice id="txAdvice" transaction-manager="transactionManager"><!--给哪些方法配置事务--><tx:attributes><tx:method name="add"/><tx:method name="delete"/></tx:attributes>
</tx:advice>
- 配置事务切入
<!--配置事务切入-->
<aop:config><aop:pointcut id="txPointCut" expression="execution(* com.zxt.mapper.*.*(..))"/><!--切入--><aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
</aop:config>
【Spring】(4)相关推荐
- 【Spring】(1)Spring概述:什么是Spring框架?为什么要用Spring框架?
两个月前跟着b站动力节点王鹤老师的Spring框架教程视频学习完了Spring框架,在学习过程中我将视频中涉及的代码都一行一行手敲了一遍,并且把Spring入门相关的资料整理了一下,在这里记录一下我在 ...
- 【Spring】(3)
文章目录 组件 衍生注解 作用域 JavaConfig实现配置 动态代理 AOP 方式一:使用spring的接口 方式二:使用自定义类 方式三:使用注解实现 spring4之后,要使用注解开发,需要导 ...
- 【Springcloud】(06)中级搭建-OpenFeign服务调用
[Springcloud](06)中级搭建-OpenFeign服务调用 [一]OpenFeign是什么 (1.1)Feign和OpenFeign (1.2)Feign能干什么? (1.3)Feign集 ...
- Android 进阶 教你打造 Android 中的 IOC 框架 【ViewInject】 (下)
上一篇博客我们已经带大家简单的吹了一下IoC,实现了Activity中View的布局以及控件的注入,如果你不了解,请参考:Android 进阶 教你打造 Android 中的 IOC 框架 [View ...
- 【数据库】(三)-- mysql 数据库操作应用
[数据库](三)-- mysql 数据库操作应用 操作说明 使用 navicat 针对 mysql 进行 sql 的使用,mysql 运行在本地的 docker 环境的应用容器中. 语法和关键字什么的 ...
- 【matlab图像处理笔记5】【图像变换】(四)图像的正交变换
文章目录 推荐阅读 前言 图像正交变换简介 离散傅里叶变换 对图像进行离散傅里叶变换的作用 二维离散傅里叶变换 频谱图 示例 离散余弦变换 简介 基本原理 示例 推荐阅读 本系列其他文章 [matla ...
- 【matlab图像处理笔记4】【图像变换】(三)图像的霍夫变换
文章目录 推荐阅读 前言 霍夫变换概述 霍夫变换直线检测原理 从笛卡尔坐标系到霍夫空间 两点一线的霍夫空间形式 寻找共线的点 直角坐标系存在的问题 极坐标参数空间下的霍夫变换 matlab霍夫变换直线 ...
- 面试-Java【之】(revers)递归实现字符串倒序排列(详解)
面试-Java[之](revers)递归实现字符串倒序排列(详解) 实现源码详解 <目录:Java-JDBC学习> <幕> 实现源码详解 public class Test { ...
- python实现【冒泡排序】(bubbleSort)
python实现[冒泡排序](bubbleSort) 算法原理介绍 冒泡排序是一种简单的排序算法.它的基本原理思想是重复地走访过要排序的数列,并且依次比较两个元素,如果它们的顺序错误就把它们的位置进行 ...
最新文章
- 扛鼎之作!Twitter 图机器学习大牛发表160页论文:以几何学视角统一深度学习
- 人工智能实践:TensorFlow笔记学习(八)—— 卷积神经网络实践
- python全栈开发 * 24 知识点汇总 * 180705
- QT打开和保存文件对话框
- 剑道训练很有趣的一种手段
- 端到端神经视频编码=A Better Trade-off ?
- python gui界面实例_Python界面(GUI)编程PyQt5工具栏和菜单
- java 23种设计模式(转载)
- python获取网络时间_python获取网络时间和本地时间
- 关于redis集群脑裂及其解决方案
- Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引
- 最简单的WebService
- 蚂蚁金服Java面试题、笔试题(含答案)-高级
- 不越狱破解A1528 iPhone5s移动联通4G网络
- mysqloffset什么意思_MySQL中OFFSET和FETCH的详解
- 微软语音包的安装及使用 Microsoft Speech SDK
- 函数对象,lamdda表达式,function函数包装,std::bind函数绑定
- spring boot 集成 websocket 实现消息主动推送
- word写论文时参考文献、目录以及页码设置
- 苹果语音输入最新资讯
热门文章
- ABAP TEST-SEAM 的使用方法
- java毕业设计夕阳红养老院系统源码+lw文档+mybatis+系统+mysql数据库+调试
- 东方甄选研究简报——甄选好物,新东方转型直播带货,是开始还是结束?
- 使用nodejs搭建你自己的专属web聊天室
- html5搜索框在最右侧,CSS3,HTML5和jQuery搜索框集锦
- 8月29日科技资讯|雷军:小米有机会重返世界前三;苹果为 Siri 泄露隐私事件致歉;Apache Tomcat 9.0.24 发布
- CF97C Winning Strategy
- Android之插件化开发
- 机器学习中的度量——协方差、相关系数(Pearson 相关系数)
- Python基础必掌握的条件语句详解