2017-04-17 34 views
0

我创建表TELPOOL记录的列:动态SQL空参数

  • POOLID,VARCHAR
  • POOLNAME,VARCHAR
  • 池类型,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}) 

我如何处理这两种situactions由单一的动态SQL?

回答

0

下面是使用MyBatis条件的解决方案。映射器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>