生成测试方法
Go To Test
生成的测试方法注意添加注解
@RunWith(SpringRunner.class)
@SpringBootTest
@RunWith(SpringRunner.class)
@SpringBootTest
public class ProductInfoRespositoryTest {
}
测试类里面的方法。挨个测试
package com.imooc.sell.repository;
import com.imooc.sell.dataobject.ProductInfo;
import org.junit.Test;
import org.junit.Assert;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.math.BigDecimal;
import java.util.List;
/**
* @创建者zmw
* @创建时间 2019/3/4
* @描述
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class ProductInfoRespositoryTest {
@Autowired
private ProductInfoRespository respository;
@Test
public void saveTest() {
ProductInfo productInfo = new ProductInfo();
productInfo.setProductId("1234567");
productInfo.setProductName("皮蛋粥");
productInfo.setProductPrice(new BigDecimal(3.2));
productInfo.setProductStock(100);
productInfo.setProductDescription("很好喝的粥");
productInfo.setProductIcon("http://xxxxx.jpg");
productInfo.setProductStatus(0);
productInfo.setCategoryType(2);
ProductInfo result = respository.save(productInfo);
Assert.assertNotNull(result);
}
@Test
public void findByProductStatus() throws Exception {
List<ProductInfo> productInfoList = respository.findByProductStatus(0);
Assert.assertNotEquals(0, productInfoList.size());
}
}
枚举类方法
emun 修饰
要有 属性、有参构造、getter方法
目的:在代码里经常写 1、0、数字啊 ,这些数字就会分不清,所以用 枚举类来解
@Getter
public enum ProductStatusEnum {
UP(0,"在架"),
DOWN(1,"下架 ");
private Integer code;
private String message;
ProductStatusEnum(Integer code, String message) {
this.code = code;
this.message = message;
}
}
枚举类的用法
@Override
public List<ProductInfo> findAll() {
return respository.findByProductStatus(ProductStatusEnum.UP.getCode());
}
分页
// 分页 如果方法里传入的是Pageable 那么返回的也是Pageable对象 public Page<ProductInfo> findAll(Pageable pageable) { return respository.findAll(pageable); }
返回一个result结果对象
可以把 result 单独写出一个类。方法写为静态的不同方法(成功、失败、有参的、无参数)。
public class ResultVoUtils {
public static ResultVo success(Object object){
ResultVo resultVo = new ResultVo();
resultVo.setData(object);
resultVo.setCode(0);
resultVo.setMsg("成功");
return resultVo;
}
public static ResultVo success(){
ResultVo resultVo = new ResultVo();
return resultVo;
}
public static ResultVo error(Integer code, String msg){
ResultVo resultVo = new ResultVo();
resultVo.setCode(code);
resultVo.setMsg(msg);
return resultVo;
}
}
查询方法 与 数据拼接
@RestController
@RequestMapping("/buyer/product")
public class BuyerProductController{
@Autowired
private ProductService productService;
@Autowired
private CategoryService categoryService;
@GetMapping("/list")
public ResultVo list(){
// 1.查询所有上架的商品
List<ProductInfo> productInfoList = productService.findAll();
// 2.查询类目(一次性查询)
List<Integer> categoryTypeList = new ArrayList<>();
for(ProductInfo productInfo :productInfoList){
categoryTypeList.add(productInfo.getCategoryType());
}
List<ProductCategory> productCategoryList = categoryService.findByCategoryTypeIn(categoryTypeList);
// 3.数据拼装
List<ProductVO> productVOList = new ArrayList<>();
for (ProductCategory productCategory: productCategoryList) {
ProductVO productVO = new ProductVO();
productVO.setCategoryType(productCategory.getCategoryType());
productVO.setCategoryName(productCategory.getCategoryName());
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 ResultVoUtils.success(productVOList);
}
}