1. # Behandeln Sie alle eingehenden Daten als Zeichenfolge und fügen Sie den automatisch eingehenden Daten doppelte Zitate hinzu. Zum Beispiel: Bestellung von #user_id #, wenn der in 111 übergabe Wert 111 ist, ist der Wert beim Parsen in SQL durch "111" bestellt. Wenn der in ID IS -ID übergebene Wert an SQL analysiert wird, ist sie von "ID" bestellt.
2. Zeigt $ die übergebenen Daten direkt an und generiert sie in SQL. Zum Beispiel: Bestellung von $ user_id $, wenn der in SQL übergebene Wert 111 beträgt, ist der Wert von user_id. Wenn der in IS is ID übergebene Wert an SQL analysiert wird, ist die Bestellung durch ID.
3. Die # Methode kann die SQL -Injektion stark verhindern.
4. Die $ -Methode kann die SQL -Injektion nicht verhindern.
5. Die $ -Methode wird im Allgemeinen verwendet, um Datenbankobjekte zu übergeben, z. B. in Tabellennamen.
6. Im Allgemeinen, wenn Sie #verwenden können, verwenden Sie nicht $.
Bei Verwendung von Auftrag nach dynamischen Parametern beim Sortieren von MyBatis müssen Sie darauf achten, $ anstelle von # zu verwenden
Saitenersatz
Die Verwendung der #{} -Format -Syntax führt standardmäßig zu MyBatis, um eine vorverarbeitete Anweisung Eigenschaft zu erstellen und einen sicheren Wert damit als Hintergrund festzulegen (z. B.?). Dies ist sicher und schnell, und manchmal möchten Sie nur eine Zeichenfolge einfügen, die nicht direkt in die SQL -Anweisung ändert. Zum Beispiel können Sie wie Order by es wie folgt verwenden: Bestellung von $ {columnName}
Hier wird MyBatis keine Zeichenfolgen ändern oder entkommen.
Wichtig: Es ist nicht sicher, die Inhaltsausgabe vom Benutzer zu akzeptieren und eine unveränderte Zeichenfolge in der Anweisung zu geben. Dies kann zu potenziellen SQL -Injektionsangriffen führen, sodass Sie den Benutzern nicht erlauben sollten, diese Felder zu betreten oder normalerweise selbst zu entkommen und selbst zu überprüfen.
Das obige ist die kurze Diskussion über den Unterschied zwischen # und $ in MyBatis. Ich hoffe, jeder kann Wulin.com unterstützen ~