Mybatis动态SQL之使用 foreach 标签

foreach 标签对 list 和 数组 是友好操作的:

  不管是 增删改查 都可以使用,以下是以查询为例子

情况一:遍历对象中集合属性

  入参/参数:对象
  出参/返回值:集合对象

 

实体类:
    
dao/mapper接口
<!-- 这是dao/mapper中的方法    List<Person> selectAll(Person per);-->

  XML文件

  <select id="selectAll" resultMap="包名.Person" parameterType="包名.Person">
        SELECT *
        FROM  PerSon
        where id in
           <foreach collection="hobby" item="item" index="index" separator="," open="("  close =")">
                 #{item}
             </foreach>
    </select>

 

 




案例1:
  出参/返回值:集合对象
  入参/参数:集合
  目的:为什么怎么写呢 ?这样写效率高,这是mybatis在效率方面的升级
<!-- 这是dao/mapper中的方法    List<MyFile> selectById(@Param("abc") List<String> list);-->
    
  <select id="selectById" resultMap="BaseResultMap" parameterType="String"> SELECT * FROM file  where id in    <foreach collection="abc" item="item" index="index" separator="," open="(" close =")"> #{item} </foreach> </select>

  注意点: @Param 是给当前参数  起的别名,若果参数特别长,用这个注解起别名是非常有效的

       Collection 就是参数名,当然如果使用注解指定,必须写别名

       item 遍历当前集合,集合中的 值 名称,当然如果你愿意,你可以书写 aaa等

       index 遍历集合中的下标名

       separator 分隔符是什么,就是 逗号    怎么解释呢?   in(1,2,3) 这是 in 条件

       open 开始

       close  结束      

 

 案例2:

  出参/返回值:集合对象
  入参/参数:集合对象
<!-- 这是dao/mapper中的方法    List<MyFile> selectById(@Param("abc") List<user> users);-->
    
  <select id="selectById" resultMap="BaseResultMap" parameterType="user">
        SELECT *
        FROM  file
        where id in
           <foreach collection="abc" item="item" index="index" separator="," open="("  close =")">
                 #{item.user的属性名}
             </foreach>
    </select>

 



 
posted @ 2022-08-11 23:04  向大海  阅读(1044)  评论(0编辑  收藏  举报