一、创建工程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; } }
最后启动工程测试
作者:Work Hard Work Smart
出处:http://www.cnblogs.com/linlf03/
欢迎任何形式的转载,未经作者同意,请保留此段声明!