Mybaits的去掉多余的符号问题


<insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.second.hand.trading.server.model.IdleItemModel" useGeneratedKeys="true">
    insert into sh_idle_item
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="idleName != null">
        idle_name,
      if>
      <if test="idleDetails != null">
        idle_details,
      if>
      <if test="pictureList != null">
        picture_list,
      if>
      <if test="idlePrice != null">
        idle_price,
      if>
      <if test="idlePlace != null">
        idle_place,
      if>
      <if test="idleLabel != null">
        idle_label,
      if>
      <if test="releaseTime != null">
        release_time,
      if>
      <if test="idleStatus != null">
        idle_status,
      if>
      <if test="userId != null">
        user_id,
      if>
    trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="idleName != null">
        #{idleName,jdbcType=VARCHAR},
      if>
      <if test="idleDetails != null">
        #{idleDetails,jdbcType=VARCHAR},
      if>
      <if test="pictureList != null">
        #{pictureList,jdbcType=VARCHAR},
      if>
      <if test="idlePrice != null">
        #{idlePrice,jdbcType=DECIMAL},
      if>
      <if test="idlePlace != null">
        #{idlePlace,jdbcType=VARCHAR},
      if>
      <if test="idleLabel != null">
        #{idleLabel,jdbcType=INTEGER},
      if>
      <if test="releaseTime != null">
        #{releaseTime,jdbcType=TIMESTAMP},
      if>
      <if test="idleStatus != null">
        #{idleStatus,jdbcType=TINYINT},
      if>
      <if test="userId != null">
        #{userId,jdbcType=BIGINT},
      if>
    trim>

这个mybaits的是插入一个商品的信息,为什么要重复两次,两个trim标签的作用是什么?

当然需要2个了,1个是字段,1个是值。

insert into student (id,name) values(1,"张三");

其中标签,可以理解为for循环。开头(。结尾)。中间,分割。

参考GPT和自己的思路:

这段 Mybatis 配置代码用于向数据库中插入一个商品的信息,其中使用了两个 <trim> 标签,分别对应字段名和字段值部分。

第一个 <trim> 标签将插入语句中的字段名部分包含在括号内,同时去掉多余的逗号,并在字段名对应的值为 null 时不插入该字段。prefix 属性指定括号前缀,suffix 属性指定括号后缀,suffixOverrides 属性指定去掉最后一个逗号。

第二个 <trim> 标签将插入语句中的字段值部分包含在括号内,同样去掉多余的逗号,并在字段值为 null 时不插入该字段。prefixsuffixsuffixOverrides 属性的含义同上。

这两个 <trim> 标签的作用是去掉多余的逗号,并对 null 值进行处理,保证 SQL 语句的准确性和稳定性。

  • 这篇文章:Mybaits笔记 也许能够解决你的问题,你可以看下

去掉前导后缀多余的空白