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 16:42
@小李子a 我收藏了这个贴子,下次再有人问 spring boot 下使用 jfinal active record 的问题,可以很爽地发给他这个分享
2019-10-28 11:50
@chcode 如果不坚持谁打开谁关闭的原则,在代码演化一段时间以后容易出现资源泄漏的 bug
打开连接的方法,将关闭的任务交给别一个方法,这相当于是跨方法的一个约定,这个约定是脆弱的,容易遗忘的,在代码演化一段时间以后容易出现资源泄漏的 bug
2019-10-27 21:43
@chcode 你的这个方法是 public ,其他人可以直接调用该方法
原则上是谁获取谁关闭,几乎没有特例
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:将问号所代表的参数值放入数组