Heim > Java > javaLernprogramm > Der Unterschied zwischen ${ } und #{ } in Java Mybatis

Der Unterschied zwischen ${ } und #{ } in Java Mybatis

Guanhui
Freigeben: 2020-07-21 13:00:45
nach vorne
3658 Leute haben es durchsucht

Der Unterschied zwischen ${ } und #{ } in Java Mybatis

Okay, es ist fast ein Jahr her, seit ich mit der Entwicklung begonnen habe. Ich habe immer die Blogs anderer Leute gelesen, aber ich bin zu faul zum Schreiben und weiß nicht, wie man bloggt. Fangen wir heute langsam an, das Bloggen zu üben. Ich bin vor einiger Zeit in meiner Firma auf dieses Problem gestoßen.

1. Beispiele

select * from user where name = "dato"; 
select * from user where name = #{name}; 
select * from user where name = '${name}';
Nach dem Login kopieren

Unter normalen Umständen werden wir hier nichts anderes bemerken. Weil diese SQL unseren Zweck erfüllen kann, den Benutzer mit dem Namen dato abzufragen.

2. Unterschiede

Dynamic SQL ist eine der leistungsstarken Funktionen von mybatis und ein wichtiger Grund, warum es anderen ORM-Frameworks überlegen ist. Bevor mybatis die SQL-Anweisung vorkompiliert, analysiert es das SQL dynamisch und analysiert es in ein BoundSql-Objekt, in dem auch das dynamische SQL verarbeitet wird. In der dynamischen SQL-Analysephase weisen #{ } und ${ } unterschiedliche Leistungen auf.

select * from user where name = #{name};
Nach dem Login kopieren

#{} wird während der dynamischen Analyse in eine Parametermarkierung analysiert. Das heißt, die Anweisung nach dem Parsen lautet:

select * from user where name = ?;
Nach dem Login kopieren

Wenn wir dann ${} verwenden, füllt

select * from user where name = '${name}';
Nach dem Login kopieren

${} die Parameter aus, die wir beim dynamischen Parsen als String-Strings übergeben haben Unsere Anweisung wird zur folgenden Anweisung

select * from user where name = "dato";
Nach dem Login kopieren

Die SQL-Anweisung vor der Vorkompilierung enthält keine Variablen mehr und besteht aus vollständig konstanten Daten. Es entspricht unserem gewöhnlichen SQL ohne Variablen.

Zusammenfassend lässt sich sagen, dass die Ersetzungsphase von ${ }-Variablen in der dynamischen SQL-Analysephase erfolgt, während die Ersetzung von #{ }-Variablen im DBMS erfolgt.

Das ist der Hauptunterschied, den wir zwischen #{} und ${} sehen können. Darüber hinaus gibt es folgende Unterschiede:

  • Der Weg kann sehr groß sein Verhindern Sie die SQL-Injektion bis zu einem gewissen Grad. Die Methode

  • $ kann die SQL-Injection nicht verhindern.

  • $-Methode wird im Allgemeinen verwendet, um Datenbankobjekte wie Tabellennamen zu übergeben.

  • Verwenden Sie im Allgemeinen nicht $, wenn Sie können Verwenden Sie #.

Wenn wir also mybatis verwenden, versuchen wir, die #-Methode zu verwenden! ! ! Darauf sollte jeder achten

Empfohlenes Tutorial: „Java Tutorial

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen ${ } und #{ } in Java Mybatis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:jb51.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage