标签:te pro http update table type列 add private div autowired
一、创建工程Product

下一步,选择Cloud Discovery-> Eureka Discovery

配置同Client工程,工程名称改为product

然后启动product。
打开Eureka localhost:8761,可以看到Product已经注册进来了。

二、数据访问使用Spring Data JPA
1、pom文件中引入pring Data JPA和Mysql
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
2. 修改配置文件

show-sql:方便调试
三、创建dataobject包
增加依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
增加lombk插件,我这里已经安装

这样在类中不用自己写Get和Set方法。 只需要在类前面加入@Data注解
增加ProductInfo类
//类名对应表名,如果不一致,需要加注解
//@Table(name = "T_proxxx")
@Data
@Entity //和数据库的表对应
public class ProductInfo {
@Id //主键
private String productId;
/** 名字. */
private String productName;
/** 单价. */
private BigDecimal productPrice;
/** 库存. */
private Integer productStock;
/** 描述. */
private String productDescription;
/** 小图. */
private String productIcon;
/** 状态, 0正常1下架. */
private Integer productStatus;
/** 类目编号. */
private Integer categoryType;
private Date createTime;
private Date updateTime;
}
四、创建包repository
创建类ProductInfoRepository类, 定义List<ProductInfo> findByProductStatus(Integer productStatus)方法。

然后在类ProductInfoRepository右键-> Go
.....

然后勾选
findByProductStatus方法

这样,就生成了ProductInfoRepositoryTest类,增加RunWith和SpringBooTest注解。

然后完善findByProductStatus方法,运行单元测试方法
测试结果:

六、产品类目
1、创建产品目录实体类
package com.example.product.dataobject;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.util.Date;
@Data
@Entity
public class ProductCategory {
@Id //主键
@GeneratedValue //自增
private Integer categoryId;
//类目名称
private String categoryName;
//类目编号
private Integer categoryType;
private Date createTime;
private Date updateTime;
}
2、创建Dao层的ProductCategoryRepository 接口

3、 创建单元测试

七、创建服务
1、创建接口ProductService

2. 创建服务

产品状态Enum

3、单元测试

其中ProductApplicationTests类

同理,创建类目服务
八、创建Controller
1、创建ProductController类
@RestController
@RequestMapping("/product")
public class ProductController {
@Autowired
private ProductService productService;
@Autowired
private CategoryService categoryService;
@GetMapping("/list")
public ResultVO<ProductVO> list(){
//查询所有在架商品
List<ProductInfo> productInfoList = productService.findUpAll();
//获取类目的type列表
List<Integer> categoryTypeList = productInfoList.stream()
.map(ProductInfo::getCategoryType)
.collect(Collectors.toList());
//从数据库查询类目
List<ProductCategory> categoryList = categoryService.findByCategoryTypeIn(categoryTypeList);
//构造数据
List<ProductVO> productVOList = new ArrayList<>();
for(ProductCategory productCategory: categoryList){
ProductVO productVO = new ProductVO();
productVO.setCategoryName(productCategory.getCategoryName());
productVO.setCategoryType(productCategory.getCategoryType());
List<ProductInfoVO> productInfoVOList = new ArrayList<>();
for(ProductInfo productInfo : productInfoList){
if(productInfo.getCategoryType().equals(productCategory.getCategoryType())){
ProductInfoVO productInfoVO = new ProductInfoVO();
BeanUtils.copyProperties(productInfo, productInfoVO);
productInfoVOList.add(productInfoVO);
}
}
productVO.setProductINfoVOList(productInfoVOList);
productVOList.add(productVO);
}
return ResultVoUtil.success(productVOList);
}
}
其中ResultVO类
@Data
public class ResultVO<T>
{
private Integer code;
private String msg;
//具体内容
private T data;
}
ProductInfoVO类
@Data
public class ProductInfoVO {
@JsonProperty("id")
private String productId;
@JsonProperty("name")
private String productName;
@JsonProperty("price")
private BigDecimal productPrice;
@JsonProperty("description")
private String productDescription;
@JsonProperty("icon")
private String productIcon;
}
ProductVO类
@Data
public class ProductVO {
@JsonProperty("name")
private String categoryName;
@JsonProperty("type")
private Integer categoryType;
@JsonProperty("foods")
List<ProductInfoVO> productINfoVOList;
}
ResultVoUtil 类
public class ResultVoUtil {
public static ResultVO success(Object object){
ResultVO resultVO = new ResultVO();
resultVO.setData(object);
resultVO.setCode(0);
resultVO.setMsg("成功");
return resultVO;
}
}
最后启动工程测试
标签:te pro http update table type列 add private div autowired
原文地址:https://www.cnblogs.com/linlf03/p/9965745.html