在Spring中,如何使用JdbcTemplate在表中插入数据。任何人都可以请给我一个这样做的代码示例。如何使用Spring框架中的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.update(
"INSERT INTO schema.tableName (column1, column2) VALUES (?, ?)",
new Object[]{var1, var2}, new Object[]{Types.TYPE_OF_VAR1, Types.TYPE_OF_VAR2}
);
6
如果您计划在多个使用的JdbcTemplate位置,为它创建一个Spring Bean将是一个好主意。
使用Java配置将是:
@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的update方法,我已经使用,可以发现here。
1
如果你使用spring-boot,你不需要创建一个DataSource类,只需在application.properties
中指定数据url /用户名/密码/驱动程序,那么你可以简单地使用@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>
添加驱动程序和连接池依赖性有关详细信息,请参阅official doc。
相关问题
- 1. 使用的JdbcTemplate在Spring框架
- 2. 使用执行INSERT语句中的子插入语句的MyBatis
- 3. JDBC使用函数执行INSERT语句
- 4. 理解的JdbcTemplate为INSERT和UPDATE语句
- 5. 执行两个INSERT语句
- 6. 执行文件中的INSERT语句
- 7. 使用Spring执行更新jdbctemplate
- 8. 使用spring框架的jdbcTemplate进行复杂过滤
- 9. Spring框架的JdbcTemplate的queryForObject方法
- 10. 如何在实体框架迁移中执行GO语句CodeFirst
- 11. 使用Contains在LINQ子句中使用实体框架执行IN语句
- 12. 使用INSERT语句
- 13. 如何从Excel中使用Spring的JdbcTemplate
- 14. 大规模INSERT - Spring框架
- 15. if语句为真时只执行INSERT
- 16. 如何在jdbc prepared语句中使用INSERT INTO ALL语句
- 17. 使用Spring的JdbcTemplate
- 18. 如何在XSLT中执行类似语句或等效语句
- 19. 如何使用HQL INSERT语句
- 20. 如何使用实体框架执行原始sql与IN语句6
- 21. 如何使用执行语句
- 22. 如何使用Where语句执行UpdateAsync
- 23. 如何使用mDb.update执行SQL语句?
- 24. 如何使用XPath执行WHERE语句?
- 25. 问题使用mysql_query()执行INSERT语句PHP
- 26. 在IF子句中执行select/insert语句Oracle
- 27. 如何组合返回多行的SELECT语句和INSERT语句?
- 28. 如何使用JavaScriptCore框架执行JavaScript?
- 29. 如何执行存储过程包含INSERT和SELECT语句都
- 30. 如何获得自动递增执行SQLQuery.executeUpdate后()insert语句
请注意,那里(now?)是一个接受可变参数的重载,所以您不需要再创建一个新的数组。 – 2017-10-09 11:59:52