Mybatis 插入和删除批处理操作
在操作数据库时,经常会碰到批量插入、批量删除的情况,直接执行SQL语句还好做一点,当使用Mybatis进行批量插入、批量删除时会有一些问题。下面对使用Mybatis批量插入,批量删除进行介绍。
1.批量插入
Java代码:
//Model:Test.java @Data publicclassTest{ privateStringx; privateStringy; privateStringz; } //Mapper:TestMapper.java publicvoidinsertTestList(List<Test>testList);
XML代码
<!--XML:TestMapper.XML--> ... <!--忽略重复数据--> <insertid="insertTestList"parameterType="Test"> INSERTIGNOREINTO test_table(test_x,test_y,test_z) VALUES <foreachitem="item"index="index"collection="list"open="("close=")"separator=","> #{item}.x,#{item.y},#{item}.z </foreach> </insert> <!--更新重复数据--> <insertid="insertTestList"parameterType="Test"> INSERTINTO test_table(test_x,test_y,test_z) VALUES <foreachitem="item"index="index"collection="list"open="("close=")"separator=","> #{item}.x,#{item.y},#{item}.z </foreach> ONDUPLICATEKEYUPDATE test_x=VALUES(test_x), test_y=VALUES(test_y), test_z=VALUES(test_z) </insert> ...
批量插入SQL语句
insertintotest_table(x,y,z)values(1,1,1),(2,2,2),(3,3,3)
备注:VALUE()是Mysql的一个函数,具体解释可以查看文档function_values。
主要功能就是在数据重复时可以获取要更新的值。
2.批量删除
Java代码:
//Model:Test.java @Data publicclassTest{ privateStringx; privateStringy; privateStringz; } //Mapper:TestMapper.java publicvoiddeleteTestList(List<Test>testList);
XML代码
<!--XML:TestMapper.XML--> ... <deleteid="deleteTestList"parameterType="Test"> DELETEFROM test_table WHERE <foreachitem="item"index="index"collection="list"open="("close=")"separator="OR"> test_x=#{item.x}ANDtest_y=#{item.y}ANDtest_z=#{item.z} </foreach> </delete> ...
SQL语句
deletefromtest_tablewhere(test_x=1ANDtest_y=1ANDtest_z=1)or(test_x=2ANDtest_y=2ANDtest_z=2)or(test_x=3ANDtest_y=3ANDtest_z=3)
备注:上面的代码为x,y,z为联合主键的情况,普通情况使用whereidin。
以上所述是小编给大家介绍的Mybatis插入和删除批处理操作,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!