mybatis补充

上一个文章介绍了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的更新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值