正常我们传入数组给后台,后台参数写Integer[] arr是接收不到数据的,必须以对象的形式传递,对象中先将数组进行JSONStringfy处理成JSON类型,然后在后台在解析该JSON数据。
前台代码:
1、this.memberList中存取了我需要的每个数字,但是是字符串类型,所以在传送之前先进行了一步骤转化。
2、ajax是自定义封装的全局发送ajax请求函数,第三个参数是要传递的数据。
send() {
//由于后台我要使用的是数字类型,所以我先将里面的数据转化为了数字类型
let members = []
for(let one of this.memberList){
members.push(Number(one))
}
//发送ajax请求
this.ajax(this.urls.searchMembers,"POST",
//重点步骤:后台创建了一个类接收前台的数据,类中的一个属性叫members
//members就是要传递的JSON数组,先将数据进行JSON.stringify化处理
{members:JSON.stringify(members)},
(res)=>{})
},
后台部分:
1、 先创建一个类用于接收刚刚传递过来的对象.
import lombok.Data;
@Data
public class searchMembersForm {
private String members;
}
2、在controller类中进行解析使用数据:
·采用的是JSONUtil.parseArray()函数进行解析。
·使用的包是
import cn.hutool.json.JSONUtil;
后端代码:
@PostMapping("/searchMembers")
@Operation(summary = "根据id查询姓名、id、头像")
public R searchMembers(@RequestBody searchMembersForm form){
//1、解析传来的数据
List<Integer> list = JSONUtil.parseArray(form.getMembers()).toList(Integer.class);
//2、执行我自己需要的逻辑
ArrayList<HashMap> res = userService.searchMembersById(list);
return new R().put("res",res);
}
MyBaties的foreach用法
foreach可以将一个list集合中的每个数据拆分开,然后按照自己的要求给组装成想要的数据。
1、parameterType="list" 传入参数的类型
2、 collection="list" 遍历的类型
3、item="one" 每个数据的名称
4、separator="," 数据的链接符
5、开始和结束符:open="(" close=")"
<select id="searchMembersById" parameterType="list" resultType="java.util.HashMap">
select id,name,photo
from tb_user
where status=1
and id in
<foreach collection="list" item="one" separator="," open="(" close=")">
#{one}
</foreach>
</select>