2020-04-30 00:46

新版本已经添加了压缩功能,超爽:
https://jfinal.com/share/2094

2020-04-29 19:27

整合主要为为两种思路:
1:在 jfinal 中整合 spring boot
2:在 spring boot 中整合 jfinal

第一种在 jfinal 项目中添加 spring boot 启动所需的入口类

第二种在 spring boot 中添加 jfinal 的启动入口类 JFinalFilter

如果只整合使用 jfinal 的数据库模块,参考:
https://jfinal.com/doc/5-15

2020-04-29 19:24

你这里貌似有一个比较有意思的用法,那就是你的字段名、表名都添加了双引号

在添加双引号以后,查询出来的字段名是否被 oracle 自动转成了大写?

如果双引号可以避免 oracle 转换字段名大小写,将可以解决以往很多问题

2020-04-29 19:22

生成 base model 使用的模板文件用到了没有?

生成 BaseXjrBaseLog 时需要用到一个你定制的 base_model_template.jf

2020-04-29 13:54

原因是: sql 管理使用的 enjoy Engine 对象默认配置了:
engine.setToClassPathSourceFactory();

将会去 class path 和 jar 包中找模板,而 class path 与 jar 包内的子目录是不可能存在 PathKit.getRootClassPath() 子目录的

2020-04-29 13:51

删掉这行代码:
arp.setBaseTemplatePath(...) 这行代码

改为在添加时使用路径,例如:
arp.addSqlTemplate("/sql/all_sql.sql");


或者你改成:
arp.setBaseTemplatePath("/sql");

然后添加的时候:
arp.addSqlTemplate("all_sql.sql");

总之不要使用 PathKit.getRootClassPath()

2020-04-29 10:37

jfinal 是 web 框架,请求过来的时候,每个 controller 中的 action 是在独立的线程中执行的,不会有线程安全问题

jfinal 的 Ret、Kv、Record 等等对象内部都没有线程安全机制,但这些对象的使用跟你使用自己创建的一个 java bean 本质是一样的,你的 java bean 一般也不会内部线程安全机制

只要对象没有多线程共享,就不会有线程安全问题

2020-04-29 01:11

@zhangtianxiao 我是说 getter、setter 方法不存在类型问题

2020-04-28 20:08

为什么 jfinal weixin 要缓存 access token 值: 因为微信官方对 access token 值的申请每天有限额,用完就不能再申请

2020-04-28 20:05

access token 值已被 jfinal weixin 按照微信官方缓存 7200 秒,只要没有别的地方使用你当前用的这个微信公众号的 appId 去申请 access token ,就不会有问题

所有出问题的都是 "多处" 共用了同一个 appId 去申请了 access token, 而 access token 永远只有最后一个申请到的值有效,以上所说的 "多处" 多数是下面的情况:
1:两个或多个开发者使用了同一个 appId 在同一时间内在开发
2:两个或多个程序使用同一个 appId 在运行

总之你记住, 同一个 appId 获取到的 access token 永远只有最后一个申请到的有效

这种问题不要找 jfinal weixin 的麻烦,jfinal weixin 开源六七年了, access token 是最基本的东西,jfinal weixin 不可能犯这种低级错误

多处共享同一个 appId 的场景,jfinal weixin 已经给了解决方案:
https://gitee.com/jfinal/jfinal-weixin/blob/master/src/main/java/com/jfinal/weixin/demo/WeixinConfig.java

注意看上面源码中的这两行代码:
String onLineTokenUrl = "http://localhost/weixin/api/getToken";
ApiConfigKit.setAccessTokenCache(new LocalTestTokenCache(onLineTokenUrl));

上面的配置就可以在本地开发时与线上共享同一个 appId 的 access token 值

2020-04-28 19:58

用一下第三方的 OkHttp 工具, jfinal 的 HttpKit 主要是供 jfinal 内部的某些功能作辅助,并没有实现完备的 http 交互功能

2020-04-28 19:56

照你这么说 ruby、javascript 这些动态类型语言就是类型地狱了

jfinal 的 active record 将类型适当动态一点,是为了增加灵活性减少代码量

此外,active record 的 Model 可以使用官方自带生成器生成 getter、setter 方法,不存在类型问题

而 Db + Record 查询结果在 enjoy 模板引擎中输出时也不存在类型问题

2020-04-28 11:41

熟悉 jfinal enjoy 模板引擎的基本用法,自然就知道如何做了