获取list前多少个参数 mybatis传值List类型的参数如何遍历
一、postman中如何传list 的参数
本文介绍如果通过postman发送带有list参数的请求
点击电脑上的Postman图标启动工具
点击New按钮建立个新的请求接口
在弹出的对话框中点击Request功能图标
填写请求的名称和描述信息,点击按钮Save to接口测试
点击新建立的请求,方法选择POST,再点击Headers,设定Content-Type为application/json
点击Body,选择raw选项
构造你要传递给后台接口的list参数,点击Send发送查看结果。大功告成
二、...list1.end(),0);这里的第三个参数是什么呢
首先,accumulate是用于累计计算的函数,默认情况下是求和。而其中第三个参数便是和的初始值。如果数据为a0,..., an,则accumulate返回a0+...+ an+初始值。
事实上,accumulate有两个版本:
template<classInputIt,classT>Taccumulate(InputItfirst,InputItlast,Tinit);
template<classInputIt,classT,classBinaryOperation>Taccumulate(InputItfirst,InputItlast,Tinit,BinaryOperationop)
第一个版本(即你使用的版本),相当于用加法*作调用第二个版本,即:op(op(...op(a0, a1),...an),初始值)。因而,也可以通过如下方式做累乘(假设数据类型为int):
std::accumulate(list1.begin(),list1.end(),1,std::multiplies<int>());
三、mybatis传值List类型的参数如何遍历
基本概念
WHERE id=1 OR id=10 OR id=16
在查询条件中,查询条件定义成一个sql片段,需要修改sql片段
如图所示
案例:
1.创建测试类@Test
public void findUserList() throws Exception{
SqlSessionFactory sqlSessionFactory= SqlSessionFactoryUtil.getSqlSessionFactory();
SqlSession session= sqlSessionFactory.openSession();
UserMapper mapper= session.getMapper(UserMapper.class);
UserQueryVo queryVo= new UserQueryVo();
UserCustomer customer= new UserCustomer();
queryVo.setCustomer(customer);
List<Integer> ids=new ArrayList<Integer>();
ids.add(1);
ids.add(10);
ids.add(22);
queryVo.setIds(ids);
List<UserCustomer> list= mapper.findUserList(queryVo);
for(UserCustomer userCustomer: list){
System.out.println(userCustomer.getId()+":"+userCustomer.getUsername());
}
session.close();
}
2.创建UserQueryVo
public class UserQueryVo{
//传递多个id
private List<Integer> ids;
//在这里包装查询条件(用户查询条件)
/*private User user;*/
private UserCustomer customer;
set get省
}
public class UserCustomer extends User{
//在这里面进行扩展用户信息
}
public class User implements Serializable{
private int id;
private String username;
private Date **rthday;
private String sex;
private String address;
//添加订单属性
private List<Orders> ordersList;
set get省
3. UserMapper
public interface UserMapper{
//用户信息综合查询列表
public List<UserCustomer> findUserList(UserQueryVo queryVo) throws Exception;
}
4.mapper.xml
<!--用户综合查询列表
#{customer.sex}:取出pojo包装类型里面的性别的值
${customer.name}:取出pojo对象里面的用户名称
-->
<select id="findUserList" parameterType="UserQueryVo" resultType="UserCustomer">
select* from user<!-- user.sex=#{customer.sex} and user.username like'%${customer.username}%'-->
<where>
<!--如果引用sql片段不在这个映射文件中那么前面就要加上namespace-->
<include refid="query_sql_where"/>
</where>
<!--定义一个sql片段
id:是sql片段的唯一标识
基于单表定义sql片段,那么这样sql片段重用性才高;
sql片段里面不要包含where
-->
<sql id="query_sql_where">
<if test="customer.sex!=null and customer.sex!=''">
and user.sex=#{customer.sex}
</if>
<if test="customer.username!=null and customer.username!=''">
and user.username like'%${customer.username}%'
</if>
<if test="ids!=null">
<!--
collection:指定对象**里面的属性 ids
item:遍历的时候每次生成的名称 user_id
open:开始遍历的时候拼接串AND(
close:遍历结束时拼接串)
separator:每次遍历的时候要拼接的串
-->
<!-- AND( id=1 OR id=10 OR id=22-->
<!--<foreach collection="ids" item="user_id" open="AND(" close=")" separator="or">
每次遍历需要拼接的串
id=#{user_id}
</foreach>-->
<!-- AND id IN(1,10,22)-->
<foreach collection="ids" item="user_id" open="AND id IN(" close=")" separator=",">
<!--每次遍历需要拼接的串-->
#{user_id}
</foreach>
</if>
</sql>