Mybatis对Oracle批量插入的配置

项目里使用了MyBatis做持久层,数据库是Oracle,用到了Batch Insert 功能,因为以前做的都是MySQL,也做过PostgreSQL数据库,批量插入的语句都相同,但是在Oracle上就不好使了。后来网上搜了下,大致的写法有两种:

  
    insert into USER_CARE_SITE (USER_ID, CARE_SITE_ID)
     
	  (select #{item.userId,jdbcType=INTEGER}, #{item.careSiteId,jdbcType=INTEGER} from dual)
    
  


     INSERT ALL
     
	  INTO USER_CARE_SITE (USER_ID, CARE_SITE_ID)
      VALUES ( #{item.userId,jdbcType=INTEGER}, #{item.careSiteId,jdbcType=INTEGER} )
    
    SELECT * FROM DUAL
  

但是我这边的控制台始终报ORA-00933: SQL 命令未正确结束,然后我就把语句直接拷贝到sqldeveloper里面执行,都能工作。然后比对自己的代码和网友的代码,几乎是一模一样的啊,但是MyBatis 始终通不过,所以我就在猜这个可能是MyBatis里面的错误。

然后就google到了网友 mybatis批量插入数据到oracle ,里面提到了 “原因竟是mybatis批量插入oracle时需要显式指定为 useGeneratedKeys="false" 不然报错~~~”。测试下,果然可以,但是其他网友的能不设这个属性都可以工作,是因为他们在 MyBatis 的配置文件里面(我的是mybatis-config.xml )要么没设这个属性值,因为默认值就是false, 要么就是将这个值设置为 false 了,而我的偏偏就将其设置为 true,悲哀。。。。

  
        

不知道这个属性设置为 false 后,哪些功能会受到影响,这个我还没碰到。这次写出来就是为了方便大家在检索问题的时候多一个答案来源。

你可能感兴趣的:(Mybatis对Oracle批量插入的配置)