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循环来实现批量操作了。

举报
评论 0