java使用QueryRunner插入ArrayList<Object[]>
我想使用QueryRunner执行ArrayList的插入。我在网上找到的唯一信息是插入一个对象[]。大致如下:
qr.update("insert into MyTable (param1,param2,param3) values (?,?,?)",
new Object[] { str1, str2, str3});
很明显,我希望避免遍历整个ArrayList,每次插入一个索引,因为每次插入的行数都是未知的
我只是想看看有没有人这样做。查询返回一个列表,所以我不明白为什么不能插入列表。如有任何建议,我们将不胜感激。谢谢
# 1 楼答案
我知道这很旧,但我在寻找有关Apache Commons DBUtils的信息,发现了这个。。。作为将来的参考,您可以:
首先将ArrayList转换为对象[]:
然后将
params
传递给QueryRunner上的批处理方法(返回int[]):# 2 楼答案
我也在努力解决这个问题,但决定创建一个modelToSqlConverter。这不是我写过的最漂亮的代码,但它很有魅力
实际上,我已经围绕我称为GenericDataAccessor的Dbutils创建了一个小包装器。这是一项正在进行的工作,我一有时间就会把它放到github上。对于所有中型项目来说,它都是一个很棒的工具,对于像Hibernate这样的真正的ORM来说,它感觉很小,但是对于仅仅使用JDBC来说,它感觉很大。无论如何。如果你想用这个,请放心,它对我很有帮助
这是ModelConverter
下面是你调用的插入方法
其工作方式是,提交模型列表或仅提交单个对象。我提供的方法是用模型列表进行更新,但你明白了。modelToSqlConvertor的构造函数处理所有事情。然后,使用dbutils qryRunner声明sql,并从modelToSqlConverter调用getter获取值和参数
要使此工作正常,您的模型必须与数据库表相同。我用JPA推荐了我的模特
希望这有帮助