今天在用mybatis写一个查询操作,需求是根据userid去查表查出其用户名username,返回用户名username与userid即可。
由于可能包含多个userid,因此把userid的值封装到map中,再把map添加的list里。
public List<Map<String, Object>> findUserName(String userid){
List<Map<String, Object>> list = new ArrayList<>();
String[] str = {"1","2","3"}; // 模拟数据
for (int i = 0; i <str.length; i++ ){
Map<String, Object> map = new HashMap<>();
map.put("userid", str[i]);
list.add(map);
}
return xxxMapper.findUserName(list);
}
mapper.xml文件
这样是没有办法出结果的,始终会报错。主要是因为where标签下不就一个参数,而且foreach循环当中也不用写#{item.userid},应该改为
<select id = "findUserName" parameterType="java.util.List" resultType="java.util.Map">
select userid,username
from user
<where>
id in
<foreach item="item" index="index" collection="list" open="(" close=")"
separator=",">
#{item}
</foreach>
</where>
</select>
这是我遇到的问题,记录下以后少踩坑,如果对您也有帮助,那就太好了,要是没有帮助,麻烦右上×。