浏览 4603 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-12
写法一: Object[] cocodeParams = new Object[2]; Object[] dataParams = new Object[3]; for(int i=0;i<n;i++){ cocodeParams[0]="0"; cocodeParams[1]="1"; BaseDAO.executeUpdate(sql, cocodeParams); dataParams[0]="A"; dataParams[1]="B"; dataParams[2]="C"; BaseDAO.executeUpdate(sql, dataParams); ----------------------------------------- 写法二: List cocodeList=new ArrayList(); List dataList=new ArrayList(); Object[] cocodeParams = null; Object[] dataParams = null; for(int i=0;i<n;i++){ cocodeParams = new Object[2]; cocodeParams[0]="0"; cocodeParams[1]="1"; cocodeList.add(cocodeParams); dataParams = new Object[3]; dataParams[0]="A"; dataParams[1]="B"; dataParams[2]="C"; dataList.add(dataParams); } BaseDAO.batchUpdate(sql, cocodeList); BaseDAO.batchUpdate(sql, dataList); } 1.BaseDAO是一个封装jdbc的工具类 2.BaseDAO.batchUpdate(String sql, Object[] params); 如:sql = "update employee set name = ? ,code = ? , age = ? " Object[] params = new Object[3]; params[0]="A"; params[1]="B"; params[2]="C"; 通过执行BaseDAO.batchUpdate(String sql, Object[] params) 达到update employee set name = 'A' ,code = 'B', age = 'C'的目的 通过Statement实现,传入sql语句和要设定的值(Object[]) 3.BaseDAO.executeUpdate(String sql, List params); 如:sql = "update employee set name = ? ,code = ? , age = ? " Object[] params1 = new Object[3]; params[0]="A"; params[1]="B"; params[2]="C"; Object[] params2 = new Object[3]; params[0]="B"; params[1]="C"; params[2]="D"; params.add(params1);params.add(params2); 通过执行BaseDAO.batchUpdate(String sql, Object[] params) 达到update employee set name = 'A' ,code = 'B', age = 'C';update employee set name = 'B' ,code = 'C', age = 'D'的目的 通过PreparedStatement实现,传入同构的sql语句和要设定的值(LIST) 在上面的两种情况中 写法一用了BaseDAO.batchUpdate(String sql, Object[] params); 写法二用了BaseDAO.executeUpdate(String sql, List params); 既然写法二用了List,那么add的时候就不能增加同一对象,必须创建新对象(否则,所有的都是相同的) 写法一,创建了cocodeParams和dataParams两个对象 写法一,创建了2*n个对象 现在的效率应该怎么分析呢? 写法一,少创建了对象,但用了statement 写法二,多创建了对象,但用了preparedstatement 我感觉各有己见,大家讲讲自己的看法吧 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-05-12
我会考虑用在循环体里面用
PreparedStatement.addBatch() 最后在一把调用 PreparedStatement.executeBatch() 这样一来,两全其美 |
|
返回顶楼 | |
发表时间:2008-05-13
方法二BaseDAO.executeUpdate(String sql, List params);
内部实际就是 循环体里面用 PreparedStatement.addBatch() 最后在一把调用 PreparedStatement.executeBatch() |
|
返回顶楼 | |
发表时间:2008-05-14
楼上的两位说的都不错
|
|
返回顶楼 | |
发表时间:2008-05-14
测试场景错了,现实中不会存在不改变statement那块参数的做法,在前提错了情况下作的结论是每月参考意义的。
|
|
返回顶楼 | |
发表时间:2008-05-19
楼上哈,好好看看啊,先不说例子中的已经可以改变参数个数,你甚至可以通过sql改变参数类型,更何况只是被封装后的方法中的两个啊!
|
|
返回顶楼 | |