mybatis中mysql与Oracle批量删除与添加

今天既然遇到了这个问题那就写一下,加深自己的印象。

先讲mySql吧,myBatis的动态sql的彩蛋就是支持mysql的批量添加

话不多说上代码:

1.MySQL的批量添加:

<!--批量添加-->
	<insert id="addMoreUser" parameterType="java.util.List">
		insert into user(username,password,power) values
		<foreach collection="list" item="user" separator=",">
			(#{user.username},#{user.password},#{user.power})
		</foreach>
	</insert>

好,写完了。接下来讲mybatis的删除。

等一下,你糊弄谁呢?把代码复制就完了??????

嗯。。。。。。。。。。。。。

我觉得你能搜到这个内容毕竟是对mybatis有一些了解了,所以我只写出了核心代码,至于创表一共就三个字段那我自然就省略了,pojo表与接口类更是没有什么内容。如果你觉的我的代码写的不够多那证明你还应该去官网仔细查看动态SQL前面的面向接口编码。附带链接mybatis链接:http://www.mybatis.org/mybatis-3/zh/index.html

扯远了。。。。。。。。。

2.myslq的批量删除(ORACL数据库的删除相同)

删除主要采用in关键字完成,指定删除范围

<!--删除用户-->
	<delete id="delete" parameterType="String">
		delete from user
		where username in
		<foreach collection="list" item="item"  open="(" close=")" separator=",">
			#{item}
		</foreach>
	</delete>

3.oracle的批量添加

先讲我开始报错的写法:

<!--批量添加-->
	<insert id="addMoreUser" parameterType="java.util.List">
		<foreach collection="list" item="user"  >
			 insert into user_table(username,password,power) values            
(#{user.username},#{user.password},#{user.power});
		</foreach>
	</insert>

由于我进行了(settings)设置可以看见运行代码

<settings>
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>

所以可以看到控制台的运行语句

==>  Preparing: insert into user_table(username,password,power) values (?,?,?); insert into user_table(username,password,power) values (?,?,?); 
==> Parameters: zyf123(String), 1416(String), user(String), zyf1234(String), 1412(String), user(String)
Rolling back JDBC Connection [oracle.jdbc.driver.T4CConnection@1dfe2924]

??????why?语句copy在oracle数据库中是可以直接运行的,后来我到网上才知道原来这样写oracle是不能识别的,不能解析语句。

所以正确的写法应为:

	<!--批量添加-->
	<insert id="addMoreUser" parameterType="java.util.List">
		<foreach collection="list" item="user" open="begin" close=";end;" separator=";" >
			 insert into user_table(username,password,power) values (#{user.username},#{user.password},#{user.power})
		</foreach>
	</insert>

运行结果为:

=>  Preparing: begin insert into user_table(username,password,power) values (?,?,?) ; insert into user_table(username,password,power) values (?,?,?) ;end; 
==> Parameters: zyf123(String), 1416(String), user(String), zyf1234(String), 1412(String), user(String)
Committing JDBC Connection [oracle.jdbc.driver.T4CConnection@1dfe2924]

这样就写oracle就可以识别了。

可以了,打完收工。拜了个拜

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值