2019-10-28 19:01

@farce 需要调用 ActiveRecordPlugin 的 stop() 方法才能回收

2019-10-28 17:11

@搞你心态 按照文档中的规则来放置 input 表单域的 name 才可以:
https://www.jfinal.com/doc/3-5

注意 getModel 要求属性对应字段,getBean 要求属性对应 model 的 setter 方法

看到你的代码,你应该是没有使用生成器来生成 model 的 setter 、getter 方法:
https://www.jfinal.com/doc/5-4

2019-10-28 17:03

在 new ActiveRecordPlugin 时指令一个 configName,这个变量值只能唯一

如果希望使用相同的 configName,那么需要先 arp.stop() 关闭前一个 configName 对应的 arp 对象

configName 本质上是为了支持多数据源的

2019-10-28 16:42

@小李子a 我收藏了这个贴子,下次再有人问 spring boot 下使用 jfinal active record 的问题,可以很爽地发给他这个分享

2019-10-28 16:40

最好的 spring boot 中使用 jfinal active record 的例子,没有之一

如果说还有打磨之处的话,可以删掉下面一行代码:
arp.getEngine().setSourceFactory(new ClassPathSourceFactory());
因为高版本 jfinal 的 active record 默认就是这个配置了

谢谢分享,点赞 + 收藏

2019-10-28 16:26

控制台没有提示是因为日志没有配置好,下载首页的 jfinal_demo_for_maven.zip,直接拿到里头的 log4j.properties 来使用即可

2019-10-28 15:17

jfinal-layui 是与 layui 结合最好的项目,也是 jfinal 精品项目,十分看好后续发展,赞

2019-10-28 15:07

直接使用 #include 指令,或者 #define 定义以后调用

总之 enjoy 中所有功能都可以使用,例如:
#define common()
这里是一段公共部分
#end

#sql(...)
### 这里调用公共部分
#@common()
#end

2019-10-28 11:50

@chcode 如果不坚持谁打开谁关闭的原则,在代码演化一段时间以后容易出现资源泄漏的 bug

打开连接的方法,将关闭的任务交给别一个方法,这相当于是跨方法的一个约定,这个约定是脆弱的,容易遗忘的,在代码演化一段时间以后容易出现资源泄漏的 bug

2019-10-27 21:43

@chcode 你的这个方法是 public ,其他人可以直接调用该方法

原则上是谁获取谁关闭,几乎没有特例

2019-10-27 16:40

很少有人会扩展 DbPro, 扩展 DbPro 的同学都是研究过 jfinal 源码的

DbPro 中所有的方法都是开放的,都可以通过继承来扩展、定制、改变 jfinal 内部的数据库实现,拥有极大的灵活性

感谢楼主的分享

此外,final 方法中还少了一个在 finally 块中关闭 connection 的代码

2019-10-27 16:32

@yunqi JDBC 要求 sql 语句 in 子句中问号的数量与参数个数相同,有几个参数就需要几个问号

回到你的下面这行代码:
and s.oper_type in (#para(oper_type))
如果 oper_type 值为 0, 1, 2 那么生成的 String sql 与 Object[] paras 值如下:
1:生成的 sql 片段:and s.oper_type in ( ? )
2:#para (oper_type) 对应的参数:0, 1, 2

也就是说,你的 sql in 中就一个问号,但参数却有三个,必然出错,这个错误不是 jfinal 干预的,而是 JDBC 的规则

具体的解决办法,需要改正 sql 模板的写法:

sql 代码:
#sql("getSysLogs")
select * from sys_log s where 1=1

#if (oper_type)
and s.oper_type in (
#for ( x : oper_type.split(","))
#para(x) #if(!for.last) , #end
#end
)
#end

order by oper_time desc
#end

如上所示,通过将参数按逗号分隔出来,然后在 in 内部使用 for 循环生成问号,使得参数个数与问号个数相等

2019-10-26 17:44

@柳志龙 用上一两次就彻底掌握了,#para 指令的规则就两个:
1:生成问号
2:将问号所代表的参数值放入数组