Spring Framework의 JdbcTemplate 클래스를 사용하여 INSERT 문을 실행하는 방법
봄에 JdbcTemplate를 사용하여 테이블에 데이터를 삽입하려면 어떻게 해야 합니까?누구든지 이것을 하기 위한 코드 샘플을 나에게 제공해 줄 수 있습니까?
사용방법:
jdbcTemplate.update(
"INSERT INTO schema.tableName (column1, column2) VALUES (?, ?)",
var1, var2
);
또는 인수를 SQL 유형에 수동으로 매핑해야 하는 경우:
jdbcTemplate.update(
"INSERT INTO schema.tableName (column1, column2) VALUES (?, ?)",
new Object[]{var1, var2}, new Object[]{Types.TYPE_OF_VAR1, Types.TYPE_OF_VAR2}
);
여러 장소에서 JdbcTemplate를 사용할 계획이라면 스프링 빈을 만드는 것이 좋습니다.
Java Config를 사용하면 다음과 같습니다.
@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의 업데이트 방법은 여기서 확인할 수 있습니다.
대신 사용할 수 있습니다(이름 지정은 매개 변수가 많을 때 유용할 수 있습니다).
Map<String, Object> params = new HashMap<>();
params.put("var1",value1);
params.put("var2",value2);
namedJdbcTemplate.update(
"INSERT INTO schema.tableName (column1, column2) VALUES (:var1, :var2)",
params
);
spring-boot를 사용하는 경우 DataSource 클래스를 생성할 필요가 없으며 데이터 url/username/password/driver를 지정합니다.application.properties
, 그러면 간단하게@Autowired
그것.
@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')");
}
}
의 예application.properties
:
#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>
자세한 사항은 공식 문서를 참조하십시오.
당신은 필요할 것입니다.datasource
함께 일하기 위해서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;
}
});
삽입 및 업데이트/삭제에 모두 업데이트를 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/5026943/how-to-execute-insert-statement-using-jdbctemplate-class-from-spring-framework
'programing' 카테고리의 다른 글
HTML5 캔버스 뷰포트의 너비 100% 높이? (0) | 2023.10.08 |
---|---|
Laravel Expulent: 필드 ID로 배열 키 반환 (0) | 2023.10.08 |
cume_dist vs percent_rank 또는 차이 (0) | 2023.10.08 |
봄의 맥락에서 건강한 콩과 건강하지 않은 콩 (0) | 2023.10.08 |
jQuery를 사용하여 링크에서 클릭을 프로그래밍적으로 트리거하는 방법은? (0) | 2023.10.08 |