SpringBoot 微信点餐系统 4:卖家端

1. 先建立 entity 层 数据库映射

@Data
@Entity
@DynamicUpdate
@Table(name="wxorder_product_info")
public class ProductInfo {

    @Id
    private String productId;

    /* 名字 */
    private String productName;

    /* 单价 */
    private Float productPrice;

    /* 库存 */
    private Integer productStock;

    /* 描述 */
    private String productDescription;

    /* 图片 */
    private String productIcon;

    /* 状态,0 正常 1下架 */
    private Integer categoryType;

    private Date createTime;

    private Date updateTime;
}

2. dao 层

public interface ProductInfoRepository extends JpaRepository{
  List findByProductStatus();
}

3. 测试

@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public void ProductInfoRepositoryTest(){

  @AutoWired
  privare ProductInfoRepository repository;
  @Test
  public ProductInfo queryTest(){
      ProductInfo productInfo = repository.findById("123456").get();
      Assert.assertNotNull(productInfo);
  }
}

4. Service

(1) 先编写接口。

public interface ProductInfoService{
    Product findOne(String productId);

    // 查询所有在架商品列表
    List findUpAll();

    // 分页,这个注意要选择 domain.Pageable
    Page findAll(Pageable pageable);

    ProductInfo save(ProductInfo productInfo);  
}

(2) 实现该接口

// 注意这个类一定要加 `Service` 注解,否则会抛出 bean 之类的错误,不能被 @Autowired 注解。
@Service
public class ProductInfoServiceImpl implements ProductInfoService{
      private final ProductInfoRepository repository;

      @AutoWired
      public ProductInfoServiceImpl(ProductInfoRepository repository){
            this.repository = repository;
      }

      @Override
      public ProductInfo findOne(String productId){
            return repository.findById(productId).get();  
      }

      @Override
      public List findUpAll(){
          // 可以通过使用枚举来写0
          return repository.findByProductStatus(ProductStatusEnum.UP.getCode());
      }

      @Override
      public Page findAll(Pageable pageable){
           return repository.findAll(pageable);
      }

      @Override
      public ProductInfo save(ProductInfo productInfo){
          return repository.save(productInfo);
      }
} 

(3) 编写 枚举类

public enum ProductStatusEnum{
      UP(0,""),
      DOWN(1,"")
      ;
      
      private Integer code;
      private String message;
// 构造方法
      ProductStatusEnum(Integer code, String message){
            this.code = code;
            this.message = message;
      }

      public Integer getCode(){
            return code;
      }

      public String getMessage(){
            return message;
      }
}

(4) 测试

@RunWith(SpringRunner.class)
@SpringBootTest
class public ProductInfoServiceImplTest{
    
      @Autowired
      private ProductInfoServiceImpl productInfoService;

      @Test
      public void findOne(){
              ProductInfo productInfo = productInfoService.findOne("1");
              Assert.assertNotNull(productInfo);
      }
      
      @Test
      public void findUpAll(){
              List productInfos = productInfoService.findUpAll();
              Assert.assertNotNull(productInfos);
      }

      @Test
      public void findAll(){
            Pageable pageable = new PageRequest(1, 2);
            Page  productInfoPage = productInfoService.findAll(pageable);
            System.out.println(productInfoPage.getTotalElements());
      }  

      @Test
      public void save(){
             ProductInfo productInfo = new ProductInfo();
             productInfo.setProductId("1");
             productInfo.setProductName("皮皮虾");
             productInfo.setProductStock(1);
             productInfo.setProductIcon("http://www.baidu.com");
             productInfo.setCategoryType(12);
             productInfo.setProductPrice(new BigDecimal(3.2));
             productInfo.setProductStatus(0);
             productInfo.setProductStatus(0);
             productInfoService.save(productInfo);
      }
}

总结

  1. 实现 Entity 层(接口及实现)
  2. 实现 Repository 层 (接口及实现) -> 测试
  3. 实现 Service 层 -> 测试

你可能感兴趣的:(SpringBoot 微信点餐系统 4:卖家端)