前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring笔记(3)

Spring笔记(3)

作者头像
全栈程序员站长
发布2021-12-23 18:34:23
1960
发布2021-12-23 18:34:23
举报
文章被收录于专栏:全栈程序员必看

一、JDBC Template基本使用

1.开发步骤

1.1直接使用template

1.2使用Spring容器注入template

2.CRUD操作

增,删,改:update

代码语言:javascript
复制
int rows = template.update("insert into account values(?,?)", "jack", 300);

查:query(结果为list集合)

代码语言:javascript
复制
	List<Account> accountList = template.query(sql, new BeanPropertyRowMapper<Account>(Account.class));

queryForObject(结果为 对象)

代码语言:javascript
复制
	Account account = template.queryForObject(sql, new BeanPropertyRowMapper<Account>(Account.class));

queryForObject(结果为数字)

代码语言:javascript
复制
	Integer integer = template.queryForObject("select count(*) from account", Integer.class);

二、Spring的事务控制

1.编程事务控制相关对象

管理+定义 = 状态

1.1 PlatformTransactionManager 事务平台管理器 接口(需要配置)

实现根据不同的dao层技术来实现

​ ①、TransactionStatus getTransaction(TransactionDefinition definition) ,事务管理器 通过TransactionDefinition,获得“事务状 态”,从而管理事务。

​ ②、void commit(TransactionStatus status) 根据状态提交

​ ③、void rollback(TransactionStatus status) 根据状态回滚

1.2.TransactionDefinition 事务定义 接口(需要配合)

  • ​ 设置事务隔离级别
  • ​ 设置事务传播行为

​ Spring中的7个事务传播行为:

—-

如果A调用B 假设A.., 则….

PROPAGATION_REQUIRED

支持当前事务,假设当前没有事务。就新建一个事务

PROPAGATION_SUPPORTS

支持当前事务,假设当前没有事务,就以非事务方式运行

PROPAGATION_MANDATORY

支持当前事务,假设当前没有事务,就抛出异常

PROPAGATION_REQUIRES_NEW

新建事务,假设当前存在事务。把当前事务挂起

PROPAGATION_NOT_SUPPORTED

以非事务方式运行操作。假设当前存在事务,就把当前事务挂起

PROPAGATION_NEVER

以非事务方式运行,假设当前存在事务,则抛出异常

PROPAGATION_NESTED

如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。

超时时间

是否只读

1.3.TransactionStatus 事务状态(被动 不需要配置)

名称

说明

void flush()

刷新事务

boolean hasSavepoint()

获取是否存在保存点

boolean isCompleted()

获取事务是否完成

boolean isNewTransaction()

获取是否是新事务

boolean isRollbackOnly()

获取是否回滚

void setRollbackOnly()

设置事务回滚

2.基于XML的声明式事务控制

2.1作用

业务代码事务控制通过 事务配置 的方式进行松耦合

2.3方法

​ 采用AOP的思想:切点(业务)

通知(事务控制)

​ 将业务进行增强,从而达成事务配置,并且松耦合

2.4步骤

代码语言:javascript
复制
    <!--    配置织入-->
    <aop:config>
        <aop:advisor advice-ref="txAdvice" pointcut="execution(* Service.Impl.*.*(..))"></aop:advisor>
    </aop:config>

3.基于注解的声明式事务控制

注意:

  1. 使用@Transactional在需要进行事务控制的或者方法上修饰,注解也可配入事务定义信息
  2. 注解使用在类上,那么该类下的所有方法都是用同一套注解参数配置
  3. xml配置文件中要开启事务注解驱动注解扫描
代码语言:javascript
复制
<tx:annotation-driven/>

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/115199.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年11月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、JDBC Template基本使用
    • 1.开发步骤
      • 1.1直接使用template
      • 1.2使用Spring容器注入template
    • 2.CRUD操作
    • 二、Spring的事务控制
      • 1.编程事务控制相关对象
        • 1.1 PlatformTransactionManager 事务平台管理器 接口(需要配置)
        • 1.2.TransactionDefinition 事务定义 接口(需要配合)
        • 1.3.TransactionStatus 事务状态(被动 不需要配置)
      • 2.基于XML的声明式事务控制
        • 2.1作用
        • 2.3方法
        • 2.4步骤
      • 3.基于注解的声明式事务控制
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档