• 【Mybatis】【10】foreach 批量操作


    正文:

    1,foreach属性

    属性 是否必选 描述
    item 元素进行迭代时的别名
    collection 要做迭代的数据集合
    separator 元素之间的分隔符
    open 表示该语句以什么开始
    close 表示该语句以什么结束
    index 每次迭代到的位置

    2,select count(1) from user where id in ( ? , ? ) 

    一定要注意到$和#的区别,$的参数直接输出,#的参数会被替换为?,然后传入参数值执行。

    <select id="test" resultType="int">  
      select count(1) from user  
      <where>  
        id in  
        <foreach item="item" collection="list" separator="," open="(" close=")" index="">  
          #{item.id}  
        </foreach>  
      </where>  
    </select> 

    3,select count(1) from user  where col_a = ? and col_b = ?  

    <select id="test" resultType="int">  
        select count(1) from user where  
        <foreach item="item" index="key" collection="map" open="" separator="AND" close="">
        ${key} = #{item}
        </foreach>  
    </select>

    4,Oracle :insert into user select ?,? from dual union all select ?,? from dual

    <insert id="test">        
        insert into user (id, name)     
        <foreach collection="userList" item="item" separator="UNION ALL">
            select #{item.id}, #{item.name} from user_temp
        </foreach>
    </insert>

    5,Mysql :insert into user(key, value) values (?, ?) , (?, ?) 

    <insert id="test">  
        insert into user(key, value) values  
        <foreach item="item" index="key" collection="map" open="" separator="," close="">
        (#{key}, #{item})
        </foreach>  
    </insert> 

    参考博客:

    Mybatis foreach 批量操作 - jason5186 - CSDN博客
    https://blog.csdn.net/jason5186/article/details/40896043

  • 相关阅读:
    类的加载
    java经典面试题(转)
    I/O NIO 2
    【转】Impala和Hive的关系
    【转】工作站和服务器的区别
    JAVA之线程
    【转】Linux中vim的粘贴复制快捷键的使用
    【转】Zookeeper集群为什么要是单数
    【转】Impala常见错误
    hadoop命令工作常用
  • 原文地址:https://www.cnblogs.com/huashengweilong/p/11056265.html
Copyright © 2020-2023  润新知