批量插入并返回批量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就是当前列
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)