今天既然遇到了这个问题那就写一下,加深自己的印象。
先讲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就可以识别了。
可以了,打完收工。拜了个拜