【问题标题】:Dynamic SQL for null parameter空参数的动态 SQL
【发布时间】:2017-09-12 18:25:27
【问题描述】:

我正在表 TELPOOL 中创建包含列的记录:

  • POOLID,varchar
  • 池名,varchar
  • POOLTYPE,varchar
  • PAIRPOOLID,varchar

如果 poolPO.pairPoolID 为空,像这样插入

INSERT INTO TELPOOL (POOLID, POOLNAME, POOLTYPE)
     VALUES (#{poolPO.id}, #{poolPO.name}, #{poolPO.poolType}

否则,

INSERT INTO TELPOOL (POOLID, POOLNAME, POOLTYPE, PAIRPOOLID)
     VALUES (#{poolPO.id}, #{poolPO.name}, #{poolPO.poolType}, #{poolPO.pairPoolID})

如何通过单个动态 SQL 处理这两种情况?

【问题讨论】:

    标签: dynamic-sql


    【解决方案1】:

    这是一个使用 MyBatis 条件的解决方案。 mapper XML中还有两条SQL,但上层代码不需要改动。

    <insert id="createTelPool" flushCache="true" >
        <if test="poolPO.pairPoolID != null" >
            INSERT INTO WBXTELPOOL (POOLID, POOLNAME, POOLTYPE, PAIRPOOLID)
                 VALUES (#{poolPO.id}, #{poolPO.name}, #{poolPO.poolType}, #{poolPO.pairPoolID})
        </if>
        <if test="poolPO.pairPoolID == null" >
            INSERT INTO WBXTELPOOL (POOLID, POOLNAME, POOLTYPE)
                 VALUES (#{poolPO.id}, #{poolPO.name}, #{poolPO.poolType})
        </if>
    </insert>
    

    【讨论】:

      猜你喜欢
      • 2019-03-15
      • 2013-03-20
      • 1970-01-01
      • 2014-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      相关资源
      最近更新 更多