3.0文档中,sql管理与动态生成的具体代码实现的疑问

3.0的文档中第43页末尾处,示例代码如下:

find(getSql("findPrettyGirl"), 16, 23)

这段代码IDEA标红,因此我个人认为应该是缺少了调用Db或者Model,所以尝试改成如下代码:

Db.find(Db.getSql("findPrettyGirl"), 16, 23)

但是Db.getSql()的三个方法都是有两个参数,根本没有一个参数的。那应该怎么写?

还有就是,第44页中间位置,示例代码如下:

JMap cond = JMap.create("age",18).put("weight",50);
SqlPara sqlPara = getSqlPara("findPrettyGirl",cond);
find(sqlPara);

实际使用时,无法运行(跟上面一样,我同样认为是缺少了调用Db或者Model),调整成如下代码后运行正常:

JMap cond = JMap.create("age",18);
cond.put("weight",50);
SqlPara sqlPara = Db.getSqlPara("findPrettyGirl",cond);
Db.find(sqlPara);

其中,

JMap cond = JMap.create("age",18).put("weight",50);

提示类型不匹配,分开写就没事儿了,这又是为啥?

评论区

JFinal

2017-03-02 16:08

find(getSql("findPrettyGirl"), 16, 23) 这行代码是在 model 中使用的范例,只有一个参数,但另一个参数就是该 model 中存放属性值的那个 map

所以,Model.getSql(...) 虽然只有一个参数,但第二个参数其实是自身的属性 map,而 Db.getSql(...) 由于与 model、record 是脱离的,所以必须要提供第二个参数

JMap.create("age",18).put("weight",50); 这行代码是手误,链式调用需要将 put 改为 set 才可以,感谢你的反馈,现已对该错误进行了改正

jfinal 手册新添加的 sql 管理部分是在春节前通宵赶出来的,有一些内容缺失,也有手误,再次感谢你的反馈

JFinal

2017-03-02 17:02

JMap.put 的手误已经改正并上传了新版本的 jfinal 手册,建议下载新版本

板砖哥

2017-03-03 11:17

nelsonnick

2017-03-03 21:54

@JFinal Db.paginate系列方法也可以使用Template Engine吗?

JFinal

2017-03-03 23:21

@nelsonnick Db.paginate 其中的参数仍然是 sql,所以也可以用 template engine,但并没有提供针对性的支持,下一版本 jfinal 3.1 会提供针对性的支持

热门反馈

扫码入社