Перед тем, как разница в Mybatis $ # {} и {} является привлеченный в SQL предкомпилятору и # {значение} пройти образом , чтобы предотвратить инъекции SQL.
Что привело к идее хочет знать прекомпилировано. Так что прекомпилируется что?
Во-первых, три этапа:
-
Лексический и семантический разбор
-
Оптимизация оператор SQL, чтобы разработать план реализации
-
Выполнение и возвращает результат
Во-вторых, причина появляется прекомпилирована
1, во многих случаях, SQL заявление может быть повторено, или每次执行的时候只有个别的值不同
2, такие, как значение, где условие запроса различно, другой набор значений обновления, вставки значения различных значений, приведет к различному SQL заявления.
3, так как каждое из этих значений будет отличаться лексико семантический разбор , оптимизация, реализация плана развития , это будет влиять на эффективность .
4, ступень 1, и часто больше, чем суммарная длительность временного шага 3.
Вам нужно предкомпилированный играли в этом случае.
В-третьих, прекомпилируются
1, предкомпилированный: диск относится к базе данных, составленных до SQL заявления, направленного в СУБД в операторе SQL и параметры, так что, когда СУБД SQL выполняется, нет необходимости перекомпилировать.
2, скомпилированные преимущества:
1, в большинстве случаев, после того, как следующий SQL предварительно компилятор может быть выполнен непосредственно, СУБД не нужно перекомпилировать.
2, SQL-более сложным, тем больше будет сложность компилятор, множественные операции компилятор предварительно стадии могут быть объединены в одну операцию.
3, то же скомпилированный SQL может быть использован повторно. (Объект PreparedStatement производится после того, как предварительно скомпилированного SQL кэшируются,
В следующий раз за тот же SQL, вы можете непосредственно использовать этот объект кэша PreparedState. )
4, такое значение может быть SQL-заявление с заполнителями В качестве альтернативы, каждый компилятор не должен быть выполнен непосредственно,
Только при выполнении прямого различное значение для каждого запроса, чтобы установить положение метки-заполнителя.
5, можно рассматривать как скомпилированный SQL Statement шаблонного или параметрические.
Четыре, mybatis SQL динамического анализа исходного кода и предкомпилированного
mybatis SQL динамический анализ
mybatis до соединения вызова прекомпилировать SQL, SQL заявление будет динамическим разрешением, динамический анализ в основном включает в себя следующие функции:
-
-
Обработка заполнитель
-
Динамическая обработка SQL
-
Параметр проверки Тип
-
Примечание: mybatis По умолчанию все SQL будет прекомпилирована.
См: Https://Www.Cnblogs.Com/ConfidentLiu/p/7142495.Html
См: Https://Www.Jianshu.Com/p/9972d7b33061
Продолжение. , , ,