现在进入第二个表Product_info的DAO层的开发与测试。
整个实现的过程和第一个表商品类目表的实现方式类似,分三步走的策略。
第一步建立一个实体类和数据库中的商品表是对应的。
第二步建立一个接口继承JPA。
第三步进行测试。
本篇文章的作用主要就是添加买家商品,查询商品的状态。
1.首先建立起一个ProductInfo实体类,方法和第一个表类似,每一个属性对应数据库表中的每一个属性。
// An highlighted block
@Data
@Entity
@NoArgsConstructor
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;
}
2.建立一个接口ProductInfoRepository,继承JpaRespository接口,该接口里面写入刚才建立的实体类和该实体类的主键。
因为JPA中没有查询商品状态这个方法,所以我们需要自己添加这个方法,
public interface ProductInfoRepository extends JpaRepository<ProductInfo,String> {//它的主键是String ,所以写个String
//要查询上架的商品 。通过商品的状态来查
List<ProductInfo> findByProductStatus(Integer productStatus);//自此,商品的dao我们已经开发完成,其实就是做了两步,一步是productInfo这个类的创建,一个是这个jpa的窗口
//最后一步很重要,一定要测试
}
3.根据建立好的接口进行测试。首先就是建立一个ProductInfoRepository接口的对象repository,根据这个对象,我们可以使用它的set方法,给新建的实体类对象ProductInfo对象存入其属性对应的值,然后再保存这个对象。
第二个测试一下查询状态的方法,把状态为0的商品存入到list这个列表中。
// An highlighted block
@RunWith(SpringRunner.class)
@SpringBootTest
public class ProductInfoRepositoryTest {
@Autowired
private ProductInfoRepository repository;//每次测试前都要搞个Jpa这个接口的对象
@Test
public void saveTest(){//就这样,就给这个表ProductInfo添加进了一行信息
ProductInfo productInfo=new ProductInfo();
productInfo.setProductId("13456");
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=repository.save(productInfo);
Assert.assertNotNull(result);
}
@Test//我们需要测试一下查询上架的商品
public void findByProductStatus() throws Exception{
List<ProductInfo> productInfos= repository.findByProductStatus(0);//0代表上架
Assert.assertNotEquals(0,productInfos.size());//只要有一个0,就算是通过
}
}
至此,商品表的DAO层开发和测试完成。