文章目录
- 一、项目克隆
- 二、数据库准备
- 三、项目工程准备
一、项目克隆
克隆此项目到本地
https://github.com/Xiamu-ssr/MultiCache
来到start
目录下,分别有以下文件夹
docker
:docker相关文件item-service
:springboot项目
二、数据库准备
在docker/docker-compose.yml
中已经定义好如下mysql
块
mysql:container_name: mysqlimage: mysql:8volumes:- ./mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf- ./mysql/data:/var/lib/mysql- ./mysql/logs:/logsports:- "3306:3306"environment:- MYSQL_ROOT_PASSWORD=1009networks:multi-cache:ipv4_address: 172.30.3.2
my.cnf
如下
[mysqld]
bind-address=0.0.0.0
skip-name-resolve
character_set_server=utf8
datadir=/var/lib/mysql
运行以下命令启动docker-compose
docker-compose -p multi-cache up -d
之后使用数据库连接工具连接mysql
容器,创建heima
数据库,并对其执行docker/mysql/item.sql
脚本。
三、项目工程准备
用idea
打开item-service
文件夹,等待idea
加载本springboot
项目。
如果在
docker-compose
中服务ip改动,请注意一些可能关联的地方也需要做同样改动,比如item-service
的application.yml
spring:application:name: itemservicedatasource:url: jdbc:mysql://172.30.3.2:3306/heima?useSSL=false&allowPublicKeyRetrieval=trueusername: rootpassword: 1009driver-class-name: com.mysql.cj.jdbc.Driver
观察controller
package com.heima.item.web;import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.heima.item.pojo.Item;
import com.heima.item.pojo.ItemStock;
import com.heima.item.pojo.PageDTO;
import com.heima.item.service.IItemService;
import com.heima.item.service.IItemStockService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;
import java.util.stream.Collectors;@RestController
@RequestMapping("item")
public class ItemController {@Autowiredprivate IItemService itemService;@Autowiredprivate IItemStockService stockService;@GetMapping("list")public PageDTO queryItemPage(@RequestParam(value = "page", defaultValue = "1") Integer page,@RequestParam(value = "size", defaultValue = "5") Integer size){// 分页查询商品Page<Item> result = itemService.query().ne("status", 3).page(new Page<>(page, size));// 查询库存List<Item> list = result.getRecords().stream().peek(item -> {ItemStock stock = stockService.getById(item.getId());item.setStock(stock.getStock());item.setSold(stock.getSold());}).collect(Collectors.toList());// 封装返回return new PageDTO(result.getTotal(), list);}@PostMappingpublic void saveItem(@RequestBody Item item){itemService.saveItem(item);}@PutMappingpublic void updateItem(@RequestBody Item item) {itemService.updateById(item);}@PutMapping("stock")public void updateStock(@RequestBody ItemStock itemStock){stockService.updateById(itemStock);}@DeleteMapping("/{id}")public void deleteById(@PathVariable("id") Long id){itemService.update().set("status", 3).eq("id", id).update();}@GetMapping("/{id}")public Item findById(@PathVariable("id") Long id){return itemService.query().ne("status", 3).eq("id", id).one();}@GetMapping("/stock/{id}")public ItemStock findStockById(@PathVariable("id") Long id){return stockService.getById(id);}
}