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>