
本文中所说的支付模块,仅为依据当前 SpringCloud 视频教程中的简单的SpringCloud 子模块创建和RESTFUL风格API的大体结构示意,为视频教程中的demo,个人编写版,并非实际生产中包含有复杂真实的支付逻辑的支付模块。
一、创建数据库(db2019)及支付流水表(payment)create dataBase db2019; //创建数据库 db2019
//创建支付流水表 payment
create table payment (
`id` BIGINT(20) not null auto_increment comment 'id',
`serial` varchar(200) default '' comment '流水号',
PRIMARY key(id)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
二、创建支付子模块(cloud-provider-payment8001)
在SpringCloud笔记(三)-创建父工程__修铁路的的博客-CSDN博客 中创建的 SpringCloud 父工程下创建支付子模块 cloud-provider-payment8001
步骤:鼠标选中父工程 - 鼠标右键 - New - Module
二、整理父项目 pom主要是调整新增的
引入相关的jar包
cloud2020
com.atguigu.springcloud
1.0-SNAPSHOT
4.0.0
cloud-provider-payment8001
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-actuator
org.mybatis.spring.boot
mybatis-spring-boot-starter
com.alibaba
druid-spring-boot-starter
org.springframework.boot
spring-boot-starter-jdbc
mysql
mysql-connector-java
org.springframework.boot
spring-boot-devtools
runtime
true
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
四、创建 application.yml 配置文件
1. 新建文件 application.yml
在新创建的子模块cloud-provider-payment8001 中的 resource 文件夹下,新建 application.yml
2. 完善 application.yml 中的相关配置信息数据库信息根据实际情况修改
server:
port: 8001
spring:
application:
name: cloud-payment-service
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.126.100:3306/db2019?useUnicode=true&characterEncoding=utf-8 #mysql地址 根据实际情况修改
username: root #mysql登录账号,根据实际情况修改
password: abc123 #mysql登录密码,根据实际情况修改
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.atguigu.springcloud.bean
五、新建子模块启动类
在新增子模块的 java 目录下新增路径为 com.atguigu.springcloud 的启动类 PaymentMain8001
package com.atguigu.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @auther He
* @date 2022-04-25 21:13
*/
@SpringBootApplication
public class PaymentMain8001 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain8001.class, args);
}
}
六、新增各业务层的测试代码
顺序由 bean -> mapper -> service -> serviceImpl -> controller
1. 新增JavaBean 相关 1.1 新增支付流水实体 Payment.javapackage com.atguigu.springcloud.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 支付流水类
* @auther He
* @date 2022-04-25 22:06
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Payment implements Serializable {
/**
* id
*/
private Long id;
/**
* 流水号
*/
private String serial;
}
1.2 新增请求返回对象实体类 CommonResult.java
package com.atguigu.springcloud.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 返回对象
* @auther He
* @date 2022-04-25 22:10
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CommonResult {
/**
* 请求响应码
*/
private Integer code;
/**
* 请求响应信息
*/
private String message;
/**
* 响应数据
*/
private T data;
public CommonResult(Integer code, String message) {
this(code, message, null);
}
}
2. 新增 Mapper 层相关代码
2.1 新增 PaymentMapper.java
package com.atguigu.springcloud.mapper;
import com.atguigu.springcloud.bean.Payment;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* @auther He
* @date 2022-04-25 22:16
*/
@Mapper
public interface PaymentMapper {
/**
* 新增付款流水
* @param payment
* @return
*/
public int createInfo(Payment payment);
/**
* 根据id查询付款流水详情
* @param id
* @return
*/
public Payment getPaymentById(@Param("id") Long id);
}
2.2 新增 PaymentMapper.xml 文件
在子模块的 resource下,新建 mapper 文件夹,在mapper 文件夹中新增 PaymentMapper.xml
insert into payment (serial) values (#{serial})
3. 新增 service 接口代码
新增 service 接口类 com.atguigu.springcloud.service.IPaymentService.java
package com.atguigu.springcloud.service;
import com.atguigu.springcloud.bean.Payment;
import org.apache.ibatis.annotations.Param;
/**
* @auther He
* @date 2022-04-25 22:30
*/
public interface IPaymentService {
/**
* 新增付款流水
* @param payment
* @return
*/
public boolean createInfo(Payment payment);
/**
* 根据id查询付款流水详情
* @param id
* @return
*/
public Payment getPaymentById(@Param("id") Long id);
}
4. 新增IPaymentService.java 接口实现类 PaymentServiceImpl.java
package com.atguigu.springcloud.service.impl;
import com.atguigu.springcloud.mapper.PaymentMapper;
import com.atguigu.springcloud.bean.Payment;
import com.atguigu.springcloud.service.IPaymentService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* @auther He
* @date 2022-04-25 22:31
*/
@Service
@Slf4j
public class PaymentServiceImpl implements IPaymentService {
@Resource
private PaymentMapper paymentMapper;
/**
* 新增付款流水
*
* @param payment
* @return
*/
@Override
public boolean createInfo(Payment payment) {
int result = paymentMapper.createInfo(payment);
log.debug(">>> 新增结果:{}", result);
if (result > 0) {
return true;
}
return false;
}
/**
* 根据id查询付款流水详情
*
* @param id
* @return
*/
@Override
public Payment getPaymentById(Long id) {
return paymentMapper.getPaymentById(id);
}
}
5. 新增 controller 层
新建 PaymentController.java
package com.atguigu.springcloud.controller;
import com.atguigu.springcloud.bean.CommonResult;
import com.atguigu.springcloud.bean.Payment;
import com.atguigu.springcloud.service.IPaymentService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @auther He
* @date 2022-04-25 22:36
*/
@RestController
public class PaymentController {
@Resource
private IPaymentService iPaymentService;
/**
* 新增支付流水
* @param payment
* @return
*/
@PostMapping("/payment/create")
public CommonResult createInfo(Payment payment) {
return new CommonResult(200, "新增成功", iPaymentService.createInfo(payment));
}
/**
* 根据id查询支付流水详情
* @param id
* @return
*/
@GetMapping("/payment/get/{id}")
public CommonResult getInfoById(@PathVariable("id") Long id) {
return new CommonResult(200, "查询成功", iPaymentService.getPaymentById(id));
}
}
至此,相关模块的demo代码已新增完毕,直接启动 子模块
子模块在端口 8001 启动成功
七、测试相关代码逻辑是否正确使用工具 Postman
7.1 测试新增接口,使用Post请求 7.1.1 检验是否新增成功查询数据库中的 payment 表数据
7.2 测试根据id查询详情接口,使用Get请求和 7.1.1 中查询的数据完全一致,表明查询接口正常
结语以上为 SpringCloud 视频教程中的 支付模块的创建,通过当前子模块的创建,建立起对微服务子模块及单个子模块内请求处理流程的初步概念,构建出对RESETFUL API 的初步认识。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)