#java #database #spring #jdbctemplate
#java #База данных #spring #jdbctemplate
Вопрос:
Возможно ли заполнить объект (pojo) без создания mapper, позволяя spring автоматически определять имена элементов данных, которые соответствуют столбцам? Я ожидал получить что-то похожее на SimpleJdbcInsert, в котором я использую следующее:
new SimpleJdbcInsert(dataSource).withTableName("actors").execute(new BeanPropertySqlParameterSource(actor));
Спасибо!
Ответ №1:
В зависимости от того, какую версию Spring вы используете, вы можете использовать BeanPropertyRowMapper, который сопоставит столбцы с переменными в вашем POJO. Он отобразит либо прямые совпадения, либо преобразует имена баз данных в стиле подчеркивания в имена переменных в стиле верблюжьего регистра в вашем классе Java.
Ответ №2:
Честно говоря, я не знаю для spring, но, используя Bean common utils из apache, легко реализовать универсальный шаблон JDBC, выполняющий именно это.
Ответ №3:
Вы используете SimpleJdbcInsert, я думаю, вы имеете в виду SimpleJdbcTemplate, который приводит к повторному запуску?
Хороший способ — использовать RowMapper или ResultSetExtractor из Spring JDBC.
Но вы можете пропустить оболочку, используя метод queryForMap из SimpleJdbcTemplate, и передать результаты в BeanUtils из apache commons beanutils с методами populate (объектный компонент, Свойства карты).
Хотя, я думаю, лучшим решением является RowMapper или ResultSetExtractor.