最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring學(xué)習(xí)JdbcTemplate數(shù)據(jù)庫事務(wù)管理

 更新時(shí)間:2022年05月30日 10:25:08   作者:把蘋果咬哭的測(cè)試筆記  
這篇文章主要為大家介紹了spring學(xué)習(xí)JdbcTemplate數(shù)據(jù)庫事務(wù)管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

spring JdbcTemplate數(shù)據(jù)庫事務(wù)管理

現(xiàn)在有個(gè)賬戶表,里面存著用戶金額。

如果要真正地做好轉(zhuǎn)賬的操作,就要用到事務(wù),否則當(dāng)出現(xiàn)異常后會(huì)出現(xiàn)數(shù)據(jù)不一致等問題。

try {
  // 第一步 開啟事務(wù)
  // 第二步 進(jìn)行業(yè)務(wù)操作
  // 第三步 沒有發(fā)生異常,提交事務(wù)
} catch(){
  // 第四步 發(fā)生異常,事務(wù)回滾
}

一、spring 中的事務(wù)管理

通常,把事務(wù)加在 service 層(業(yè)務(wù)邏輯層)。

而在 spring 中管理事務(wù)可以有 2 種方式實(shí)現(xiàn):

  • 編程式管理:就像上面?zhèn)未a那樣,這種使用起來不方便。
  • 聲明式管理:通過配置方式實(shí)現(xiàn),推薦使用。其中,可以基于 XML 方式進(jìn)行配置,也可以基于注解,顯然后者更方便。

在 spring 中進(jìn)行聲明式事務(wù)管理,底層使用的是 AOP 原理。

二、spring 事務(wù)管理 API

spring 提供了一個(gè)接口 PlatformTransactionManager ,代表事務(wù)管理器。此接口針對(duì)不同的框架提供不同的實(shí)現(xiàn)類。

利用idea工具,展開結(jié)構(gòu),使用 jdbcTemplate 用到的是 DataSourceTransactionManager 。

三、使用事務(wù)管理

1. 配置文件

創(chuàng)建事務(wù)管理器。

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!--注入數(shù)據(jù)源-->
        <property name="dataSource" ref="dataSource"></property>
    </bean>

開啟事務(wù)注解,使用名稱空間 tx

<!--開啟事務(wù)注釋-->
    <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>

2. 類上添加事務(wù)注解

注解 @Transactional 可以加在 service 類上,也可以加到方法上:

加到類上,表示類下所有的方法都添加了事務(wù)。加到方法,表示只有該方法添加事務(wù)。

@Service
@Transactional
public class UserService {
    @Autowired
    private UserDao userDao;
    // 轉(zhuǎn)賬方法
    public void accountMoney() {
        // 大周 少 100
        userDao.reduceMoney();
        // 模擬異常
        int i = 1/0;
        // 小毛 加 100
        userDao.addMoney();
    }
}

接口實(shí)現(xiàn)類 UserDaoImpl 。

@Repository
public class UserDaoImpl implements UserDao {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Override
    public void addMoney() {
        String sql = "update t_account set money=money+? where username=?";
        jdbcTemplate.update(sql, 100, "小毛");
    }
    @Override
    public void reduceMoney() {
        String sql = "update t_account set money=money-? where username=?";
        jdbcTemplate.update(sql, 100, "大周");
    }
}

到測(cè)試類里執(zhí)行一下:

public class TestTrans {
    @Test
    public void testJdbc() {
        ApplicationContext context =
                new ClassPathXmlApplicationContext("bean1.xml");
        UserService userService = context.getBean("userService", UserService.class);
        userService.accountMoney();
    }
}

注意,上面的 service 里我手動(dòng)添加了異常,所以執(zhí)行后,事務(wù)應(yīng)該是要回滾操作,2 個(gè)人的金額仍然各是 1000 。

八月 07, 2021 10:39:57 上午 com.alibaba.druid.pool.DruidDataSource info
信息: {dataSource-1} inited
java.lang.ArithmeticException: / by zero

