Spring-JDBC

#2020云栖大会#阿里云海量offer来啦!投简历、赢阿里云限量礼品及阿里云ACA认证免费考试资格!>>> hot3.png

4f681d45b6b357190ae64335ebf6bdde3d9.png 272e8da57f6e9616a59f3706e8e5328b22b.png Spring的JDBC模板



19d02e68553ccf7db82f84411912f773d10.gif cd086d074f14f782ddc4af763d3471501ad.gif
  1. JDBC模板

    1. 什么是JDBC模板

    2. 创建项目

    3. 测试

  2. IOP-DI改写

  3. CRUD操作

  4. 事务操作

    1. Spring的事务管理的API

    2. 各API之间的联系

    3. 事务的传播行为

    4. 事务使用





0 1 JDBC模板基本使用


038eaf83c1b245c992f4eb29a0540a9730d.gif


SpringJDBC模板是什么?



Spring是EE开发的一站式的框架,有EE开发的每层的解决方案。

Spring对持久层也提供了解决方案:ORM模块和JDBC的模板。

Spring提供了很多的模板用于简化开发,有基础的JDBC模板相当于DBUtils,使用Hibernate也有简化使用Hibernate的模板




创建项目



Spring基础包


445992f3e025f2f226140583e75acda9480.png


JDBC模板包及数据库驱动包


734dc9f3aae4e2deb18f6c35a5c37769328.png


创建数据库和表


dc248af529af5a1097a282797c006b0e866.jpg



测试类使用模板


ac451087d73658b432d2a9422d66a350403.png


成功插入


0066d4e06d4b686877ad01a1686d16db2e4.jpg

5d2d538f74cbbc630360b315308d2742ae2.gif




02 使用IOC-DI


038eaf83c1b245c992f4eb29a0540a9730d.gif


上面测试代码中有两处创建对象

760e508333e8acb85944fd96b264b7a388b.png


将他们交给Spring来创建


8e6438b5ec7626ee81712182520bba6b4cc.jpg


使用注解


a486bcb2f70f3085f4e9e1d9fbe73668ca2.png



还可以将数据库信息使用属性配置文件


jdbc.properties

d6f067737f0da3d38c95fbdab92715a6551.png


加载属性配置文件,再使用el表达式引用

2636229bb1e3676ea46f660beab7ce014ee.jpg


5d2d538f74cbbc630360b315308d2742ae2.gif




03 CRUD操作


038eaf83c1b245c992f4eb29a0540a9730d.gif


插入


dad5ac232abc119213c8c017f922bf36f10.jpg


删除


f368fa081dba7567ca9d0e5224a751c652c.jpg


修改


fb59cdbfa827e23f3da4de26183c4f953eb.jpg


查询单字段


068cd3433196c4722b9f0f0fc41d4c89f7a.jpg


单行记录(封装对象)


16aba9542b6499a781f694536b001d11368.jpg


多条(封装集合)


d122be67a5132b488669509129af9890ea1.jpg




5d2d538f74cbbc630360b315308d2742ae2.gif



04 事务操作


038eaf83c1b245c992f4eb29a0540a9730d.gif


Spring的事务管理的API



1.PlatformTransactionManage

平台事务管理器 是一个接口,下面有两个实现类


DataSourceTransactionManager

底层使用JDBC管理事务


HibernateTransactionManager

底层使用Hibernate管理事务




2.TransactionDefinition

事务定义信息:用于定义事务的相关的信息,隔离级别、超时信息、传播行为、是否只读



3.TransactionStatus

事务状态:用于记录在事务管理过程中,事务的状态的对象。



各API之间的联系


Spring进行事务管理的时候,首先平台事务管理器根据事务定义信息进行事务的管理,

在事务管理过程中,产生各种状态,将这些状态的信息记录到事务状态的对象中。



事务的传播行为


意思是在事务中又调用了其他方法,而方法中也包含事务,事务中包含事务


Spring中提供了了七种方式处理传播行为

保证多个操作在同一个事务中PROPAGATION_REQUIRED默认值,如果A中有事务,使用A中的事务,如果A没有,创建一个新的事务,将操作包含进来
PROPAGATION_SUPPORTS支持事务,如果A中有事务,使用A中的事务。如果A没有事务,不使用事务。
PROPAGATION_MANDATORY如果A中有事务,使用A中的事务。如果A没有事务,抛出异常。
保证多个操作不在同一个事务中PROPAGATION_REQUIRES_NEW如果A中有事务,将A的事务挂起(暂停),创建新事务,只包含自身操作。如果A中没有事务,创建一个新事务,包含自身操作。
PROPAGATION_NOT_SUPPORTED

如果A中有事务,将A的事务挂起。不使用事务管理。

PROPAGATION_NEVER 如果A中有事务,报异常
嵌套式事务PROPAGATION_NESTED

嵌套事务,如果A中有事务,按照A的事务执行,执行完成后,设置一个保存点

执行B中的操作,如果没有异常,执行通过,如果有异常,可以选择回滚到最初始位置,也可以回滚到保存点



使用事务



编程式事务


配置事务管理和事务管理模板

9f02a9fcdf00bf8f931fb399a75db1d5944.jpg


使用

e53d705496c2dc539685e83383009a9010a.jpg



xml配置事务(aop给方法增强事务)


配置事务通知,再配置aop给transferMoney方法添加通知


aa8edf318540d405e390f6249f6b5561766.jpg

0f5095997ae83e565d15de5635b23857454.png




注解方式


annotation-driven开启注解方式,传入事务平台管理器,在业务类上开启注解

209a7ef3866b3e66aa2156959c0e2a20d9e.png

2c7ddab8e336f800732ba838485fcf71ea0.png

无论哪一种首先将事务管理器交给Spring

5d2d538f74cbbc630360b315308d2742ae2.gif

本文分享自微信公众号 - IT那个小笔记(qq1839646816)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

posted @ 2019-10-02 00:45  木瓜煲鸡脚  阅读(21)  评论(0)    收藏  举报