前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring基础(十五):Spring事务环境搭建

Spring基础(十五):Spring事务环境搭建

原创
作者头像
Lansonli
发布2022-12-26 12:56:11
3250
发布2022-12-26 12:56:11
举报
文章被收录于专栏:Lansonli技术博客

​Spring事务环境搭建

简单案例:

通过张三给李四转账案例演示事务的控制

一、数据库中准备表格

二、项目中准备实体类

代码语言:javascript
复制
package com.lanson.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
 * @Author: Lansonli
 * @Description: MircoMessage:Mark_7001
 */
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Account implements Serializable {
    private Integer id;
    private String name;
    private Integer money;
}

三、准备DAO层

创建一个根据id修改money的方法

代码语言:javascript
复制
package com.lanson.dao;
/**
 * @Author: Lansonli
 * @Description: MircoMessage:Mark_7001
 */
public interface AccountDao {
    int transMoney(int id,int money);
}

代码语言:javascript
复制
package com.lanson.dao.impl;
import com.lanson.dao.AccountDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
/**
 * @Author: Lansonli
 * @Description: MircoMessage:Mark_7001
 */
@Repository
public class AccountDaoImpl implements AccountDao {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Override
    public int transMoney(int id, int money) {
        String sql ="update account set money =money +? where id =?";
        return jdbcTemplate.update(sql,money,id);
    }
}

四、准备Service

创建一个转账的业务方法

代码语言:javascript
复制
package com.lanson.service;
/**
 * @Author: Lansonli
 * @Description: MircoMessage:Mark_7001
 */
public interface AccountService {
    int transMoney(int from ,int to,int money);
}

代码语言:javascript
复制
package com.lanson.service.impl;
import com.lanson.dao.AccountDao;
import com.lanson.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
 * @Author: Lansonli
 * @Description: MircoMessage:Mark_7001
 */
@Service
public class AccountServiceImpl implements AccountService {
    @Autowired
    private AccountDao accountDao;
    @Override
    public int transMoney(int from, int to, int money) {
        int rows=0;
        rows+=accountDao.transMoney(from, 0 - money);       
        rows+=accountDao.transMoney(to, money);        
        return rows;
    }
}

五、测试代码

测试转账

代码语言:javascript
复制
package com.lanson.test;
import com.lanson.service.AccountService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
 * @Author: Lansonli
 * @Description: MircoMessage:Mark_7001
 */
public class TestTx {
    @Test()
    public void testTransaction(){
        ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext.xml");
        AccountService accountService = context.getBean(AccountService.class);
        int rows = accountService.transMoney(1, 2, 100);
        System.out.println(rows);
    }
    
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ​Spring事务环境搭建
    • 一、数据库中准备表格
      • 二、项目中准备实体类
        • 三、准备DAO层
          • 四、准备Service
            • 五、测试代码
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档