java – 插入行并获取生成的ID
发布时间:2020-12-15 00:04:50 所属栏目:Java 来源:网络整理
导读:我正在尝试使用 Spring的JdbcTemplate类将一行插入名为transaction的 MySQL表中并获取生成的ID.相关代码是: public Transaction insertTransaction(final Transaction tran) { // Will hold the ID of the row created by the insert KeyHolder keyHolder =
我正在尝试使用
Spring的JdbcTemplate类将一行插入名为transaction的
MySQL表中并获取生成的ID.相关代码是:
public Transaction insertTransaction(final Transaction tran) { // Will hold the ID of the row created by the insert KeyHolder keyHolder = new GeneratedKeyHolder(); getJdbcTemplate().update(new PreparedStatementCreator() { public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement(INSERT_TRAN_SQL); ps.setString(1,tran.getTransactionType().toString()); Date sqlDate = new Date(tran.getDate().getTime()); ps.setDate(2,sqlDate); ps.setString(3,tran.getDescription()); return ps; } },keyHolder); tran.setId(keyHolder.getKey().longValue()); return tran; } 但是调用getJdbcTemplate().update会抛出以下异常
我可以插入行并获取生成的ID,而不放弃JdbcTemplate吗?我使用的是Spring 2.5,MySQL 5.5.27和MySQL Connector 5.1.26. 解决方法
请准备好您的声明,如下所示
PreparedStatement ps = connection.prepareStatement( INSERT_TRAN_SQL,Statement.RETURN_GENERATED_KEYS); 底层JDBC驱动程序(在这里间接通过Spring的JdbcTemplate使用)需要提示您要检索生成的密钥.这可以在准备PreparedStatement时完成 connection.prepareStatement(strSQL,Statement.RETURN_GENERATED_KEYS); 或者,在执行声明时 statement.executeUpdate(strSQL,Statement.RETURN_GENERATED_KEYS); 这也是java.sql.SQLException指向的内容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Java Map.clear()方法:从Map集合中移除所有映射关系
- springboot集成mqtt的实践开发
- macos – 10.8.2中的Java Web Start与本机(Apple)Java 1.6无
- 在Java中:如果我将HashMap中的键更改为等于另一个键会发生
- Java嵌套列表到数组转换
- 谈谈Java对象的强引用,软引用,弱引用,虚引用分别是什么
- java – 无法找到JAX-WS的Spring Namespace
- java – 约束两个作业不能在Quartz-Scheduler中同时运行
- java – 获取List中特定元素的数量
- java – 为什么hibernate为OneToMany映射生成插入和更新