SpringCloud笔记

SpringCloud笔记,第1张

前言

        本文中所说的支付模块,仅为依据当前 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

主要是调整新增的  位置

三、完善子模块的pom.xml

引入相关的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.java
package 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 的初步认识。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/756769.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-30
下一篇2022-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存