第1关:添加商品
任务描述
本关任务:实现添加商品功能。
相关知识
为了完成本关任务,你需要掌握:
- 添加商品;
- 功能实现。
添加商品
顾名思义,就是添加一个新的商品,如下图:
用户在前端输入数据提交到服务器,如果数据没有问题服务器就将数据保存到数据库。
功能实现
- dao 层添加数据库:
package com.lxc.dao;
import com.lxc.entity.Product;
import org.apache.ibatis.annotations.Insert;
import org.springframework.stereotype.Repository;
@Repository
public interface ProductDao {
//将 product 对象中的数据 insert into 到数据库
@Insert("insert into product(product_name,category_id,product_title,product_intro,product_picture" +
",product_price,product_selling_price," +
"product_num,product_sales,status) value(#{product_name},#{category_id},#{product_title},#{product_intro}" +
",#{product_picture}" +
",#{product_price},#{product_selling_price},#{product_num},#{product_sales},#{status})")
int addProduct(Product product);
}
- service 层:
public interface ProductService {
//定义接口
int addProduct(Product product);
}
public int addProduct(Product product) {
//调用 dao 层方法并返回结果集
return productDao.addProduct(product);
}
- controller 层:
@RequestMapping(value = "/addProduct")
public int addProduct(@RequestBody Product product){
//调用 service 层方法并返回结果集
return productService.addProduct(product);
}
- 数据库如下:
字段名称 类型 备注 product_id
int(11) NOT NULL AUTO_INCREMENT '商品id' product_name
char(100) NOT NULL '商品名' category_id
int(11) NOT NULL '类型id' product_title
char(30) NOT NULL '商品标题' product_intro
text NOT NULL '商品描述' product_picture
char(200) DEFAULT NULL '商品图片' product_price
decimal(10,2) NOT NULL '商品价格' product_selling_price
decimal(10,2) NOT NULL '商品售价' product_num
int(11) NOT NULL '商品存量' product_sales
int(11) NOT NULL '商品销售数量' status
int(11) DEFAULT NULL '商品状态'
编程要求
在右侧编辑器 ProductDao.java、ProductService.java 、ProductServiceImpl.java、ProductController.java 文件里 Begin-End 处根据提示补充代码。
测试说明
平台会对你编写的代码进行测试:发送请求检验结果集是否正确。 预期输入:
{
"product_name":"好东西",
"category_id":"1",
"product_title":"这是个好东西",
"product_intro":"这是个好东西",
"product_picture":"图片",
"product_price":"33.33",
"product_selling_price":"22.4",
"product_num":"11",
"product_sales":"1",
"status":"1"
}
预期输出: 1
开始你的任务吧,祝你成功!
ProductDao.java
package com.lxc.dao;
import com.lxc.entity.Product;
import org.apache.ibatis.annotations.Insert;
import org.springframework.stereotype.Repository;
@Repository
public interface ProductDao {
//向商品表中添加数据
/**************************Begin**************************/
@Insert("insert into product(product_name,category_id,product_title,product_intro,product_picture" +
",product_price,product_selling_price," +
"product_num,product_sales,status) value(#{product_name},#{category_id},#{product_title},#{product_intro}" +
",#{product_picture}" +
",#{product_price},#{product_selling_price},#{product_num},#{product_sales},#{status})")
int addProduct(Product product);
/**************************End**************************/
}
ProductService.java
package com.lxc.service;
import com.lxc.entity.Product;
import org.springframework.stereotype.Component;
@Component
public interface ProductService {
//定义添加商品 service 接口
/**************************Begin**************************/
int addProduct(Product product);
/**************************End**************************/
}
ProductServiceImpl.java
package com.lxc.service.impl;
import com.lxc.dao.ProductDao;
import com.lxc.entity.Page;
import com.lxc.entity.Product;
import com.lxc.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service("productService")
public class ProductServiceImpl implements ProductService {
@Autowired
Page<Product> page;
@Autowired
private ProductDao productDao;
//调用 dao 层添加商品方法并返回结果集
/**************************Begin**************************/
@Override
public int addProduct(Product product) {
return productDao.addProduct(product);
}
/**************************End**************************/
}
ProductController.java
package com.lxc.controller;
import com.lxc.entity.Page;
import com.lxc.service.ProductService;
import com.lxc.entity.Product;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value = "/product")
public class ProductController {
@Autowired
Page<Product> page;
@Autowired
private ProductService productService;
/**
* 添加商品信息
* @param product
* @return
*/
//调用 sevice 接口添加商品方法并返回结果集
/**************************Begin**************************/
@RequestMapping(value = "/addProduct")
public int addProduct(@RequestBody Product product){
return productService.addProduct(product);
}
/**************************Begin**************************/
}
Product.java
package com.lxc.entity;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
public class Product implements Serializable {
private int product_id;
private String product_name;
private int category_id;
private String product_title;
private String product_intro;
private String product_picture;
private BigDecimal product_price; //原价
private BigDecimal product_selling_price; //售价
private int product_num;
private int product_sales;
private int status;
}
加油哦,同学们!