Les variables d'étendue dans les cartes printemps / mybatis
Question
J'ai conversationScope.myVar = variable "maValeur";
Je voudrais l'utiliser dans une carte mybatis comme,
select col1, col1, conversationScope.myVar as ScopeVar
from table1;
desired result
col1 col2 ScopeVar
xxxx xxxx myValue
yyyy yyyy myValue
...
La solution
mybatis pris en charge par SQL dynamique dans la nature dont vous avez besoin. La grande astuce est d'utiliser $ {variable} au lieu de # {variable}. Faites juste attention, il vous laisse vulnérable aux attaques par injection SQL. Lors de l'utilisation # utilisations de mybatis PreparedStatements pour éviter une injection SQL, puis
Alors, prenez par exemple par exemple, vous aviez une interface Mapper avec la méthode.
ComplexObject selectSomeObject(@Param("columnName") String columnName);
Votre carte SQL pourrait utiliser le paramètre dans une partie du code de sélection réel.
i.e..
<select id="selectSomeObject" resultType="someObject">
select t1.column as ${columnName}
from table1 t1
</select>
Si vous avez besoin d'une variable globale, consultez cette question. mybatis - définir un paramètre global