上一个文章介绍了mybatis的基本书写可参看:https://blog.csdn.net/weixin_48913290/article/details/125978583?spm=1001.2014.3001.5501
接下来,我们再补充一些mybatis中sql语句的编写,主要介绍批量sql在mybatis中遇到的问题
批量查询
直接使用in(1,2,....)即可,返回的是有个List<>类型,明确了这两点后,我们需要一个循环遍历的操作,将接收来的id值也就是in()里面的值遍历出来
<select id="isHavingInvitation" parameterType="java.lang.Long" resultType="java.lang.Long">
select count(id)
from
t_invitation
where delete_flag=0 and id in
<foreach collection="array" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
这里使用了foreach循环遍历的方法
collection代表输入值的类型,item代表每次遍历数值的名称,open代表以"("开始,separator表示中间用逗号隔开,close表示以")"结束
重点介绍批量插入、批量更新、批量删除操作
批量插入(直接上代码)
<insert id="insertUniversityUser" parameterType="tech.niua.admin.universityUser.domain.UniversityUser">
insert into t_university_user
(nickname,name,sex,job_number,password,introduction)
values
<foreach collection="list" item="universityUser" separator=",">
(#{universityUser.nickname},#{universityUser.name},#{universityUser.sex},#{universityUser.jobNumber},#{universityUser.password},#{universityUser.introduction},#)
</foreach>
</insert>
首先介绍foreach,对一个List进行循环遍历,collection是输入类型,item每一次遍历对象的名称,可自己定义,separater表示中间用","隔开
批量更新(直接上代码)
<update id="updatePrice">
<foreach collection="list" item="item" index="index" open="" close="" separator=";">
update price_info
<set>
<if test="item.status != null and item.status != ''">
status = #{item.status},
</if>
<if test="item.price != null and item.price != ''">
price = #{item.price},
</if>
</set>
where id = #{item.id}
</foreach>
</update>
这里类似于批量插入的思想,先将输入数据,放道List集合中,再循环遍历拿出数据来进行相应id的更新