假设一张表有5个字段java代码中通过存储过程批量插入到该表并回显id的操作
假设表名为my_table,字段分别为id(自增长)、name、age、gender、address。以下是Java代码实现批量插入并回显id的操作:
- 定义存储过程
CREATE PROCEDURE insert_my_table(IN name VARCHAR(50), IN age INT, IN gender VARCHAR(10), IN address VARCHAR(100), OUT id INT) BEGIN INSERT INTO my_table(name, age, gender, address) VALUES(name, age, gender, address); SET id = LAST_INSERT_ID(); END
- Java代码中调用存储过程
// 假设已经获取到了待插入数据的列表dataList String sql = "{CALL insert_my_table(?, ?, ?, ?, ?)}"; try(Connection conn = dataSource.getConnection(); CallableStatement cs = conn.prepareCall(sql)) { for(Data data : dataList) { cs.setString(1, data.getName()); cs.setInt(2, data.getAge()); cs.setString(3, data.getGender()); cs.setString(4, data.getAddress()); cs.registerOutParameter(5, Types.INTEGER); cs.addBatch(); } int[] results = cs.executeBatch(); for(int i = 0; i < results.length; i++) { int id = cs.getInt(5); // 处理回显的id } } catch(SQLException e) { // 处理异常
原文地址: https://www.cveoy.top/t/topic/hbUM 著作权归作者所有。请勿转载和采集!