ibatis批量插入数据-iterate标签

iterate标签的是使用:

<iterate  

    property="" /*可选,   

        从传入的参数集合中使用属性名去获取值,   

        这个必须是一个List类型,   

        否则会出现OutofRangeException,   

        通常是参数使用java.util.Map时才使用,   

        如果传入的参数本身是一个java.util.List, 不能只用这个属性.  

        不知道为啥官网: http://ibatis.apache.org/docs/dotnet/datamapper/ch03s09.html#id386679  

        说这个属性是必须的, 但是测试的时候是可以不设置这个属性的, 还望那位大虾知道, 讲解一下.  

        */  

    conjunction="" /*可选,   

        iterate可以看作是一个循环,   

        这个属性指定每一次循环结束后添加的符号,   

         比如使每次循环是OR的, 则设置这个属性为OR*/  

    open="" /*可选, 循环的开始符号*/  

    close="" /*可选, 循环的结束符号*/  

    prepend="" /*可选, 加在open指定的符号之前的符号*/  

>

</iterate> 

mysql的批量插入:

 

<select id="test_iterate" parameterClass="java.util.List">  

    <![CDATA[ 

        selelct * from tb_name where id=123 

    ]]>  

    <iterate prepend="prepend" conjunction="conn" open="open" colse="close">  

        /*使用java.util.List作为参数不能设置property属性*/  

        <![CDATA[ 

            #v[]# 

        ]]>/*这里的"[]"是必须的, 要不然ibatis会把v直接解析为一个String*/  

    </iterate>  

</select>  

 

oracle的批量插入:

<insert id="insert_list" parameterClass="java.util.List">

 INSERT All 

<iterate conjunction=" " >  

  INTO  T_FLT_CACHE_CONFIG_MANAGE

(FLT_CACHE_ID,FLT_SWITCH_STATE,FLT_CREATE_TIME)

VALUES

(T_FLT_CACHE_CONFIG_MANAGE_SEQ.NEXTVAL, #list[].fltSwitchState#,       #list[].fltCreateTime#)

</iterate>

SELECT * FROM dual

</insert>

 

你可能感兴趣的:(iterate)