spring boot入门(四) springboot事务管理。最完整、简单易懂、详细的spring boot教程。

手把手写代码:三小时急速入门springboot—企业级微博项目实战--->csdn学院

本文紧接spring boot入门(三)。

事务管理是对于一系列数据库操作进行管理,一个事务包含一个或多个SQL语句,是逻辑管理的工作单元(原子单元)。通俗的讲,事务管理是指的“一次操作”要不就全做,要不就全不做。例如,在一个订单系统中,包括生成订单,扣除商品存库等操作,如果中间某个操作出问题,但其它操作执行成功了,这就出现了数据不同步的问题,为了解决此类问题,事务管理便油然而生。

1.假设我们在一个操作中,需要向数据库插入两条数据:在dao包下建立TestDao的Mapper接口,代码如下:

@Mapper
public interface TestDao {

    @Insert("insert into log values(#{description})")
    public int insertLog(Log log);

    @Insert("insert into test values(#{id},#{test},#{age})")
    public int insetTest(Test test);
}

2.在service包下建立TestService接口和TestServiceImpl实现类,TestService代码如下:

public interface TestService {
    public int insetTest();
}

TestServiceImpl的代码如下:

@Service
@MapperScan("com.yxc.dao")
public class TestServiceImpl implements TestService {


    @Autowired
    private TestDao testDao;


    @Override
    @Transactional
    public int insetTest() {

        Test t1 = new Test();
        t1.setId("3");
        t1.setTest("测试事务管理");
        t1.setAge(18);
        int a = testDao.insetTest(t1);

        Test t2 = new Test();
        t2.setId("44");
        t2.setTest("测试事务管理");
        t2.setAge(18);
        int b = testDao.insetTest(t2);
        return a+b;
    }

   
}

注意上方,t2.setId我们里面注入的值为“44”,但是在我们的数据库中,允许插入的id值长度为1,因此此处插入会出错误,但是t1实例的id是没有问题的,如果没有事务管理,t1实例会正常插入,在此处,t1实例虽然没有问题,但是此实例仍不会插入,因为此方法是一个事务方法。在你想要进行事务操作的方法上加@Transactional注解便对此方法进行了事务操作。

3.测试,在TestController中写测试方法,代码如下(此处只写此方法代码):

 @RequestMapping("/insert")
    public int insert(){
        return testService.insetTest();
    }

4.测试,t1实例也没有插入,实务操作成功。

注意:@Transactional注解是实务操作的关键注解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级战斗王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值