Mybatis Spirngboot Postmapping使用json传输参数list

在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里面传送 (还没有实践)

发布了69 篇原创文章 · 获赞 14 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_41147129/article/details/103471823