<insert id="insertSelective" parameterType="com.gls.pojo.GoCartOrders" useGeneratedKeys="true" keyProperty="orderId">
insert into go_cart_orders
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="orderId != null">
order_id,
</if>
<if test="vendorId != null">
vendor_id,
</if>
<if test="postPrice != null">
post_price,
</if>
<if test="allPrice != null">
all_price,
</if>
<if test="createTime != null">
create_time,
</if>
<if test="updateTime != null">
update_time,
</if>
<if test="isDeleted != null">
is_deleted,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="orderId != null">
#{orderId,jdbcType=BIGINT},
</if>
<if test="vendorId != null">
#{vendorId,jdbcType=BIGINT},
</if>
<if test="postPrice != null">
#{postPrice,jdbcType=DECIMAL},
</if>
<if test="allPrice != null">
#{allPrice,jdbcType=DECIMAL},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateTime != null">
#{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="isDeleted != null">
#{isDeleted,jdbcType=TINYINT},
</if>
</trim>
</insert>
trim标签有点类似于replace效果。
prefix:前缀覆盖并增加其内容
suffix:后缀覆盖并增加其内容
prefixOverrides:前缀判断的条件
suffixOverrides:后缀判断的条件
比如:
select b.* from sys_menu b where 1 = 1<trim suffix="WHERE" suffixOverrides="AND | OR"><if test="id != null and id !='' ">AND b.id =#{id} </if><if test="name != null">AND b.menu_name like #{name}</if></trim>
最终sql打印为:
select b.* from sys_menu b where 1 = 1 AND b.menu_name like '' WHERE
从结果可以发现:
<trim suffix="WHERE" suffixOverrides="AND | OR">
suffix是针对符合suffixOverrides的SQL语句追加后缀suffix值。
总而言之:
<trim suffix="WHERE" suffixOverrides="AND | OR">
And sqlxxx
最终结果是:
And sqlxxx WHERE