mybatis 插入数据

这篇博客主要记录了初学者在SpringBoot项目中整合Mybatis进行数据插入时遇到的问题和解决方法,包括非列表数据和列表数据的插入。通过示例代码展示了如何处理非空判断以及使用foreach标签进行集合遍历插入。文章强调了测试在开发过程中的重要性,以避免后期出现的诸多问题。

WHY

初学SpringBoot的小白,整合mybatis写接口,遇到不少坑,这一篇是插入数据遇到的坑。不过说到底还是自己基础太差,还没学会站就要跑,所以算是在项目上一步步的学习成长。

TODO

插入数据之非列表

先上代码

<insert id="insert">
    insert into tb_student
    <trim prefix="(" suffix=")" suffixOverrides=",">
        <if test="stuId != null and stuId != ''">stu_id,</if>
        <if test="stuName != null and stuName != ''">stu_name,</if>
        <if test="stuAge != null and stuAge != ''">stu_age,</if>
        <if test="stuSex != null and stuSex != ''">stu_sex,</if>
        <if test="stuClasses != null and stuClasses != ''">stu_classes,</if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
        <if test="stuId != null and stuId != ''">#{stuId},</if>
        <if test="stuName != null and stuName != ''">#{stuName},</if>
        <if test="stuAge != null and stuAge != ''">#{stuAge},</if>
        <if test="stuSex != null and stuSex != ''">#{stuSex},</if>
        <if test="stuClasses != null and stuClasses != ''">#{stuClasses},</if>
    </trim>
</insert>

语法说明
prefix:在trim标签内sql语句加上前缀;
suffix:在trim标签内sql语句加上后缀;
suffixOverrides:去除多余的后缀内容。
这个格式就类似我们在写比较简单的插入语句代码,只不过多加了一个非空的判断。

<insert id = "insert">
   insert into tb_student(
      stu_id,
      stu_name,
      stu_age,
      stu_sex,
      stu_classes)
      values(
      #{stuId},
      #{stuName},
      #{stuAge},
      #{stuSex},
      #{stuClasses})
</insert>

插入数据之列表

<insert id="insertList" parameterType="java.util.List">
    insert into tb_student(
    stu_id,
      stu_name,
      stu_age,
      stu_sex,
      stu_classes)
    values
    <foreach collection="studentList" item="item" separator=",">
        (#{item.stuId},
        #{item.stuName},
        #{item.stuAge},
        #{item.stuSex},
        #{item.stuClasses},)
    </foreach>
</insert>

使用 foreach 进行遍历
贴上官方文档中的解释——
foreach 元素的功能非常强大,它允许你指定一个集合,声明可以在元素体内使用的集合项(item)和索引(index)变量。它也允许你指定开头与结尾的字符串以及集合项迭代之间的分隔符。这个元素也不会错误地添加多余的分隔符,看它多智能!
提示:你可以将任何可迭代对象(如 List、Set 等)、Map 对象或者数组对象作为集合参数传递给 foreach。当使用可迭代对象或者数组时,index 是当前迭代的序号,item 的值是本次迭代获取到的元素。当使用 Map 对象(或者 Map.Entry 对象的集合)时,index 是键,item 是值。

写在最后

最近写的一个接口文件,赶时间,加上己对业务不熟悉,Spring Boot用的也不熟练,很多东西一知半解,导致在测试时发现很多问题,花费很多时间。因此也意识到测试的重要性,免去了后续很多麻烦。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值