Целесообразно использовать JDBCTemplate
и NamedParameterJdbcTemplate
вместе с идеей, что NamedParameterJdbcTemplate
используется для вставки/обновления в то время как JdbcTemplate
заботится о получении и удаление? Потому что я могу вставлять объекты, используя NamedParameterJdbcTemplate
так просто, как показано ниже:Spring JdbcTemplate и NamedParameterJdbcTemplate
public long save(Domain obj) {
String sql = "insert into domain(name,password,salt,dnspod_domain_id,status)" +
" values(:name,:password,:salt,:dnspodDomainId,:status)";
KeyHolder keyHolder = new GeneratedKeyHolder();
namedJdbc.update(sql, new BeanPropertySqlParameterSource(obj), keyHolder);
return keyHolder.getKey().longValue();
}
Если я хочу, чтобы вставить объекты/данные в таблицу с помощью JDBCTemplate
, мне придется писать много кода вручную Параметризацию с PreparedStatement
.. .
Когда речь заходит о получении, я могу сделать это JDBCTemplate
, как показано ниже:
List<User> users = jdbcTemplate.query("SELECT * FROM user", BeanPropertyRowMapper.newInstance(User.class));
Нет необходимости использовать ResultSet
вместе с RowMapper
для извлечения строк.
Я обеспокоен тем, что если есть проблемы с производительностью, используя JDBCTemplate
и NamedParameterJdbcTemplate
вместе.
Вы можете, конечно. Но почему бы вам не использовать NamedParameterJdbcTemplate для выбора. Он предоставляет тот же метод: http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.html#query-java.lang.String-org. springframework.jdbc.core.RowMapper-. Сторона примечания: у редактора вопросов есть кнопка для форматирования кода. Просто используйте его (или просто нажмите Ctrl-K или просто вставьте все строки кода с 4 пробелами). Не используйте HTML. –
@JBNizet Большое спасибо за ваше предложение. –