这也是一个实践。
先看最低下
<insert id="insertProductoutDetail" parameterType="com.model.ProductDetail">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
insert into productdetail(productid,productplace,productbrand,productweight,productdetaipicurl) value(#{productid},#{productplace},#{productbrand},#{productweight},#{productdetaipicurl})
</insert>
往上
@RestController
public class ProductoutControl {
@Autowired
ProductService productService;
@RequestMapping(value = "/insertProductoutDetail",method = RequestMethod.POST)
public void insertProductoutDetail(@RequestBody ProductDetail productDetail){
productService.insertProductoutDetail(productDetail);
}
}
注意上边这个@RestController,Rest让你返回的String直接就在网页上显示出来字符串,傻傻的。
所以有了这部分(题外话)
@Controller
public class ProductControl {
@Autowired
ProductService productService;
@RequestMapping(value = "/toinsertProductoutDetail",method = RequestMethod.GET)
public String insertProductoutDetail(@RequestParam int id,Model model){
Product product = productService.findProductbyid(id);
model.addAttribute("product",product);
return "addproductdetail";
}
}
回到正题,往上
@FeignClient(value = "product")
public interface ProductDetailService {
@RequestMapping(value = "/insertProductoutDetail",method = RequestMethod.POST)
public void insertProductoutDetail(@RequestBody ProductDetail productDetail);
}
往上
@Controller
public class ProductAction {
@Autowired
private ProductService productService;
@Autowired
private ProductDetailService productDetailService;
@RequestMapping(value = "/toaddproductdetail",method = RequestMethod.GET)
public String toaddproductdetail(@RequestParam int id,Model model){
Product product = productService.findoutProductbyid(id);
model.addAttribute("product",product);
return "addproductdetail";
}
// insertProductoutDetail addproductdetail
@RequestMapping(value = "/addproductdetail",method = RequestMethod.POST)
public String addproductdetail(ProductDetail productDetail){
productDetailService.insertProductoutDetail(productDetail);
return "index"; //想给自己一个提醒
}
最后
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title></title>
</head>
<body>
<form action="addproductdetail" method="post">
<input type="hidden" name="productid" th:value="${product.id}" />
商品产地:<input type="text" name="productplace"/>
商品品牌:<input type="text" name="productbrand"/>
商品重量:<input type="text" name="productweight"/>
商品详情图片地址:<input type="text" name="productdetaipicurl"/>
<input type="submit" th:value="提交"/>
</form>
</body>
</html>
关键点在于:离HTML最近的是不带有@RequestBody的,(我记忆成是因为没有直接数据接触)而跨服务的时候是带有@RequestBody的。