1,创建maven父工程
引入相关依赖
<!--打包方式: jar: java工程 war:web工程 pom:父工程-->
<packaging>pom</packaging>
<!--继承springboot的父工程-->
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.3.2.RELEASE</version>
</parent>
<!--定义版本号-->
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF- 8</project.reporting.outputEncoding>
<spring-cloud.version>Hoxton.SR8</spring-cloud.version>
<spring-cloud-alibaba.version>2.2.5.RELEASE</spring-cloud-alibaba.version>
</properties>
<!--dependencyManagement:它只负责jar的管理 不负责jar的下载,如果想下载需要再子工程中引入依赖来下载。-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2,创建一个基础模块
1,在原有的工程里建
2,在pom文件中引入相关依赖
<!--加入依赖-->
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.56</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
3,创建实体类
@Data
@TableName("shop_order")
public class Order {
@TableId(type = IdType.AUTO)
private Long oid; //订单id
private Integer uid;//用户id
private String username;//用户名
private Integer pid;//商品id
private String pname;//商品名称
private Double pprice;//商品价格
private Integer number;//购买数量
}
@Data
@TableName(value = "shop_product")
public class Product {
@TableId(type= IdType.AUTO)
private Integer pid;
private String pname;//商品名称
private Double pprice;//商品价格
private Integer stock;//库存
}
3,和2一样,还在父工程中创建一个商品模块
1,引入相关依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--可以继承基础模块中的依赖-->
<dependency>
<groupId>org.example</groupId>
<artifactId>springcloud-public</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
2,连接数据库,创建一个yml文件
# 设置服务的端口号
server:
port: 8081
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/springcloud?serverTimezone=Asia/Shanghai
username: root
password: 123456
logging:
level:
com.gjx.product.mapper: debug
3,mapper层
4,创建一个启动类,别忘了扫描mapper
@SpringBootApplication
@MapperScan(basePackages = "com.mapper")
public class ProductApp {
public static void main(String[] args) {
SpringApplication.run(ProductApp.class,args);
}
}
5,service层
public interface ProductService {
Product selectById(Long productById);
}
@Service
public class ProductServiceImpl implements ProductService{
@Autowired
private ProductMapper productMapper;
@Override
public Product selectById(Long productById) {
return productMapper.selectById(productById);
}
}
6,controller层
@RestController
@RequestMapping("product")
public class ProductController {
@Autowired
private ProductService productService;
@GetMapping("selectById/{id}")
public Product selectById(@PathVariable Long id){
return productService.selectById(id);
}
}
7,测试一下查询成功
4, 和2,3一样,创建一个订单模块
1,引入相关依赖,和3一样
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.example</groupId>
<artifactId>springcloud-public</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
2,配置数据源,端口号和 3 的不能一样
# 设置服务的端口号
server:
port: 8091
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/springcloud?serverTimezone=Asia/Shanghai
username: root
password: 123456
logging:
level:
com.gjx.product.mapper: debug
3,mapper层
public interface OrderMapper extends BaseMapper<Order> {
}
4,配置启动类
@SpringBootApplication
@MapperScan(basePackages = "com.mapper")
public class OrderApp {
public static void main(String[] args) {
SpringApplication.run(OrderApp.class,args);
}
}
5,service层
public interface OrderService {
String saveOrder(Order order);
}
@Service
public class OrderServiceImpl implements OrderService{
@Autowired
private OrderMapper orderMapper;
@Override
public String saveOrder(Order order) {
orderMapper.insert(order);
return "下单成功";
}
}
6,controller层
@RestController
@RequestMapping("order")
public class OrderController {
@Autowired
private OrderService orderService;
//springbooot封装的
@Autowired
private RestTemplate restTemplate;
@GetMapping("saveOrder")
public String saveOrder(Integer pid,Integer num){
Order order=new Order();
order.setNumber(num);
order.setPid(pid);
order.setUid(1);
order.setUsername("我是测试");
//获取商品路径
Product product =restTemplate.getForObject("http://localhost:8081/product/selectById/"+pid,Product.class);
order.setPname(product.getPname());
order.setPprice(product.getPprice());
return orderService.saveOrder(order);
}
}
7,浏览器测试一下
8,看一下数据库