首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
jfinal 有没有对象拷贝
loulley
2017-04-25 18:09
类似BeanUtils.copyProperties(dest, orig);
项目:
JFinal
5
2
评论区
杜福忠
2017-04-25 19:46
如果是拷贝model属性的话: model_1._setAttrs(model_2)
回复
fmpoffice
2017-12-26 09:34
@杜福忠
如果某个属性字段不需要复制呢?
回复
杜福忠
2017-12-26 15:17
@fmpoffice
总结一下几个常用的:
model.remove("attrs1","attrs2");// 删除 多个键, 适用与删除少量不要的值。底层使用的是 map的remove
model.keep("attrs1","attrs2");// 保留需要的键, 适用与删除大量不要的值。底层使用的是 新建一个map拷贝值
model.put(model);//拷贝,不能写入数据库,可拷贝所有的键值。 底层使用的是 map的putAll
model._setAttrs(model);//拷贝,能写入数据库,只能拷贝数据库的键值(如果有其他字段,会抛出ActiveRecordException)。底层使用的是for (Entry e : attrs.entrySet()) set(e.getKey(), e.getValue());
回复
杜福忠
2017-12-26 15:20
@fmpoffice
这四个组合拳, 可用于你任何业务。
根据业务选择最佳的搭配方式
回复
fmpoffice
2018-07-25 07:58
@杜福忠
再请教一下:我用db.user(db2).find另一个数据源返回的Record,想把本地的数据源abc对拷Record里面的字段,我之前使用put是可以的,可是我把本地的数据源增加了一个字段,put之前通过r.set("新增字段","xxxx"); 然后再put过去,就不好使了!请问什么问题呢?
回复
杜福忠
2018-07-25 17:46
Db.user(db2).find 得到的 Record r,
直接 r.set("新增字段","xxxx");
再Db.user(abc).save("表名", r);
就可以了~
回复
cs3230524
2019-11-09 18:25
@杜福忠
请问下,两个model,属性有差异。我怎么把属性 A和属性B 的交集属性 的值赋值给属性 B呢。。一个一个 put,好傻啊
回复
杜福忠
2019-11-10 18:13
@cs3230524
在ModelB类里面 建个类似的方法:
public M _setMyAttrs(M model) {
return (M)_setMyAttrs(CPI.getAttrs(model));
}
public M _setMyAttrs(Map<String, Object> attrs) {
Table table = CPI.getTable(this);
for (Entry<String, Object> e : attrs.entrySet())
if(table != null && table.hasColumnLabel(e.getKey()))
set(e.getKey(), e.getValue());
return (M)this;
}
然后调用BModel modelB = new BModel()._setMyAttrs(modelA对象);
如果有很多这样的业务,可以单独建立一个 ModelKit ,里面大致也是和上面一样原理,把两个Model对象都穿入进去,进行操作。
手写,未测
回复
发送
我要反馈
热门反馈
扫码入社