关于一个字段对应多个值的查询问题

关于一个字段对应多个值的查询问题

如果需要查id=1,3,5,7,9的用户信息,mapper.xml代码如何写?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好!

  1. 关于foreach,myabtis官网的讲解比较少,老师这里给同学列举两个比较常用的

    1)如果入参是list,那么collection = "list" 

    2)如果入参是map,那么collection的值是map的key,比如传递过去的

    map.put("ids",new List()),(map的value要是集合,否则无法遍历)这种情况下collection = "ids"

    其它情况基本没有用到过呢,在开发中使用list比较多。

  2. 第一种多个参数的方式,你可以将数据存在map中传入,(注意此处与上面的循环传递的map不同,循环传递的map的value是一个集合)比如:这种方式老师在后面有讲解呢

    http://img1.sycdn.imooc.com//climg/5de0e6980938805c09000281.jpg

    xml中直接获取值:

    http://img1.sycdn.imooc.com//climg/5de0e74f0992896f12490258.jpg

    第二种方式,同学后面的参数直接传递一个list集合就可以,然后xml写成老师贴出来的样子。

    http://img1.sycdn.imooc.com//climg/5de0e7e009c0368b06450148.jpg

  3. 后面的课程也会有myabtis的案例,这些在后面的课程中,老师都会使用到呢~在使用dao与mapper文件的映射时,就可以直接使用老师贴出来的方式来完成了。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~


好帮手慕柯南 2019-11-29 16:20:01

同学你好!

  1. item:循环体中的具体对象,在list和数组中是其中的对象,在map中是value。 该参数为必选。

  2. index: 在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选。

  3. collection = "array" / collection = "list"  :是数组类型,还是集合类型(一共有三种类型,分别为List, [](array), Map三种)该参数为必选。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 提问者 慕沐8221787 #1
    如果是集合类型,collection可以统一写collection=“list”,还是必须要写具体的集合类型。另外,这两种方式,分别调用SqlSession的哪个select方法呢?
    2019-11-29 16:45:40
芝芝兰兰 2019-11-28 17:52:05

同学你好。有两种做法。

1、定义多个参数。默认情况下多参数将会以它们的顺序位置和SQL语句中的表达式进行映射。

http://img1.sycdn.imooc.com//climg/5ddf96040908f61b07450075.jpg

然后使用

select * from users where id IN (#{id1},#{id2},#{id3});

2、定义传入参数是List<Integer> ids,那么只需要将其遍历到sql中即可:

<select id="findUsers" resultMap="forUsers">
select * from users
<if test="ids != null">
where id in
    <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
    #{item}  
    </foreach>
</if>
</select>

foreach标签会自动的生成一个以“(”开头,以“)”结尾,中间用“,”分割,循环的输出传入的list的字符串。

如果解答了同学的疑问,望采纳~

祝学习愉快~

  • 提问者 慕沐8221787 #1
    请解释一下foreach中的几个参数含义和用法:item、index、collection,谢谢!
    2019-11-29 14:32:30
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java数据库开发与实战应用2018版
  • 参与学习           人
  • 提交作业       277    份
  • 解答问题       4297    个

Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师