日期:2014-05-20  浏览次数:20666 次

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

------解决方案--------------------
Java code

<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类的属性

------解决方案--------------------
为什么不在类中用for循环
insert into one_table(tablename) values(变量)
改变变量即可 不过插入的速度可能没你的好吧!!
------解决方案--------------------
类里面写循环调用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>