2011-02-17 3 views

답변

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} 
); 
+0

거기에 varargs를 허용하는 오버로드가 있으므로 새 배열을 더 이상 만들 필요가 없습니다. –

+0

@PieterDeBie하지만 때로는 수동으로 매개 변수 유형을 SQL 유형에 매핑해야 할 수도 있습니다. – user11153

+0

아, 제 잘못입니다. Types 배열을 보지 못했습니다. –

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를 참조하십시오.

관련 문제