JAVA全系列 教程
3762个小节阅读:7090.8k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
xxxxxxxxxx
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- openfeign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
xxxxxxxxxx
//添加对mapper包扫描 Mybatis-plus
@MapperScan("com.itbaizhan.mapper")
//开启OpenFiegn
@EnableFeignClients
@SpringBootApplication
@Slf4j
//开启发现注册
@EnableDiscoveryClient
public class SeataBank1Main6001 {
public static void main(String[] args) {
SpringApplication.run(SeataBank1Main6001.class,args);
log.info("************** SeataBank1Main6001 *************");
}
}
xxxxxxxxxx
server:
port: 6001
spring:
application:
name: seata-bank1
cloud:
nacos:
discovery:
# Nacos server地址
server-addr: 192.168.66.101:8848
datasource:
url: jdbc:mysql://localhost:3306/bank1?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
xxxxxxxxxx
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName("account_info")
@Data
public class AccountInfo {
//id
@TableId
private Long id;
//户主姓名
@TableField("account_name")
private String accountName;
//银行卡号
@TableField("account_no")
private String accountNo;
//账户密码
@TableField("account_password")
private String accountPassword;
//账户余额
@TableField("account_balance")
private Double accountBalance;
}
xxxxxxxxxx
@Component
@Mapper
public interface AccountMapper extends BaseMapper<AccountInfo> {
}
xxxxxxxxxx
public interface IAccountInfoService {
//张三扣减金额
public void updateAccountBalance(String accountNo, Double amount);
}
xxxxxxxxxx
@Component
@FeignClient(value="seata-bank2")
public interface Bank2Client {
//远程调用李四的微服务
@GetMapping("/bank2/transfer")
String transfer(@RequestParam("amount") Double amount);
}
xxxxxxxxxx
@Service
@Slf4j
public class AccountInfoServiceImpl implements IAccountInfoService {
@Autowired
AccountMapper accountMapper;
@Autowired
Bank2Client bank2Client;
@Override
public void updateAccountBalance(String accountNo, Double amount) {
// 1. 获取用户信息
AccountInfo accountInfo = accountMapper.selectById(2);
// 2. 判断张三账户余额是否有钱
if (accountInfo.getAccountBalance() > amount){
//扣减张三的金额
accountInfo.setAccountBalance(accountInfo.getAccountBalance()-amount);
int result = accountMapper.updateById(accountInfo);
if (result!=0){
//调用李四微服务,转账
bank2Client.transfer(amount);
}
}
}
}
xxxxxxxxxx
@RestController
public class Bank1Controller {
@Autowired
IAccountInfoService IAccountInfoService;
//张三转账
@GetMapping("/transfer")
public String transfer(Double amount){
IAccountInfoService.updateAccountBalance("1",amount);
return "bank1"+amount;
}
}