首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
jfinal 在save时,过滤Record多余字段
jfinal爱好者22
2022-06-28 15:24
比如我们有一些Map<String, Object> map,里面字段很多。在使用Db.save()时,把map转为record,可以把多余的字段自动过滤吗?
项目:
JFinal
评论区
zzutligang
2022-06-28 17:02
好像并不会,因为Record根本不知道你的表里有哪些字段。你通过Record的put,把一个map对象放进去,不是表字段的,也不会过滤掉。
回复
杜福忠
2022-06-28 17:15
需要使用高版本JF的 Model
或者自己扩展一个RecordKit 工具类,提前存储好对应表字段,然后实现一个剔除功能即可
回复
jfinal爱好者22
2022-06-29 09:18
@杜福忠
Model里面是没有属性的,只有set,get方法。再做剔除功能时,获取Model所有set或者get的所有方法名,把set,get去掉,再考虑驼峰命名,就能得到所有表字段。在和保存是的model所有字段做筛选。就可以剔除多余的字段。这个思路可以吗?
回复
杜福忠
2022-06-29 09:49
@jfinal爱好者22
new MyModel()._setOrPut( map ).save()
回复
zzutligang
2022-06-29 18:01
@杜福忠
这个new MyModel()._setOrPut( map ).save(),会把不是表字段的也放进去的。
回复
杜福忠
2022-06-29 18:14
@zzutligang
.save() 生成SQL的时候会自动过滤,不会放入数据库。
Model对象有没有多余字段无所谓,临时对象。
如果想知道哪些是保留字段,可以调用 CPI.getModifyFlag( myModel ) 获取到
回复
JFinal
2022-06-29 18:18
为啥不用 model.keep(...) 与 model.remove(...)
回复
jfinal爱好者22
2022-06-30 08:49
@JFinal
不是那个意思,波总。就是model里面有很多字段,但是数据库只有固定的字段,想要封装一个方法,可以在Db.save时,自动把model多余的字段剔除掉,这样保存时,不会报错。
回复
BigSnake1989
2022-07-11 17:53
@jfinal爱好者22
感觉你这样偏离了model的设计,baseModel 里面的设数据库字段一一对应,不需要做修改,model,可扩展查询的字段,不应该有set之类的,这样就不会进入到数据库了
回复
发送
我要反馈
热门反馈
扫码入社