Преобразование запроса в параметризованные подготовленные операторы в шаблоне java jdbc - PullRequest
0 голосов
/ 31 августа 2018

Как я могу преобразовать обычный запрос в параметризованный подготовленный оператор весной JDBC? Ниже приведен фрагмент запроса, который я пытаюсь изменить:

private String queryBuilder(Request request, Map<String, String> action) {
    StringBuilder builder = new StringBuilder();
    builder.append("select * " +
                   "from google_play " +
                   "where ID = '" + request.getId() + "' and " +
                   "SYS_CD = '" + request.getSystemCd() + "' and " +
                   "SYS_DT >='"+request.getSystemDate+"'");
    return builder.toString();
}

Может кто-нибудь предложить правильный способ изменить этот запрос, чтобы избежать внедрения SQL? Я нашел решение для этого, но не смог найти точное.

1 Ответ

0 голосов
/ 31 августа 2018

Я бы предложил начать использовать Spring JDBCTemplate, это поможет вам санировать запросы:

Это даст вам возможность указать параметры следующим образом:

final String QUERY = "select * " +
        "from google_play " +
        "where ID = ? and " +
        "SYS_CD = ? and " +
        "SYS_DT >= ?);

А затем запросить его с помощью:

YOUR_CLASS[] yourArray = jdbcTemplate.queryForObject(QUERY, request.getId(), request.getSystemCd(), request.getSystemDate, YOUR_CLASS[]);

YOUR_CLASS может быть, например, Person, если вы запрашиваете таблицу Person, я думаю, в вашем случае это будет что-то вроде сущности GooglePlay.

Есть действительно хорошие учебники:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...