Mysql与Oracle中批量插入和更新区别

文章目录

      • 引言
      • 批量 Update
      • 批量 Insert
      • 批量 Select
      • 参考文献

引言

数据库的不同,决定了批量更新语句的差别!

批量 Update

  • Mysql

    update userTable
         
             
                 when id=#{user.id} then #{user.status}
             
             
                 when id=#{user.id} 
             
         
    where id in
    
        #{item.id}
    

  • Oracle
参数类型:List\ users 


	
		update userTable set id = #{user.id}
		where
		
			
				name = #{user.name}
			
			
				name = #{user.name} and age = #{user.age}
			
	
 

注意:获取参数时都要带上user变量,如#{user.xxx}

批量 Insert

  • Mysql
    如果你的数据库还支持多行插入, 你也可以传入一个 Author 数组或集合,并返回自动生成的主键。

  insert into Author (username, password, email, bio) values
  
    (#{item.username}, #{item.password}, #{item.email}, #{item.bio})
  

对于不支持自动生成类型的数据库或可能不支持自动生成主键的 JDBC 驱动,MyBatis 有另外一种方法来生成主键。

这里有一个简单(甚至很傻)的示例,它可以生成一个随机 ID(你最好不要这么做,但这里展示了 MyBatis 处理问题的灵活性及其所关心的广度):

  • Oracle

  
    select CAST(RANDOM()*1000000 as INTEGER) a from SYSIBM.SYSDUMMY1
  
  insert into Author
    (id, username, password, email,bio, favourite_section)
  values
    (#{id}, #{username}, #{password}, #{email}, #{bio}, #{favouriteSection,jdbcType=VARCHAR})

批量 Select

  • Mysql
  • Oracle
参数类型:List\ users 


参考文献

MyBatis 3 中文文档

你可能感兴趣的:(mybatis)