在controller里面写好
import net.sf.json.JSONObject;
@PostMapping("/insertlist")
public void insertList(@RequestBody JSONObject params) {
List<classDefinedByYou> dishes = params.getJSONArray("dish");
//读取key dish的内容
System.out.print("dishes"+dishes);
注意这里的classDefinedByYou 是一个需要之前就定义好的类,
可以写在controller里面,
但是 一般这些类型都在 我们的entity 或者dto里面 然后再import进来用
public class Dish {
private Long id;
private String name;
private String description;
private Long dishTypeId;
private Double price;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name == null ? null : name.trim();
}
public String getDescription() {
return description;
}
里面的一些getxx setxxx 可以右键然后 resource -> generate 生成
使用postman来测试下
后来我知道了 不用@requestbody也不需要jsonARRAY
可以直接用list<自定义lass>来接收
因为json有两种格式:①对象格式:{‘key1’:obj,‘key2’:obj,‘key3’:obj…}、②数组/集合格式:[obj,obj,obj…]。
所以当我们用postman这样传参 直接就传来个list list里面的内容会和entity里面的类一一映射自动map,所以两边的key要相同
controller接受处代码
@PostMapping("/insertlist")
public void insertList(@RequestBody List<Dish> dishes) {
// List<Dish> dishes = params.getJSONArray("dish");
System.out.print("dishes"+dishes);
dishService.insertList(dishes);
}
接下来总结下:
传多个参数的方法
1 用 @RequestParam
controller:
@PostMapping("/changeprice")
public void changePrice(@RequestParam("id") Long id, @RequestParam("price") double price) {
dishService.changePrice(id, price);
}
service.java:
void changePrice(long id, double price);
serviceimpl.java
@Override
public void changePrice(long id, double price){
dishMapper.changePrice(id, price);
}
dishmapper.java
public interface dishMapper{
void changePrice(@Param("id")long id, @Param("price")double price);
}
这里在接口处写上param(“名字”)这个名字在sql语句里面就是这个变量了
在开头不需要 定义 parameterType了
<update id="changePrice" >
update TM_DISH set PRICE = #{price} where ID = #{id} </update>
2 用之前那样的class来传说 放在一个类里面
3放在一个map里面传送 (还没有实践)