Spring에서는 JdbcTemplate을 사용하여 테이블에 데이터를 어떻게 삽입 할 수 있습니까? 누구든지이 일을 위해 코드 샘플을 제공해 주시겠습니까?Spring Framework에서 JdbcTemplate 클래스를 사용하여 INSERT 문을 실행하는 방법
19
A
답변
0
JdbcTemplate을 사용하기 위해서는 데이터 소스가 필요합니다.
JdbcTemplate template = new JdbcTemplate(yourDataSource);
template.update(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement statement = connection.prepareStatement(ourInsertQuery);
//statement.setLong(1, beginning); set parameters you need in your insert
return statement;
}
});
15
사용 jdbcTemplate.update(String sql, Object... args)
방법 :
jdbcTemplate.update(
"INSERT INTO schema.tableName (column1, column2) VALUES (?, ?)",
var1, var2
);
또는 jdbcTemplate.update(String sql, Object[] args, int[] argTypes)
, 수동으로 SQL 유형의 인수에 매핑해야하는 경우 : 여러에서의 JdbcTemplate을 사용하려는 경우
jdbcTemplate.update(
"INSERT INTO schema.tableName (column1, column2) VALUES (?, ?)",
new Object[]{var1, var2}, new Object[]{Types.TYPE_OF_VAR1, Types.TYPE_OF_VAR2}
);
6
을 위치에 있다면 Spring Bean을 생성하는 것이 좋습니다.
이 될 것 자바 구성을 사용하여 :
@Configuration
public class DBConfig {
@Bean
public DataSource dataSource() {
//create a data source
}
@Bean
public JdbcTemplate jdbcTemplate() {
return new JdbcTemplate(dataSource());
}
@Bean
public TransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource());
}
}
는 다음의 JdbcTemplate이 될 수 있다고 사용하는 저장소 :
@Repository
public class JdbcSomeRepository implements SomeRepository {
private final JdbcTemplate jdbcTemplate ;
@Autowired
public JdbcSomeRepository(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Override
@Transactional
public int someUpdate(SomeType someValue, SomeOtherType someOtherValue) {
return jdbcTemplate.update("INSERT INTO SomeTable(column1, column2) VALUES(?,?)", someValue, someOtherValue)
}
}
내가 사용한 JdbcTemplate을에서 업데이트 방법 here을 찾을 수 있습니다.
1
스프링 부트를 사용하는 경우 DataSource 클래스를 만들 필요가 없으며 데이터 URL/사용자 이름/암호/드라이버를 application.properties
에 지정하면 간단히 @Autowired
이됩니다. application.properties
의
@Repository
public class JdbcRepository {
private final JdbcTemplate jdbcTemplate;
@Autowired
public DynamicRepository(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void insert() {
jdbcTemplate.update("INSERT INTO BOOK (name, description) VALUES ('book name', 'book description')");
}
}
예 :
#Basic Spring Boot Config for Oracle
spring.datasource.url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=YourHostIP)(PORT=YourPort))(CONNECT_DATA=(SERVER=dedicated)(SERVICE_NAME=YourServiceName)))
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
#hibernate config
spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect
그런 다음 pom.xml
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc7</artifactId>
<version>12.1.0.1</version>
</dependency>
<!-- HikariCP connection pool -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.6.0</version>
</dependency>
에서 드라이버와 연결 풀 종속성을 추가 자세한 내용은 official doc를 참조하십시오.
거기에 varargs를 허용하는 오버로드가 있으므로 새 배열을 더 이상 만들 필요가 없습니다. –
@PieterDeBie하지만 때로는 수동으로 매개 변수 유형을 SQL 유형에 매핑해야 할 수도 있습니다. – user11153
아, 제 잘못입니다. Types 배열을 보지 못했습니다. –