第三章 商品模块开发
3.1 商品创建
我们在进行模块开发的过程中应遵循先设计领域模型,再设计数据库的过程。因为领域模型中经常存在有级联关系(比如商品模型与销售模型之间),所以数据库的设计应该在领域模型设计之后。
1.创建ItemModel领域模型
商品模型主要包含有商品名,价格,库存,描述信息,图片url属性。为了减少在代码上对属性的一一判空,我们采用上节课学习到的validator来判空
public class ItemModel {
private Integer id;
//商品名称
private String title;
//商品价格
private BigDecimal price;
//商品的库存
private Integer stock;
//商品的描述
private String description;
//商品的销量
private Integer sales;
//商品描述图片的url
private String imgUrl;
}
2. 数据库表设计
考虑到之后商品交易下单要用到库存属性,所以我们设计两张表item以及库存表item_stock
item表
名 | 类型 | 说明 |
---|---|---|
id | int | 商品id |
title | String | 商品名称 |
price | double | 商品价格 |
descirption | varchar | 商品描述 |
sales | int | 商品销量 |
img_url | varchar | 图片URL |
itemStock表
名 | 类型 | 说明 |
---|---|---|
id | int | 库存id |
stock | int | 库存量 |
item_id | int | 商品id |
3.mybatis generator生成数据库映射
运行 mvn mybatis-generator:generate
生成ItemDO,ItemStockDO以及ItemDOMapper,ItemStockDOMapper文件
<table tableName="item" domainObjectName="ItemDO" enableCountByExample="false"
enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false"></table>
<table tableName="item_stock" domainObjectName="ItemStockDO" enableCountByExample="false"
enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false"></table>
由于在数据库设计过程中,我们让id属性采取自增的方式,所以要修改ItemDOMapper.xml与ItemStockDOMapper.xml所有的Insert和InsertSelective操作,向其中添加属性useGeneratedKeys=“true” keyProperty="id"
4. Serivice层部分
商品模块的部分主要要实现的功能是:
- 创建商品
- 浏览商品
- 商品详情浏览
ItemService接口
public interface ItemService {
//创建商品
ItemModel createItem(ItemModel itemModel);
//商品列表浏览
List<ItemModel> listItem();
//商品详情浏览
ItemModel getItemById(Integer id);
}
<