Динамическое имя столбца по сравнению со значением в предложении where с использованием MyBatis - PullRequest
0 голосов
/ 30 октября 2018

Можно ли использовать что-то вроде

SEARCH_QUERY = "select * from info where #{columnName}=\"#{columnValue}\"";

с использованием MyBatis 3?

columnName должно быть динамическим.

Спасибо!

1 Ответ

0 голосов
/ 30 октября 2018

Когда вы используете синтаксис, такой как #columnValue mybatis создаст подготовленный оператор и свяжет переменную для вас. Это имеет несколько последствий:

  1. вам не нужно ставить кавычки вокруг #columnValue
  2. вам не нужно экранировать переданные значения
  3. # может использоваться только там, где разрешен параметр в запросе JDBC. Таким образом, вы не можете использовать его для генерации динамического имени столбца

Если вы хотите сгенерировать динамический запрос, используйте $columnName. Полный запрос будет выглядеть так:

select * from info where ${columnName}=#{columnValue}
...