use of org.nutz.dao.sql.Pojo in project nutz by nutzam.
the class DoInsertLinkVisitor method visit.
public void visit(final Object obj, final LinkField lnk) {
final Object value = lnk.getValue(obj);
if (Lang.length(value) == 0)
return;
// 从宿主对象更新关联对象
opt.add(Pojos.createRun(new PojoCallback() {
public Object invoke(Connection conn, ResultSet rs, Pojo pojo, Statement stmt) throws SQLException {
lnk.updateLinkedField(obj, value);
return pojo.getOperatingObject();
}
}).setOperatingObject(obj));
// 为其循环生成插入语句 : holder.getEntityBy 会考虑到集合和数组的情况的
final Entity<?> en = lnk.getLinkedEntity();
Lang.each(value, new Each<Object>() {
public void invoke(int i, Object ele, int length) throws ExitLoop, LoopException {
if (ele == null)
throw new NullPointerException("null ele in linked field!!");
// 执行插入
opt.addInsert(en, ele);
// 更新字段
opt.add(Pojos.createRun(new PojoCallback() {
public Object invoke(Connection conn, ResultSet rs, Pojo pojo, Statement stmt) throws SQLException {
lnk.saveLinkedField(obj, pojo.getOperatingObject());
return pojo.getOperatingObject();
}
}).setOperatingObject(ele));
}
});
}
use of org.nutz.dao.sql.Pojo in project nutz by nutzam.
the class NutPojoMaker method makeUpdate.
public Pojo makeUpdate(Entity<?> en, Object refer) {
Pojo pojo = Pojos.pojo(expert, en, SqlType.UPDATE);
pojo.setEntity(en);
pojo.append(Pojos.Items.entityTableName());
pojo.append(Pojos.Items.updateFields(refer));
return pojo;
}
use of org.nutz.dao.sql.Pojo in project nutz by nutzam.
the class EntityOperator method addUpdate.
public Pojo addUpdate(Condition cnd) {
if (null == entity)
return null;
Pojo pojo = dao.pojoMaker.makeUpdate(entity, null).append(Pojos.Items.cnd(cnd));
pojoList.add(pojo);
return pojo;
}
use of org.nutz.dao.sql.Pojo in project nutz by nutzam.
the class EntityOperator method addInsert.
public List<Pojo> addInsert(Entity<?> en, Object obj) {
if (null == en)
return null;
int len = Map.class.isAssignableFrom(obj.getClass()) ? 1 : Lang.length(obj);
List<Pojo> re = new ArrayList<Pojo>(len);
if (len > 0) {
if (len == 1) {
for (Pojo pojo : en.cloneBeforeInsertMacroes()) re.add(pojo.setOperatingObject(obj));
}
re.add(dao.pojoMaker.makeInsert(en).setOperatingObject(obj));
if (len == 1) {
for (Pojo pojo : en.cloneAfterInsertMacroes()) re.add(pojo.setOperatingObject(obj));
}
pojoList.addAll(re);
}
return re;
}
use of org.nutz.dao.sql.Pojo in project nutz by nutzam.
the class EntityOperator method addInsertSelfOnly.
public Pojo addInsertSelfOnly(Entity<?> en, Object obj) {
if (null == en)
return null;
Pojo pojo;
if (obj instanceof Chain) {
pojo = dao.pojoMaker.makePojo(SqlType.INSERT);
pojo.append(Pojos.Items.entityTableName());
pojo.append(new InsertByChainPItem((Chain) obj));
pojo.setEntity(en);
} else {
pojo = dao.pojoMaker.makeInsert(en).setOperatingObject(obj);
}
pojoList.add(pojo);
return pojo;
}
Aggregations