Можно ли использовать экземпляр pojo для вставки с шаблоном JDBC?

1

Spring имеет BeanPropertyRowMapper чтобы вытащить из SQL на выбор и сопоставить объект POJO без необходимости создания настраиваемого контроллера строк. Я надеюсь на то же самое, но на инструкцию insert. Но я не могу найти эквивалент.

public boolean addRenewalQuote(Quote quote) {

    String sql = "INSERT INTO Customers (internal_order_number, b_email, s_email, b_firstname) VALUES (?, ?, ?, ?);";

    if(getTemplate().update(sql, quote) > 0) {
        return true;
    }else {
        return false;
    }
}

Имена строк котировки уже соответствуют столбцам в БД. Фактическая вставка довольно велика, и я надеюсь, что существует более быстрый метод, чем захват каждого получателя кавычек по отдельности и передача его методу обновления.

  • 0
    JdbcTemplate не имеет, NamedParameterJdbcTemplate с другой стороны, вы можете использовать BeanPropertySqlParameterSource . Вы должны использовать именованные параметры, чтобы заставить его работать, но спасает вас от вызова получателей.
  • 0
    Его близко. Я мог бы сделать удобный метод для преобразования объекта в карту, которая отвечала бы всем требованиям. Затем используйте отражение, чтобы преобразовать типы переменных в соответствующие типы SQL. Но я надеялся на то, что все сопоставления уже на месте.
Показать ещё 1 комментарий
Теги:
spring
spring-jdbc

1 ответ

0

Вид, но вам придется получить доступ к переменным-членам pojo следующим образом:

Object[] args = new Object[] {quote.getOrderNumber(), quote.getBEmail(), quote.getSEmail(), quote.getFirstName()};
int[] types = new int[] {Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR};
getTemplate().update(sql, args, types};

Не забудьте изменить массив args и тип массива соответственно.

Кроме того, вы можете прочитать больше в документации здесь.

  • 0
    Пока это верный подход, он очень ручной по своей природе. Я надеюсь передать свой объект в метод и заставить его обрабатывать все сопоставления имен и типов автоматически на основе того, что определено в объекте.
  • 0
    К сожалению, я не думаю, что это возможно с JdbcTemplate. В ваших классах POJO вы можете настроить функцию object.getArgumentArray () и функцию object.getTypeArray (), чтобы сделать ее многократно используемой в вашем приложении.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню