2017-02-23 11:51

Db.batchSave(...) 仅仅是对 JDBC 的 batch 执行 sql 功能的一个极薄封装,而 JDBC 的 batch 功能使用的是 PreparedStatement ,只能接受一条 sql,这也决定了 Db.batchSave 只能接受一条 sql + 多组参数的工作模式

Db.batchXxx(...),带 List sql 的参数 api 工作模式是使用的 Statement,可以接受多条 sql,但坏处是不接受参数,所以要将所有 sql 拼接好

Db.batchXxx(...),带 List modelOrRecord 的工作模式也是使用的 Statement,可以接受一条 sql 与多个参数,但参数名是固定的

只有以上三类 batch 方法,使用者需要对此做出权衡

2017-02-22 23:15

你还可以通过自定义指令的方式,去扩展任意的指令,非常简单的实现各种各样的功能,参考一下 jfinal 的 #escape #date 指令的实现,这两个指令是扩展出来的

2017-02-22 23:12

我再补充一下 jfinal 手册中还没添加的内容,有关日期数据格式化输出的方法,只需要使用 #date 指令即可:
1:#date(value) 使用默认格式输出日期型数据,默认格式可以通过 me.setDatePattern(...) 进行配置

2:#date(value, "yyyy-MM-dd HH:mm:ss") 使用指定格式输出日期型数据

2017-02-22 23:09

jfinal template 可以用于任何 java 开发环境,并不限定于 web 项目,所以 template 没有与 web 中的 context path 发生耦合关联,因此,默认是不支持的

但是可以极其简单的支持,只需要在 configHandler(Handlers me) 中添加一句:
me.add(new ContextPathHandler("ctxPath"));
就可以在模板中使用如下方式获取了:
#(ctxPath)

2017-02-22 21:51

代码生成用的是 jfinal template 么?

2017-02-22 21:50

MixedJsonFactory 建议加一下

2017-02-22 21:46

倍儿爽啊

2017-02-22 20:38

@筱-舞瞳 问题是除了你之外,没人知道是什么错误,所以没法回复你

2017-02-22 17:51

@LittleBirdys @semooncun jfinal 的任务调度是对 cron4j 进行了极薄封装,而cron4j 应该是不支持秒的

一般情况下精确到分就满足了需求,如果确实不能满足,建议在 jfinal 之中直接使用 quartz 这个第三方,也不需要整合,直接用就好

2017-02-22 17:48

手册中有明确的说明,注意看手册

2017-02-22 17:48

if 分支为 true 的时候有 renderJson 在后面等着,如果为 false 呢? 为啥没有 render 系的方法等着?

jfinal 会在 action 请求没有调用任何 render 系方法时,自动给你调用一个 render(String view) ,view 参数的规则是:
view = baseViewPath + viewPath + methodName + 扩展名,所以就出现了异常提示:Tempate "/register/check.html" not found 的错误

2017-02-22 15:45

@无聊2356 SqlServer 可以在外层套一个 select * ,大致这样:
paginate(1, 10, "select *", "from (原有sql 在此) as temp", ....)

2017-02-22 15:31

@无聊2356 这个就是纯 sql 问题了, jfinal 是将 sql 与参数原封不动的扔给 jdbc 去执行,无法干预到 sql 是否正确这件事

2017-02-22 15:30

#p(...) 这个指令,在她的位置上只输出一个问号字符 '?',并且向其中的变量值放入 para 列表中供后面使用

看一下最终生成的 sql 就知道这个 #p(...) 干了啥了,一是生成一个问号,二是将其中的变量值输出到 paraList 中去,其中的 sql 可以通过 SqlPara.getSql() 获取,paraList 可以通过 SqlPara.getPara() 获取