MyBatis动态SQL在实际开发中的应用(1)

1.往数据库插入数据

通过trim标签和if标签可以实现列数据为空的不进行插入。

insert into enum_machining_bill_delivery_type
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="deliveryType != null">
        delivery_type,
      </if>
      <if test="deliveryTypeName != null">
        delivery_type_name,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="deliveryType != null">
        #{deliveryType,jdbcType=CHAR},
      </if>
      <if test="deliveryTypeName != null">
        #{deliveryTypeName,jdbcType=CHAR},
      </if>
    </trim>

trim元素的主要功能是可以在自己包含的内容前加上某些前缀,也可以在其后加上某些后缀,与之对应的属性是prefix和suffix;可以把包含内容的首部某些内容覆盖,即忽略,也可以把尾部的某些内容覆盖,对应的属性是prefixOverrides和suffixOverrides;
本案例,通过动态标签的运用可以动态的插入每列数据,通过if标签进行null判断。

2.修改数据Update

update enum_machining_bill_delivery_type
    <set> //修改
      <if test="deliveryType != null">
        delivery_type = #{deliveryType,jdbcType=CHAR},
      </if>
      <if test="deliveryTypeName != null">
        delivery_type_name = #{deliveryTypeName,jdbcType=CHAR},
      </if>
    </set>
    where id = #{id,jdbcType=INTEGER}

set标签里面配合if标签可以实现动态修改数据,为空为null的列不进行修改。if起到判断作用,if里面是数据库字段和实体字段赋值语句。

3.批量增加

insert into fee_setting
        (
        warehouse_id, warehouse_name, machining_bill_type,
        amount, day_index,create_time
        )
        values
        <foreach collection="addFeeSettingsRequest.feeSettingList" item="item" index="index" separator=",">
            (
            #{addFeeSettingsRequest.warehouseId,jdbcType=INTEGER},
            #{addFeeSettingsRequest.warehouseName,jdbcType=VARCHAR},

            #{item.machiningBillType,jdbcType=VARCHAR},
            #{item.amount,jdbcType=DECIMAL},

            #{item.dayIndex,jdbcType=INTEGER},NOW()
            )
        </foreach>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值