Java 将ArrayList插入Oracle表
在java语言中,是否有一种方法可以将Arraylist插入到表中,而无需循环Arraylist和编码:Java 将ArrayList插入Oracle表,java,arrays,oracle,insert,Java,Arrays,Oracle,Insert,在java语言中,是否有一种方法可以将Arraylist插入到表中,而无需循环Arraylist和编码: List<Object> lo = new ArrayList<Object>(); for (Object obj:lo) {PreparedStatement ps = conn.prepareStatement("INSERT INTO TABLE VALUES (?, ?, ? )"); ps.setString(1,obj.field1); ps.setI
List<Object> lo = new ArrayList<Object>();
for (Object obj:lo)
{PreparedStatement ps = conn.prepareStatement("INSERT INTO TABLE VALUES (?, ?, ? )");
ps.setString(1,obj.field1);
ps.setInt(2,obj.field2); }
List lo=new ArrayList();
用于(对象对象对象:lo)
{PreparedStatement ps=conn.prepareStatement(“插入表值(?,?)”);
ps.setString(1,对象字段1);
ps.setInt(2,对象字段2);}
而是公正地:
List<Object> lo = new ArrayList<Object>();
PreparedStatement ps = conn.prepareStatement("INSERT INTO TABLE VALUES (?, ?, ? )");
ps.insertArray(lo);
List lo=new ArrayList();
PreparedStatement ps=conn.prepareStatement(“插入表值(?,?)”;
ps.insertArray(lo);
没有。JDBC不知道每个insert参数应该使用什么值。必须明确设置:
List<MyClass> objects = new ArrayList<MyClass>();
// ...
try (PreparedStatement stmt = conn.prepareStatement("INSERT INTO TABLE VALUES (?, ?, ? )")) {
objects.stream().forEach(o -> { insert(o, stmt) });
}
private static void insert(MyClass, object, PreparedStatement stmt) {
stmt.setInt(1, object.getId());
stmt.setString(2, object.getName());
...
stmt.executeUpdate();
}
List objects=new ArrayList();
// ...
try(PreparedStatement stmt=conn.prepareStatement(“插入到表值(?,?)”){
objects.stream().forEach(o->{insert(o,stmt)});
}
私有静态void插入(MyClass、object、PreparedStatement stmt){
setInt(1,object.getId());
setString(2,object.getName());
...
stmt.executeUpdate();
}
考虑使用对象关系映射器来实现您想要的功能。没有。JDBC不知道每个insert参数应该使用什么值。必须明确设置:
List<MyClass> objects = new ArrayList<MyClass>();
// ...
try (PreparedStatement stmt = conn.prepareStatement("INSERT INTO TABLE VALUES (?, ?, ? )")) {
objects.stream().forEach(o -> { insert(o, stmt) });
}
private static void insert(MyClass, object, PreparedStatement stmt) {
stmt.setInt(1, object.getId());
stmt.setString(2, object.getName());
...
stmt.executeUpdate();
}
List objects=new ArrayList();
// ...
try(PreparedStatement stmt=conn.prepareStatement(“插入到表值(?,?)”){
objects.stream().forEach(o->{insert(o,stmt)});
}
私有静态void插入(MyClass、object、PreparedStatement stmt){
setInt(1,object.getId());
setString(2,object.getName());
...
stmt.executeUpdate();
}
考虑使用对象关系映射器来实现您想要的功能。请检查:我不是在寻找批处理解决方案,因为它只是将插入耦合到一个调用中(数据库仍应硬解析或软解析它们),而是一种通过一个命令/调用高效插入ArrayList或任何其他集合的方法。请检查:我不是在寻找批处理解决方案,因为它只是将插入耦合到一个调用中(数据库仍应硬解析或软解析),而是一种通过一个命令/调用高效插入ArrayList或任何其他集合的方法。