技术栈:
- springcloud-alibaba
- mybatis-plus 持久性框架
- mysql数据库5.7以上
- springboot来搭建每个微服务。

把其他的全删掉,只保留一个pom文件
4.0.0 org.springframework.boot spring-boot-starter-parent 2.3.12.RELEASE com.aaa qy156-shop-parent 0.0.1-SNAPSHOT pom qy156-shop-parent Demo project for Spring Boot 1.8 UTF-8 UTF- 8 Hoxton.SR8 2.2.3.RELEASE org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import com.alibaba.cloud spring-cloud-alibaba-dependencies ${spring-cloud-alibaba.version} pom import org.springframework.boot spring-boot-maven-plugin
把其他模块公共得代码放入到该模块。- - -实体 工具类

org.projectlombok lombok com.baomidou mybatis-plus-boot-starter 3.5.0
定义相关得实体类
@Data
@TableName(value = "shop_order")
public class Order {//订单id@TableIdprivate Long oid;//用户idprivate Integer uid;//用户名private String username;//商品id---购买时99---->活动结束后199private Long pid;//商品得名称private String pname;//商品得价格private Double pprice;//购买得数量private Integer number;
}@Data
@TableName("shop_product")
public class Product {@TableIdprivate Long pid;private String pname;private Double pprice;private Integer stock;
}
关于商品表操作的接口

com.aaa shop-common 0.0.1-SNAPSHOT org.springframework.boot spring-boot-starter-web mysql mysql-connector-java
配置文件
# 定义端口号 [8001~8009 未来方便搭建集群]
server:port: 8001#数据源得信息
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/springcloud?serverTimezone=Asia/Shanghaiusername: rootpassword: root# mybatis打印日志
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
dao接口
/*** @program: qy156-shop-parent* @description:* @author: 闫克起* @create: 2022-11-17 16:22**/
public interface ProductDao extends BaseMapper {
}
service代码
@Service
public class ProductService implements IProductService {@Autowiredprivate ProductDao productDao;@Overridepublic Product findById(Long pid) {return productDao.selectById(pid);}
}
controller
@RestController
@RequestMapping("product")
public class ProductController {@Autowiredprivate IProductService productService;@GetMapping("/getById/{pid}")public Product getById(@PathVariable Long pid){return productService.findById(pid);}
}
主启动类
@SpringBootApplication
@MapperScan(basePackages = "com.aaa.product.dao")
public class ProductApp {public static void main(String[] args) {SpringApplication.run(ProductApp.class,args);}
}

关于订单表得所有操作接口

com.aaa shop-common 0.0.1-SNAPSHOT org.springframework.boot spring-boot-starter-web mysql mysql-connector-java
配置
#端口号---[9001~9009]集群模式
server:port: 9001#数据源得信息
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/springcloud?serverTimezone=Asia/Shanghaiusername: rootpassword: root
# sql显示在控制台
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
dao接口
package com.aaa.order.dao;import com.baomidou.mybatisplus.core.mapper.BaseMapper;/*** @program: qy156-shop-parent* @description:* @author: 闫克起* @create: 2022-11-18 14:34**/
public interface OrderDao extends BaseMapper {}
service代码
@Service
public class OrderService implements IOrderService {@Autowiredprivate OrderDao orderDao;@Overridepublic int save(Order order) {return orderDao.insert(order);}
}
controller代码
package com.aaa.order.controller;import com.aaa.entity.Order;
import com.aaa.entity.Product;
import com.aaa.order.service.IOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;/*** @program: qy156-shop-parent* @description:* @author: 闫克起2* @create: 2022-11-17 16:33**/
@RestController
@RequestMapping("/order")
public class OrderController {//必须创建并交于spring容器管理。这样才能被注入到相应的类属性上@Autowiredprivate RestTemplate restTemplate;@Autowiredprivate IOrderService orderService;@GetMapping("/saveOrder")public String saveOrder(Long pid,Integer num){Order order=new Order();//用户得信息可以从登录后获取--Session redis jwtorder.setUid(1);order.setUsername("张成");//为订单对象设置商品得信息order.setPid(pid);//需要远程调用商品微服务中的指定接口[注意:凡是关于商品的操作都有商品微服务来执行。]//远程调用的方式:第一种基于TCP协议的RPC远程调用 第二种基于http协议Restful风格的调用。//分布式架构:TCP协议的//微服务架构:http协议的。---在spring框架中封装了一个工具RestTemplate。 如果不是使用的spring框架。你需要自己封装HttpClient工具Product product = restTemplate.getForObject("http://localhost:8001/product/getById/"+pid, Product.class);order.setPname(product.getPname());order.setPprice(product.getPprice());order.setNumber(num);orderService.save(order);return "下单成功";}
}
上一篇:代表人不能随心所欲的名言有哪些