刷新數(shù)據(jù)表。

現(xiàn)在我去掉 service 類中的異常 int i = 1/0;,重新執(zhí)行測(cè)試方法:

八月 07, 2021 10:47:01 上午 com.alibaba.druid.pool.DruidDataSource info
信息: {dataSource-1} inited
Process finished with exit code 0

刷新數(shù)據(jù)表。

結(jié)果正確。

以上就是spring學(xué)習(xí)JdbcTemplate數(shù)據(jù)庫事務(wù)管理的詳細(xì)內(nèi)容,更多關(guān)于spring JdbcTemplate數(shù)據(jù)庫事務(wù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java中正則表達(dá)式的使用和詳解(下)

    Java中正則表達(dá)式的使用和詳解(下)

    這篇文章主要介紹了Java正則表達(dá)式的使用和詳解(下)的相關(guān)資料,包括常用正則表達(dá)式和正則表達(dá)式語法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧
    2017-04-04
  • Java中Iterator迭代器的簡單理解

    Java中Iterator迭代器的簡單理解

    這篇文章主要介紹了Java中Iterator迭代器的簡單理解,Iterator接口也是Java集合中的一員,但它與Collection、Map接口有所不同,Iterator主要用于迭代訪問Collection中的元素,因此Iterator對(duì)象也被稱為迭代器,需要的朋友可以參考下
    2024-01-01
  • idea中如何集成http請(qǐng)求

    idea中如何集成http請(qǐng)求

    這篇文章主要介紹了idea中如何集成http請(qǐng)求問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • java數(shù)據(jù)結(jié)構(gòu)之實(shí)現(xiàn)雙向鏈表的示例

    java數(shù)據(jù)結(jié)構(gòu)之實(shí)現(xiàn)雙向鏈表的示例

    這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)雙向鏈表的示例,需要的朋友可以參考下
    2014-03-03
  • springcloud本地調(diào)試feign調(diào)用出現(xiàn)的詭異404問題及解決

    springcloud本地調(diào)試feign調(diào)用出現(xiàn)的詭異404問題及解決

    這篇文章主要介紹了springcloud本地調(diào)試feign調(diào)用出現(xiàn)的詭異404問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 深入理解java三種工廠模式

    深入理解java三種工廠模式

    下面小編就為大家?guī)硪黄钊肜斫鈐ava三種工廠模式。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • Java實(shí)現(xiàn)把文件及文件夾壓縮成zip

    Java實(shí)現(xiàn)把文件及文件夾壓縮成zip

    這篇文章主要介紹了Java實(shí)現(xiàn)把文件及文件夾壓縮成zip,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java Swing GroupLayout分組布局的實(shí)現(xiàn)代碼

    Java Swing GroupLayout分組布局的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Java Swing GroupLayout分組布局的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Spring Boot Web 靜態(tài)文件緩存處理的方法

    Spring Boot Web 靜態(tài)文件緩存處理的方法

    本篇文章主要介紹了Spring Boot Web 靜態(tài)文件緩存處理的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • 詳解SpringBoot如何自定義自己的Starter組件

    詳解SpringBoot如何自定義自己的Starter組件

    這篇文章主要為大家詳細(xì)介紹了在SpringBoot中如何自定義自己的Starter組件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03

最新評(píng)論

辰溪县| 班玛县| 砚山县| 昭平县| 普安县| SHOW| 安庆市| 常州市| 固阳县| 浑源县| 定襄县| 金乡县| 格尔木市| 东山县| 长乐市| 甘洛县| 綦江县| 武汉市| 塔河县| 二手房| 元江| 云阳县| 漠河县| 江阴市| 武强县| 洪泽县| 女性| 高陵县| 沾化县| 宣城市| 雷山县| 江城| 博兴县| 萝北县| 石屏县| 赤壁市| 友谊县| 和田县| 蓬溪县| 西青区| 香格里拉县|