use*_*r_x 3 java side-effects java-8 java-stream
以这种方式处理和统计处理数据是否可以?
long count = userDao.findApprovedWithoutData().parallelStream().filter(u -> {
Data d = dataDao.findInfoByEmail(u.getEmail());
boolean ret = false;
if (d != null) {
String result = "";
result += getFieldValue(d::getName, ". \n");
result += getFieldValue(d::getOrganization, ". \n");
result += getFieldValue(d::getAddress, ". \n");
if(!result.isEmpty()) {
u.setData(d.getInfo());
userDao.update(u);
ret = true;
}
}
return ret;
}).count();
Run Code Online (Sandbox Code Playgroud)
因此,简而言之:迭代不完整的记录,如果数据存在则更新并计算这些记录数?
恕我直言这是不好的代码,因为:
谓词不应该有副作用(就像吸气剂不应该).这是意料之外的,这使它变得糟糕.
每次执行谓词都会导致大量查询被触发,这使得此代码无法扩展.
好的代码使得它显而易见(与此代码不同)
您应该更改代码以使用(相当简单的)单个更新查询(使用连接)并从持久性API的结果中获取"更新的行数"信息的计数.
| 归档时间: |
|
| 查看次数: |
535 次 |
| 最近记录: |