2017-04-17 1 views
0

Je crée des enregistrements dans le tableau TELPOOL avec des colonnes:SQL dynamique pour le paramètre null

  • poolId, varchar
  • POOLNAME, varchar
  • TypePool, varchar
  • PAIRPOOLID, varchar

Si poolPO.pairPoolID est null, insérez comme ceci

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

Sinon,

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

Comment puis-je gérer les deux situactions par un seul SQL dynamique?

Répondre

0

Voici une solution en utilisant la condition MyBatis. Il y a encore deux SQL dans mapper XML, mais le code de couche supérieure n'a pas besoin d'être modifié.

<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>