SimpleJdbcTemplate и пустые параметры

Исходный ответ: октябрь 2008

Вы также добрались весь " rundll32.exe shell32.dll " serie:

(см. обновление ниже)

  • rundll32.exe user.exe,**ExitWindows** [Быстрое Завершение работы Windows]
  • rundll32.exe user.exe,**ExitWindowsExec** [Windows Перезапуска]

    rundll32.exe shell32.dll,SHExitWindowsEx n
    

, где n обозначает:

  • 0 - LOGOFF
  • 1 - SHUTDOWN
  • 2 - REBOOT
  • 4 - FORCE
  • 8 - POWEROFF

(может быть объединен-> 6 = 2+4 FORCE REBOOT)

апрель 2015 Обновления (6 + несколько лет спустя):

ИНФОРМАЦИЯ 1800 года доброжелательный указывает в комментариях :

не используют rundll32.exe с этой целью. Это ожидает, что функция, Вы передали командную строку, имеет очень определенную сигнатуру метода - это не соответствует сигнатуре метода [1 114].

Raymond CHEN записал:

функциональная подпись, требуемая для функций, вызванных [1 115]:

void CALLBACK ExitWindowsEx(HWND hwnd, HINSTANCE hinst,
       LPSTR pszCmdLine, int nCmdShow);

, Который не мешал людям использовать rundll32 для вызывания случайных функций, которые не были разработаны, чтобы быть названными [1 117], как [1 118] или user32 ExitWindowsEx.

(ой)

фактическая функциональная подпись для ExitWindowsEx:

BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);

И сделать его совершенно ясным:

Rundll32 остаток от Windows 95, и он был удержан от использования с тех пор, по крайней мере, Windows Vista, потому что он нарушает много современных технических инструкций.

11
задан Robert Munteanu 21 July 2009 в 07:59
поделиться

1 ответ

В них есть смысл - JdbcTemplate не является интерпретатором SQL, он просто заменяет ваши заполнители.

Я предлагаю вам создать предложение с помощью служебного метода и объединить его со строкой запроса :

String createNullCheckedClause(String column, Object value) {
   String operator = (value == null ? "is" : "=");
   return String.format("(%s %s ?)", column, operator);
}

...

String query = "select * from table where " + createNullCheckedClause("col", x);

Не очень красиво. В качестве альтернативы, возможно, вы можете настроить MySQL, чтобы разрешить "= NULL", но я не думаю, что это вариант.

6
ответ дан 3 December 2019 в 11:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: