Oracle与MySql数据库在结合MyBatis框架时批量添加sql语句写法不同点

Oracle+MyBatis实现批量添加的写法

  
	Dao写法:Integer insertBatchUser(List list);

写法一:
  
    INSERT INTO USER_TABLE (ID, USERNAME, PASSWORD, PHONE, IDCARD,ADDRESS)
    
      (  select
            #{item.id,jdbcType=VARCHAR},
            #{item.userName,jdbcType=VARCHAR},
            #{item.password,jdbcType=VARCHAR},
            #{item.phone,jdbcType=VARCHAR},
            #{item.idCard,jdbcType=VARCHAR},
            #{item.address,jdbcType=VARCHAR}
        from DUAL
      )
    
  
  
写法二:

 INSERT ALL

    INTO USER_TABLE (ID, USERNAME, PASSWORD, PHONE, IDCARD,ADDRESS)
    VALUES (
		  #{item.id,jdbcType=VARCHAR},
	      #{item.userName,jdbcType=VARCHAR},
          #{item.password,jdbcType=VARCHAR},
          #{item.phone,jdbcType=VARCHAR},
          #{item.idCard,jdbcType=VARCHAR},
          #{item.address,jdbcType=VARCHAR}
       )

  SELECT 1 FROM DUAL

写法一注意点:
1:useGeneratedKeys="false"
在xml映射器中配置的useGeneratedKeys参数只会对xml映射器产生影响,且在settings元素中设置的全局useGeneratedKeys参数值对于xml映射器不产生任何作用。同时Oracle 这样不支持自增主键列的数据库,如果把useGeneratedKeys 参数配置为 true,在插入多条数据时则可能会出现 ORA-00933: SQL command not properly ended这样的错误。这时,可以将 useGeneratedKeys 配置为 false,或者为了保证兼容性,使用 mybatis 提供的 selectKey 手动提供类似自增序列的效果。
2:separator="union all"

MySql+MyBatis实现批量添加的写法

 
      INSERT INTO USER_TABLE (ID, USERNAME, PASSWORD, PHONE, IDCARD,ADDRESS)
       VALUES 
        
            (
             #{item.id,jdbcType=VARCHAR},
	         #{item.userName,jdbcType=VARCHAR},
             #{item.password,jdbcType=VARCHAR},
             #{item.phone,jdbcType=VARCHAR},
             #{item.idCard,jdbcType=VARCHAR},
             #{item.address,jdbcType=VARCHAR}
            )
        
 

你可能感兴趣的:(笔记)