文章目录

  • 整合Mybatis
    • 方式一:
    • 方式二:
  • 声明式事务

整合Mybatis

总结步骤: 定义实体类 -> 定义对应的mapper -> 定义mapper对应的xml文件 -> 资源文件中配置mybatis相关的bean (dataSource、sqlSessionFactory、sqlSession) -> 编写实现类,注入到bean -> 测试

方式一:

ApplicationContext.xml是核心的配置文件

  1. 配置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

  1. 给接口加实现类,注册到spring
  2. 测试
方式二:
  1. 定义实现类,继承SqlSessionDaoSupport,实现所对应的mapper
  2. 通过调用getSqlSession()方法,获得 sqlSession 对象。
return getSqlSession().getMapper(UserMapper.class).getUsers();
  1. 配置bean传入sqlSessionFactory
<bean id="userMapperImpl2" class="com.zxt.mapper.UserMapperImpl2"><property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>

声明式事务

通过aop完成事务,不影响程序本身

  1. 配置数据源
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="datasource"/>
</bean>
  1. 添加约束文件
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
  1. 配置事务通知
<!--配置事务通知-->
<tx:advice id="txAdvice" transaction-manager="transactionManager"><!--给哪些方法配置事务--><tx:attributes><tx:method name="add"/><tx:method name="delete"/></tx:attributes>
</tx:advice>
  1. 配置事务切入
<!--配置事务切入-->
<aop:config><aop:pointcut id="txPointCut" expression="execution(* com.zxt.mapper.*.*(..))"/><!--切入--><aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
</aop:config>

【Spring】(4)相关推荐

  1. 【Spring】(1)Spring概述:什么是Spring框架?为什么要用Spring框架?

    两个月前跟着b站动力节点王鹤老师的Spring框架教程视频学习完了Spring框架,在学习过程中我将视频中涉及的代码都一行一行手敲了一遍,并且把Spring入门相关的资料整理了一下,在这里记录一下我在 ...

  2. 【Spring】(3)

    文章目录 组件 衍生注解 作用域 JavaConfig实现配置 动态代理 AOP 方式一:使用spring的接口 方式二:使用自定义类 方式三:使用注解实现 spring4之后,要使用注解开发,需要导 ...

  3. 【Springcloud】(06)中级搭建-OpenFeign服务调用

    [Springcloud](06)中级搭建-OpenFeign服务调用 [一]OpenFeign是什么 (1.1)Feign和OpenFeign (1.2)Feign能干什么? (1.3)Feign集 ...

  4. Android 进阶 教你打造 Android 中的 IOC 框架 【ViewInject】 (下)

    上一篇博客我们已经带大家简单的吹了一下IoC,实现了Activity中View的布局以及控件的注入,如果你不了解,请参考:Android 进阶 教你打造 Android 中的 IOC 框架 [View ...

  5. 【数据库】(三)-- mysql 数据库操作应用

    [数据库](三)-- mysql 数据库操作应用 操作说明 使用 navicat 针对 mysql 进行 sql 的使用,mysql 运行在本地的 docker 环境的应用容器中. 语法和关键字什么的 ...

  6. 【matlab图像处理笔记5】【图像变换】(四)图像的正交变换

    文章目录 推荐阅读 前言 图像正交变换简介 离散傅里叶变换 对图像进行离散傅里叶变换的作用 二维离散傅里叶变换 频谱图 示例 离散余弦变换 简介 基本原理 示例 推荐阅读 本系列其他文章 [matla ...

  7. 【matlab图像处理笔记4】【图像变换】(三)图像的霍夫变换

    文章目录 推荐阅读 前言 霍夫变换概述 霍夫变换直线检测原理 从笛卡尔坐标系到霍夫空间 两点一线的霍夫空间形式 寻找共线的点 直角坐标系存在的问题 极坐标参数空间下的霍夫变换 matlab霍夫变换直线 ...

  8. 面试-Java【之】(revers)递归实现字符串倒序排列(详解)

    面试-Java[之](revers)递归实现字符串倒序排列(详解) 实现源码详解 <目录:Java-JDBC学习> <幕> 实现源码详解 public class Test { ...

  9. python实现【冒泡排序】(bubbleSort)

    python实现[冒泡排序](bubbleSort) 算法原理介绍 冒泡排序是一种简单的排序算法.它的基本原理思想是重复地走访过要排序的数列,并且依次比较两个元素,如果它们的顺序错误就把它们的位置进行 ...

最新文章

  1. 扛鼎之作!Twitter 图机器学习大牛发表160页论文:以几何学视角统一深度学习
  2. 人工智能实践:TensorFlow笔记学习(八)—— 卷积神经网络实践
  3. python全栈开发 * 24 知识点汇总 * 180705
  4. QT打开和保存文件对话框
  5. 剑道训练很有趣的一种手段
  6. 端到端神经视频编码=A Better Trade-off ?
  7. python gui界面实例_Python界面(GUI)编程PyQt5工具栏和菜单
  8. java 23种设计模式(转载)
  9. python获取网络时间_python获取网络时间和本地时间
  10. 关于redis集群脑裂及其解决方案
  11. Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引
  12. 最简单的WebService
  13. 蚂蚁金服Java面试题、笔试题(含答案)-高级
  14. 不越狱破解A1528 iPhone5s移动联通4G网络
  15. mysqloffset什么意思_MySQL中OFFSET和FETCH的详解
  16. 微软语音包的安装及使用 Microsoft Speech SDK
  17. 函数对象,lamdda表达式,function函数包装,std::bind函数绑定
  18. spring boot 集成 websocket 实现消息主动推送
  19. word写论文时参考文献、目录以及页码设置
  20. 苹果语音输入最新资讯

热门文章

  1. ABAP TEST-SEAM 的使用方法
  2. java毕业设计夕阳红养老院系统源码+lw文档+mybatis+系统+mysql数据库+调试
  3. 东方甄选研究简报——甄选好物,新东方转型直播带货,是开始还是结束?
  4. 使用nodejs搭建你自己的专属web聊天室
  5. html5搜索框在最右侧,CSS3,HTML5和jQuery搜索框集锦
  6. 8月29日科技资讯|雷军:小米有机会重返世界前三;苹果为 Siri 泄露隐私事件致歉;Apache Tomcat 9.0.24 发布
  7. CF97C Winning Strategy
  8. Android之插件化开发
  9. 机器学习中的度量——协方差、相关系数(Pearson 相关系数)
  10. Python基础必掌握的条件语句详解