- 浏览: 189824 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (321)
- eclipse (4)
- idea (2)
- Html (8)
- Css (14)
- Javascript (8)
- Jquery (6)
- Ajax Json (4)
- Bootstrap (0)
- EasyUI (0)
- Layui (0)
- 数据结构 (0)
- Java (46)
- DesPattern (24)
- Algorithm (2)
- Jdbc (8)
- Jsp servlet (13)
- Struts2 (17)
- Hibernate (11)
- Spring (5)
- S2SH (1)
- SpringMVC (4)
- SpringBoot (11)
- WebService CXF (4)
- Poi (2)
- JFreeChart (0)
- Shiro (6)
- Lucene (5)
- ElasticSearch (0)
- JMS ActiveMQ (3)
- HttpClient (5)
- Activiti (0)
- SpringCloud (11)
- Dubbo (6)
- Docker (0)
- MySQL (27)
- Oracle (18)
- Redis (5)
- Mybatis (11)
- SSM (1)
- CentOS (10)
- Ant (2)
- Maven (4)
- Log4j (7)
- XML (5)
最新评论
1. SpringBoot之事物管理@Transactional
1) 正常业务
2) 增加异常
3) 增加异常,增加事务
1) 正常业务
新建项目SpringDataTransaction src/main/java/com/andrew/entity/Account.java package com.andrew.entity; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "t_account") public class Account { @Id @GeneratedValue private Integer id; @Column(length = 50) private String userName; private float balance; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public float getBalance() { return balance; } public void setBalance(float balance) { this.balance = balance; } } HelloWorldApplication.java右键Run As选择Spring Boot App 数据库生产t_account表 insert into t_account values(1, 700, 'zhangsan'); insert into t_account values(2, 300, 'lisi'); src/main/java/com/andrew/dao/AccountDao.java package com.andrew.dao; import org.springframework.data.jpa.repository.JpaRepository; import com.andrew.entity.Account; public interface AccountDao extends JpaRepository<Account, Integer> { } src/main/java/com/andrew/service/AccountService.java package com.andrew.service; public interface AccountService { public void transferAccounts(int fromUser,int toUser,float account); } src/main/java/com/andrew/service/impl/AccountServiceImpl.java package com.andrew.service.impl; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.andrew.dao.AccountDao; import com.andrew.entity.Account; import com.andrew.service.AccountService; @Service("accountService") public class AccountServiceImpl implements AccountService { @Resource private AccountDao accountDao; public void transferAccounts(int fromUser, int toUser, float account) { Account fromAccount = accountDao.getOne(fromUser); fromAccount.setBalance(fromAccount.getBalance() - account); accountDao.save(fromAccount); Account toAccount = accountDao.getOne(toUser); toAccount.setBalance(toAccount.getBalance() + account); accountDao.save(toAccount); } } src/main/java/com/andrew/controller/AccountController.java package com.andrew.controller; import javax.annotation.Resource; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.andrew.service.AccountService; @RestController @RequestMapping("/account") public class AccountController { @Resource private AccountService accoutService; @RequestMapping("/transfer") public String transferAccount(){ try { accoutService.transferAccounts(1, 2, 200); return "OK"; } catch(Exception e) { return "NO"; } } } src/main/resources/application.properties server.port=8000 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/springboot spring.datasource.username=root spring.datasource.password=root spring.jpa.hibernate.ddl-auto=update spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect spring.jpa.show-sql=true pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> http://localhost:8000/account/transfer 运行结果: YES 1 700 zhangsan 2 300 lisi
2) 增加异常
src/main/java/com/andrew/service/impl/AccountServiceImpl.java package com.andrew.service.impl; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.andrew.dao.AccountDao; import com.andrew.entity.Account; import com.andrew.service.AccountService; @Service("accountService") public class AccountServiceImpl implements AccountService { @Resource private AccountDao accountDao; public void transferAccounts(int fromUser, int toUser, float account) { Account fromAccount = accountDao.getOne(fromUser); fromAccount.setBalance(fromAccount.getBalance() - account); accountDao.save(fromAccount); Account toAccount = accountDao.getOne(toUser); toAccount.setBalance(toAccount.getBalance() + account); accountDao.save(toAccount); } } http://localhost:8000/account/transfer 运行结果: NO 1 500 zhangsan 2 300 lisi
3) 增加异常,增加事务
src/main/java/com/andrew/service/impl/AccountServiceImpl.java package com.andrew.service.impl; import javax.annotation.Resource; import javax.transaction.Transactional; import org.springframework.stereotype.Service; import com.andrew.dao.AccountDao; import com.andrew.entity.Account; import com.andrew.service.AccountService; @Service("accountService") public class AccountServiceImpl implements AccountService { @Resource private AccountDao accountDao; @Transactional public void transferAccounts(int fromUser, int toUser, float account) { Account fromAccount = accountDao.getOne(fromUser); fromAccount.setBalance(fromAccount.getBalance() - account); accountDao.save(fromAccount); Account toAccount = accountDao.getOne(toUser); toAccount.setBalance(toAccount.getBalance() + account); accountDao.save(toAccount); } } http://localhost:8000/account/transfer 运行结果: NO 1 700 zhangsan 2 300 lisi
发表评论
-
报错Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not se
2019-02-17 12:22 4031WARN 12992 --- [ ma ... -
报错The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more t
2019-02-17 12:22 553mysql的时区错误问题: The server time ... -
报错Error executing DDL via JDBC Statement
2019-02-17 12:22 1239使用SpringDataJPA总是创建hibernate_ ... -
pom.xml报错<failOnMissingWebXml> is set to true
2019-02-15 13:47 351pom.xml报错 <failOnMissin ... -
SpringBoot切面AOP
2019-02-15 09:40 3881. SpringBoot切面AOP SpringBoo ... -
SpringBoot表单验证
2019-02-15 09:36 3851. SpringBoot表单验证@Valid 新建项目 ... -
SpringBoot支持Spring Data Jpa
2019-02-15 09:10 3911. Spring Data Jpa简介 JPA(Jav ... -
SpringBoot支持MVC
2019-02-14 09:27 3081) @RequestMapping配置url映射 2) @ ... -
SpringBoot配置项目属性
2019-02-14 09:26 3851. 项目内置属性 配置文件application.pr ... -
SpringBoot导入
2019-02-13 13:33 4281. SpringBoot简介 Spring B ...
相关推荐
Springboot事务管理详解 Springboot事务管理是指在Spring Boot框架中对事务的管理和控制。事务管理是指在多个操作步骤中,如果某一步骤出现错误,整个操作步骤都可以回退到初始状态,保证数据的一致性和完整性。 ...
在Spring Boot应用中,事务管理和多线程是两个非常关键的特性,特别是在处理复杂的业务逻辑时。本示例将深入探讨如何使用注解来实现事务控制以及如何在Spring Boot中运用多线程。 首先,让我们关注"注解事务"。在...
09-SpringBoot事务管理 10-SpringBoot集成多数据源 11-SpringBoot集成MybatisPlus 12-MybatisPlus使用介绍 13-SpringBoot集成lombok 14-SpringBoot集成Shiro 15-Shiro登录控制 16-Shiro角色权限控制 17-SpringBoot...
09-SpringBoot事务管理 10-SpringBoot集成多数据源 11-SpringBoot集成MybatisPlus 12-MybatisPlus使用介绍 13-SpringBoot集成lombok 14-SpringBoot集成Shiro 15-Shiro登录控制 16-Shiro角色权限控制 17-SpringBoot...
09-SpringBoot事务管理 10-SpringBoot集成多数据源 11-SpringBoot集成MybatisPlus 12-MybatisPlus使用介绍 13-SpringBoot集成lombok 14-SpringBoot集成Shiro 15-Shiro登录控制 16-Shiro角色权限控制 17-SpringBoot...
在SpringBoot框架中整合Mybatis进行事务管理是常见的开发实践,这主要涉及到Spring的声明式事务管理和Mybatis的事务配置。下面将详细讲解这个主题。 首先,SpringBoot简化了Spring的配置,使得开发者可以快速搭建...
采用java技术构建的一个管理系统。整个开发过程首先对系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计...
采用java技术构建的一个管理系统。整个开发过程首先对系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计...
通过XML配置或注解的方式,开发者可以轻松地进行数据库操作,如增删改查,同时支持事务管理和数据验证。 接下来,让我们关注系统中的核心模块——图书管理。这个模块通常包括图书的分类、添加、检索、借阅和归还等...
在处理Redis事务时,我们需要根据实际需求选择合适的方法,可能是简单的`MULTI/EXEC`,也可能是基于Lua脚本的分布式事务,甚至采用更复杂的分布式事务管理框架。理解这些概念和技术,有助于我们在实际项目中更好地...
在这个"SpringBoot CRUD + 事务 DEMO"中,我们将深入探讨如何在SpringBoot中实现基本的数据操作(CRUD)以及事务管理。 首先,CRUD代表创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete),是数据库操作的...
本文将详细讲解"springboot-jpa atomikos 分布式事务管理"这一主题,以及如何在SpringBoot 2.0.5版本中结合JPA、Hibernate和MyBatis实现多数据库事务控制。 首先,SpringBoot是一个简化Spring应用开发的框架,它...
SpringBoot作为一款轻量级的框架,提供了便捷的多数据源配置和分布式事务管理方案,使得开发者能够高效地管理和操作不同的数据库。本文将详细探讨SpringBoot如何实现多数据源以及分布式事务。 首先,我们要理解什么...
在现代企业运营中,人事管理系统的存在至关重要,它能够有效地处理员工信息、考勤记录、薪资计算、福利发放等事务,提高人力资源部门的工作效率。本文将深入探讨如何利用SpringBoot框架构建一个高效、稳定、易于维护...
一、SpringBoot事务管理的基本概念 在SpringBoot中,事务管理是通过@Transaction注解和PlatformTransactionManager实现的。@Transaction注解用于标记事务方法,而PlatformTransactionManager则是事务管理器,负责...
SpringBoot 中事务管理 @Transactional 的注意事项与使用场景 在本篇文章中,我们将详细讲解 SpringBoot 中事务管理 @Transactional 的注意事项与使用场景,以帮助开发者更好地理解和使用 @Transactional 注解。 ...
Spring框架还包括数据访问/集成、Web、测试、事务管理和更多其他功能模块。Spring的模块化设计使得开发者可以根据项目需求选择性地使用。 【Dubbo框架】 Dubbo是阿里巴巴开源的一个高性能、轻量级的服务治理框架,...
例如,引入了JPA依赖,Spring Boot会自动配置数据源、事务管理器、实体扫描等。 5. **YAML/Properties配置** Spring Boot支持使用YAML或Properties文件进行配置,方便管理各种应用设置。在员工管理系统中,这可能...
SpringBoot事务使用及回滚实现代码详解 SpringBoot事务使用及回滚实现代码详解是SpringBoot框架中的一项重要功能,用于确保事务的一致性和可靠性。事务是指一组操作的集合,作为一个单元执行,如果其中任何一个操作...
自动配置的事务管理器是Spring Boot自动提供的,手动配置的事务管理器需要我们自己定义。 SpringBoot之事务处理机制是Spring框架中的一种机制,用于管理事务。它提供了统一的机制来处理不同数据访问技术的事务处理...