• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

ProSayJ

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

【mybatis批量插入】

mybatis批量插入操作:

  MySQL:1、INSERT INTO TABLE_NAME(ID,NAME)VALUES(1,'张三'),(2,'李四')
                  2、INSERT INTO TABLE_NAME(ID,NAME)VALUES(1,'张三');INSERT INTO TABLE_NAME(ID,NAME)VALUES(2,'李四')
     Oracle:1、INSERT INTO TABLE_NAME (ID,NAME) (SELECT 1,'张三' from dual) union all (SELECT 2,'李四' from dual)
                2、INSERT INTO TABLE_NAME (ID,NAME) VALUES(1,'张三');INSERT INTO TABLE_NAME(ID,NAME)VALUES(2,'李四')


  备注:4条SQL都是数据库支持的写法。两者的第二种是不推荐的写法,因为不管效率还是可读性上都远差于第一种,当然,还有更重要的一点,Mybatis不支持第二种写法,因为mybatis的一个事务只支持一条SQL,所以,Mybatis里写法只能取两者的第一种,代码如下:

MySQL:
<select id="batchSave" parameterType="java.util.List">
                INSERT INTO TABLE_NAME(ID,NAME) VALUES
                <foreach collection="list"  item="itm" separator=",">
                        (#{itm.id},#{itm.name})
                </foreach>
</select>
//////////////////////////////////////////////////////////////////////////////////////////////////
ORACLE:
<select id="batchSave" parameterType="java.util.List">
                INSERT INTO TABLE_NAME(ID,NAME) 
                <foreach collection="list"  item="itm" separator="union all">
                        (SELECT #{itm.id},#{itm.name} FROM DUAL)
                </foreach>
</select>

posted on 2017-03-28 10:44  ProSayJ  阅读(173)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3