SpringCloud无介绍快使用,子module提供者支付微服务cloud-provider-payment8001业务开发(六)

@TOC

问题背景

从零开始学springcloud微服务项目
注意事项:

  • 约定 > 配置 > 编码
  • IDEA版本2021.1
  • 这个项目,我分了很多篇章,每篇文章一个操作步骤,目的是显得更简单明了
  • controller调service,service调dao
  • 项目源码以及sentinel安装包

项目搭建

1 创建提供者支付微服务相关mysql表

 CREATE TABLE `payment` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `serial` varchar(200) DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8

2 IDEA新建entities,dao,mapper文件夹


3 在entities新建Payment,实现Serializable接口,后续做分布式架构

package com.yg.springcloud.entities;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * @Author suolong
 * @Date 2022/6/14 21:13
 * @Version 2.0
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Payment implements Serializable {

    private Long id;
    private String serial;

}

4 在entities中新建封装类CommonResult

package com.yg.springcloud.entities;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @Author suolong
 * @Date 2022/6/14 21:15
 * @Version 2.0
 */
@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);
    }
}

5 在dao中新建PaymentDao接口

package com.yg.springcloud.dao;

import com.yg.springcloud.entities.Payment;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * @Author suolong
 * @Date 2022/6/14 21:19
 * @Version 2.0
 */
@Mapper
public interface PaymentDao {


    public int create(Payment payment);

    public Payment getPaymentById(@Param("id") Long id);

}

6 在mapper中新建PaymentMapper.xml数据库映射文件






    
        
        
    

    
        INSERT INTO payment(SERIAL)
        VALUES (#{serial});
    

    


7 mysql插入一条数据

INSERT INTO `mysqltest`.`payment` (`id`, `serial`) VALUES (1, 'abc');

8 启动提供者支付module引用


9 导入实现类和服务接口

package com.yg.springcloud.service;

import com.yg.springcloud.entities.Payment;
import org.apache.ibatis.annotations.Param;

/**
 * @Author suolong
 * @Date 2022/6/14 21:32
 * @Version 2.0
 */
public interface PaymentService {

    public int create(Payment payment);

    public Payment getPaymentById(@Param("id") Long id);

}

package com.yg.springcloud.service.impl;

import com.yg.springcloud.dao.PaymentDao;
import com.yg.springcloud.entities.Payment;
import com.yg.springcloud.service.PaymentService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * @Author suolong
 * @Date 2022/6/14 21:30
 * @Version 2.0
 */
@Service
public class PaymentServiceImpl implements PaymentService {

    @Resource
    private PaymentDao paymentDao;

    @Override
    public int create(Payment payment) {
        return paymentDao.create(payment);
    }

    @Override
    public Payment getPaymentById(Long id) {
        return paymentDao.getPaymentById(id);
    }

}

10 导入controller

package com.yg.springcloud.controller;

import com.yg.springcloud.entities.CommonResult;
import com.yg.springcloud.entities.Payment;
import com.yg.springcloud.service.PaymentService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * @Author suolong
 * @Date 2022/6/14 21:36
 * @Version 2.0
 */
@RestController
@Slf4j
public class PaymentController {

    @Resource
    private PaymentService paymentService;

    @PostMapping(value = "/payment/create")
    public CommonResult create(@RequestBody Payment payment) {
        int result = paymentService.create(payment);
        log.info("result哈哈哈: {}", result);
        if (result > 0) {
            return new CommonResult(200, "插入成功", result);
        }
        return new CommonResult(500, "插入失败", null);
    }

    @GetMapping(value = "/payment/get/{id}")
    public CommonResult getPaymentById(@PathVariable("id") Long id) {
        Payment payment = paymentService.getPaymentById(id);
        log.info("查询结果哈哈哈hahah:{}", payment);
        if (payment != null) {
            return new CommonResult(200, "查询成功哈", payment);
        } else {
            return new CommonResult(500, "没有对应记录,查询ID: " + id, null);
        }
    }

}

11 打开浏览器,输入查询的数据库 id

http://localhost:8001/payment/get/1

12 使用postman,输入

http://localhost:8001/payment/create?serial=qaz

13 查看数据库


14 整体目录结构


SpringCloud无介绍快使用,Seata处理分布式事务(二十五)
SpringCloud无介绍快使用,sentinel服务熔断功能(二十四)
SpringCloud无介绍快使用,sentinel注解@SentinelResource的基本使用(二十三)
SpringCloud无介绍快使用,sentinel热点key限流与系统规则的基本使用(二十二)
SpringCloud无介绍快使用,sentinel熔断降级和限流的基本使用(二十一)
SpringCloud无介绍快使用,Nacos集群和Nginx代理(二十)
SpringCloud无介绍快使用,nacos配置中心的基本使用(十九)
SpringCloud无介绍快使用,nacos注册中心的基本使用(十八)
SpringCloud无介绍快使用,gateway通过微服务名实现动态路由(十七)
SpringCloud无介绍快使用,gateway的基本使用(十六)
SpringCloud无介绍快使用,Ribbon负载均衡工具与OpenFeign的使用(十五)
SpringCloud无介绍快使用,使用Zookeeper替换Eureka服务注册与发现(十四)
SpringCloud无介绍快使用,服务发现Discovery和Eureka自我保护(十三)
SpringCloud无介绍快使用,集群cloud-provider-payment8002搭建(十二)
SpringCloud无介绍快使用,集群Eureka服务注册中心cloud-eureka-server7002搭建(十一)
SpringCloud无介绍快使用,单机Eureka服务注册中心cloud-eureka-server7001搭建(十)
SpringCloud无介绍快使用,新建cloud-api-commons公共模块module(九)
SpringCloud无介绍快使用,新建子module消费者订单模块(八)
SpringCloud无介绍快使用,热部署devtools配置(七)
SpringCloud无介绍快使用,子module提供者支付微服务业务开发(六)
SpringCloud无介绍快使用,新建子module提供者支付微服务yml整合和新建启动类(五)
SpringCloud无介绍快使用,新建子module提供者支付微服务pom整合(四)
SpringCloud无介绍快使用,springcloud父工程pom文件整理(三)
SpringCloud无介绍快使用,IDEA新建springcloud父工程(二)
SpringCloud无介绍快使用,与Spingboot之间的兼容版本选择(一)




作为程序员第 172 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha ...

Lyric: 一只灰狼问候我谁是神枪手

你可能感兴趣的:(SpringCloud无介绍快使用,子module提供者支付微服务cloud-provider-payment8001业务开发(六))