2016-03-08 70 views
1

有没有一种方法,在Java语言中,插入一个ArrayList到表中,而无需通过ArrayList的循环和编码:插入的ArrayList到Oracle表

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<Object> lo = new ArrayList<Object>(); 
    PreparedStatement ps = conn.prepareStatement("INSERT INTO TABLE VALUES (?, ?, ?)"); 
    ps.insertArray(lo); 
+0

检查此:http://stackoverflow.com/questions/4355046/java-insert-multiple-rows-into-mysql-with-preparedstatement – alobodzk

+0

即时消息不寻找批处理解决方案,因为它只是耦合到一个调用插入(数据库仍然应该对其进行硬解析),而是有效地通过一个命令/调用来插入ArrayList或任何其他集合。 –

回答

0

有不是。 JDBC不知道每个插入参数应该使用什么值。你必须明确地设置:

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(); 
} 

考虑使用对象关系映射器实现你想要什么。