JFinal Model.save问题

AntMaster 发布于 2012/12/12 21:34
阅读 4K+
收藏 3

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

我有一个表,ID是自增字段,我进行下面操作: 

Uploadfile.dao.set("filepath",url)
              .set("filetype",uFileType.get(0).get("id"))
              .set("createtime",nowTime).save();

杯具发生了,他生成的SQL是:

Sql: insert into `uploadfiles`(`id`, `createtime`, `filepath`, `filetype`) values(?, ?, ?, ?)

连自增字段都添加上了。

后来我用KEEP方法搞掂!

Uploadfile.dao.set("filepath",url)
                              .set("filetype",uFileType.get(0).get("id"))
                              .set("createtime",nowTime)
                              .keep("filepath","filetype","createtime")
                              .save();

虽然搞掂,但觉得不太方便,不晓得还有啥方法好使,不想用Db.update!!

加载中
0
JFinal
JFinal

正确的做法应该是:

new Uploadfile()
.set("filepath", url)
.set("filetype", uFileType.get(0).get("id"))
.set("createtime", nowTime)
.save();
    YourModel 内的 dao 仅用于数据查询,不能用于承载数据,请看JFinal手册1.1.6第24页第一行,有如下说明:

特别注意:User中定义的 public static final User dao对象是全局共享的,只能用于数据库查询,不能用于数据承载对象。数据承载需要使用new User().set(…)来实现。

    另外,既然你用到了keep方法,但此时只需要去除id,可以使用 remove("id")来做到,这样更省代码。


JFinal
JFinal
回复 @Mr.CT : 完全可以,拿出来以后查询就要这样做了 new MyModel().find(sql, ..);
AntMaster
AntMaster
原来这样子啊。俺还是将里面的DAO拿出来吧。
0
绝望的八皮
绝望的八皮

Jfinal Model静态dao对象误用的问题

http://my.oschina.net/b1412/blog/84336

绝望的八皮
绝望的八皮
稍微想想应该知道静态的东西是非线程安全的,怎么能直接承载数据呢。。
AntMaster
AntMaster
想了一下,将Model里砍掉save,update方法就好了。
AntMaster
AntMaster
Model里放DAO,不合适,导致误用的可能性大大增大!
0
幻影浪子
幻影浪子

文档中不如把dao去掉算了,免得让大家误解.


不知道这么用的,查询也让他们new Model好了

幻影浪子
幻影浪子
@JFinal 每次都new Model()好了
JFinal
JFinal
dao 这个对象也有点好处,如果从文档中去掉了,后来接触的开发者就不知道此用法了
AntMaster
AntMaster
该评论暂时无法显示,详情咨询 QQ 群:点此入群
幻影浪子
幻影浪子
用法也一致了 @JFinal
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部