写完一个更新mapper 总结的教训和经验

前两天,领导给了我一个任务,写一个查询接口和一个更新接口,跟简单的任务,但是写了好几天才写出来,至于写的过程就不叙述了,写完之后感觉很丢人的。

我总结一下写的知识点和自己的感受

先说一下update sql 有三个没有关联的表,里面有三个相同的字段,前端把这三个参数传过来,需要根据其中两个字段,查出三个表中对应的记录 修改另一个字段,简单的方式,分别查出记录,如果有就修改,没有则跳过。这里不叙述了。这样得写6个mapper方法。

接下来说一下<selectKey>这个标签

简单来说这是一个在执行update insert 语句时 之前之后执行的一个select 语句 用于返回一个主键id或者返回一条记录数

<selectKey keyProperty="count" resultType="int" order="BEFORE">
  SELECT count(1) FROM DUAL WHERE ShopID =#{id,jdbcType=VARCHAR}
</selectKey>

keyProperty 是返回给pojo对象的一个属性 

resultType 返回的类型是int类型 

order 是在执行前还是执行后

<if test="count > 0"></if>   
<if test="count==0"></if>

当符合条件时执行条件 当不符合条件时也要处理  要不然会报错,我被这个坑 郁闷了一天。

 

第二个知识点:

查询三个无关联的表 结果合在一起 使用union all 当有查询条件的时候 要把查询条件放在条件里面 这样效率会高

第三个知识点 mapper 中动态sql

<where>  <choose>  <when><otherwise>  是在choose 内使用

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 MyBatis 中,可以使用批量更新更新多个对象的数据。假设你有一个对象,它有三个字段:field1、field2 和 field3。你可以按照以下步骤编一个批量更新Mapper。 首先,在你的 Mapper XML 文件中定义一个批量更新的语句,如下所示: ```xml <update id="batchUpdateObjects" parameterType="java.util.List"> UPDATE your_table SET field1 = CASE <foreach collection="list" item="item" index="index"> WHEN id = #{item.id} THEN #{item.field1} </foreach> END, field2 = CASE <foreach collection="list" item="item" index="index"> WHEN id = #{item.id} THEN #{item.field2} </foreach> END, field3 = CASE <foreach collection="list" item="item" index="index"> WHEN id = #{item.id} THEN #{item.field3} </foreach> END WHERE id IN <foreach collection="list" item="item" index="index" open="(" separator="," close=")"> #{item.id} </foreach> </update> ``` 在上面的语句中,我们使用了 MyBatis 的动态 SQL 和 foreach 标签。这个语句会根据传入的对象列表批量更新数据库中的记录。 接下来,在你的 Mapper 接口中定义一个对应的方法,如下所示: ```java void batchUpdateObjects(List<YourObject> objects); ``` 然后,你可以在你的代码中调用这个方法来进行批量更新操作,如下所示: ```java List<YourObject> objects = new ArrayList<>(); // 添加要更新的对象到列表中 yourMapper.batchUpdateObjects(objects); ``` 这样,你就可以使用 MyBatis 一个有三个字段的对象的批量更新操作了。记得将 "your_table" 替换为你实际的表名,"YourObject" 替换为你实际的对象名。同时,根据你的需求调整 SQL 语句和 Mapper 接口方法的命名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值