mybatis动态sql语句
今天面试了一个5年左右的开发,让我知道为什么很多人都说程序员35岁就要被淘汰了。五年的开发连批量删除,批量导入都不会,那肯定是自己的原因呀。这个行业两极化很严重,优秀的特别优秀,差的也特别的差。
其实这挺悲哀的,五年了批量操作都不会,都是通过for循环来调用单一的删除,或者增加。当然了这样是可以完成功能的,但是这样写太low了,数据量大的时候性能也是不高的。今天我们看下mybatis的批量操作。
1、通过id的数组进行批量操作:
(1)dao层接口
public void delStu(int[] ids);
(2)我们只需要在controller层将变量ids赋值后,通过services层传到dao层,然后通过dao的实现类传给mybatis的sql。sql的代码如下:
<delete id="delStu" parameterType="int">
delete from student where id in
<foreach collection="array" open="(" close=")" separator="," item="id">
#{id}
</foreach>
</delete>
总结:
1、如果接口传入的是数组那么collection的值一定是 array
2、open:以什么开头
3、close:以什么结尾
4、separator:以什么作为分隔符
5、item:元素别名
6、如果 ids = {1,2,3};那么mybatis最终的动态语句是:delete from student where id in (1,2,3);
2、批量添加学生
<insert id="addStu" parameterType="it.heima.pojo.Student">
insert into student
(name,address) values
<foreach collection="list" separator="," item="stu">
(#{stu.name},#{stu.address})
</foreach>
</insert>
批量操作没有什么难的,希望各位可以掌握,不要再去在java代码里面通过for循环来实现批量操作了。
请先 后发表评论~