刚刚接触mybatis,通过后台打印的SQL看到的样子是:
insert into one_table(tableid,tablename) values (?,?),(?,?),(?,?),(?,?)
请问这样的sql在是不是对于mysql是有效的呢?对于Oracle这样的sql是非法的吧?

解决方案 »

  1.   

    我用的是Oracle,请问怎么修改呢?烦请指教
      

  2.   

    主要是希望通过<insert><foreach></foreach></insert>的使用批量插入,修改过格式之后是
    insert into one_table(tableid,tablename) values(?,?),
    insert into one_table(tableid,tablename) values(?,?),
    insert into one_table(tableid,tablename) values(?,?)
    这种形式的sql在执行的时候也不成功,直接头大
      

  3.   


    <insert id="addAccessRoute" parameterClass="AccessRouteInfo">
        <![CDATA[
          INSERT INTO T_OSS_LOCATIONIDROUTE
              (ID,
               ACCESS_NODE,
               BEGIN_NUM,
               END_NUM,
               LOCATION_ID)
          VALUES
             (SYS_GUID(),
              #accessNode#,
              #beginNum#,
              #lastNum#,
              #locationId#)
        ]]>
        </insert>
    这个是oracle的,你可以试一试,其中#号中的是变量,对应着parameterClass="AccessRouteInfo"中AccessRouteInfo类的属性
      

  4.   

    为什么不在类中用for循环
    insert into one_table(tablename) values(变量)  
    改变变量即可 不过插入的速度可能没你的好吧!!
      

  5.   

    哥们,搞定没有。
    这种foreach针对插入一条记录还是OK,当出现多条记录的时候,对于oracle压根就支持。求解
      

  6.   

    这倒是有一个mysql批量删除     DELETE FROM VOTE 
         WHERE VOTE_ID IN
         <foreach item="item" index="index" collection="array"
    open="(" separator="," close=")">
    #{item}
    </foreach>
      

  7.   

    类里面写循环调用DAO
    mybatis
    <typeAlias alias="table" type="xxx.xxx.xxxx.TableVO" />
    <insert id="insertTable" parameterClass="table">
        <![CDATA[
          INSERT INTO ONE_TABLE
              (TABLEID,
               TABLENAME,
               BEGIN_NUM)
          VALUES
             (#tableid#,
              #tablename#)
        ]]>
        </insert>