spring JdbcTemplate批量插入 怎么获得数据库自动增长的id

spring JdbcTemplate批量插入 怎么获得数据库自动增长的id,第1张

spring JdbcTemplate批量插入主键自动增长的方法:

批量插入并返回批量id的方法需要改写返回值:

注:由于JDBCTemplate不支持批量插入后返回批量id,所以此处使用jdbc原生的方法实现此功能握租庆。

示例代码如下:

public List<Integer>addProduct(List<ProductBean>expList) throws SQLException {

final List<ProductBean>tempexpList = expList

String sql="insert into product(id,s_id,status,datetime,"

+ "型粗 count,o_id,reasons"

+ " values(null,?,?,?,?,?,?)"

DbOperation dbOp = new DbOperation()

dbOp.init()

Connection con = dbOp.getConn()

con.setAutoCommit(false)

PreparedStatement pstmt = con.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS)

for (ProductBean n : tempexpList) {

pstmt.setInt(1,n.getSId())

pstmt.setInt(2,n.getStatus())

pstmt.setString(3,n.getDatetime())

pstmt.setInt(4,n.getCount())

pstmt.setInt(5,n.getOId())

pstmt.setInt(6,n.getReasons())

pstmt.addBatch()

}

pstmt.executeBatch()

con.commit()

ResultSet rs = pstmt.getGeneratedKeys()//获取结果

List<Integer>list = new ArrayList<Integer>段握()

while(rs.next()) {

list.add(rs.getInt(1))//取得ID

}

con.close()

pstmt.close()

rs.close()

return list

}

oracle数据库里面兆带的自动增张列我以序列手含的形式来的,首先你要新建一个序列,然后在你要插入数据的地方,调用你新建的这个序列号,nextval是下一列数字,current是当前列的数字

例如 首先创建一个序列:

CREATE sequence idauto (--创建序列)

start with 1 ( --初始值从1开始)

然后执行

然后你在插入数据的时候

insert into usreinfo(id,username) values(idauto.nextval,'aa')

这族薯芦样就成功了。

idauto.nextval 就是下一列,idauto.current就是当前列


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11994928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存