package org.nutz.dao.impl.link;
import java.util.Map;
import org.nutz.dao.FieldFilter;
import org.nutz.dao.FieldMatcher;
import org.nutz.dao.entity.LinkField;
import org.nutz.dao.impl.AbstractLinkVisitor;
import org.nutz.lang.Lang;
public class DoUpdateLinkVisitor extends AbstractLinkVisitor {
public void visit(Object obj, final LinkField lnk) {
Object value = lnk.getValue(obj);
if (Lang.length(value) == 0)
return;
if (value instanceof Map<?, ?>)
value = ((Map<?, ?>) value).values();
FieldMatcher fm = FieldFilter.get(lnk.getLinkedEntity().getType());
// 如果需要忽略 Null 字段,则为每个 POJO 都生成一条语句
if (null != fm && fm.isIgnoreNull()) {
opt.addUpdateForIgnoreNull(lnk.getLinkedEntity(), value, fm);
}
// 否则生成一条批处理语句
else {
opt.addUpdate(lnk.getLinkedEntity(), value);
}
}
}