Umfangsvariablen in Frühlings-/MyBatis -Karten
Frage
Ich habe ein Gesprächscope.myvar = "myValue" Variable;
Ich würde es gerne in einer MyBatis -Karte wie, verwenden, z.
select col1, col1, conversationScope.myVar as ScopeVar
from table1;
desired result
col1 col2 ScopeVar
xxxx xxxx myValue
yyyy yyyy myValue
...
Lösung
MyBatis unterstützt dynamische SQL in der Natur, die Sie brauchen. Der große Trick besteht darin, $ {variable} anstelle von #{variable} zu verwenden. Seien Sie einfach vorsichtig, es lässt Sie anfällig für SQL -Injektionsangriffe. Bei Verwendung # mybatis verwendet mybatis vorbereitete statements, um eine SQL -Injektion und dann zu vermeiden, und dann
Nehmen wir zum Beispiel zum Beispiel eine Mapper -Schnittstelle mit Methode.
ComplexObject selectSomeObject(@Param("columnName") String columnName);
Ihre SQL -Karte kann den Parameter in einem Teil des tatsächlichen SELECT -Codes verwenden.
dh
<select id="selectSomeObject" resultType="someObject">
select t1.column as ${columnName}
from table1 t1
</select>
Wenn Sie eine globale Variable benötigen, lesen Sie diese Frage. MyBatis - Definieren eines globalen Parameters