2018-01-30 22:18
@cc_cc 文档第一句话就说明过要使用 Java8 这个分支版本,后面给出了 maven 坐标:
http://www.jfinal.com/doc/3-3
2018-01-30 22:16
@cc_cc 你在上面贴出来的那个 if 判断是 jfinal 的非 Java 8 版本,也就是说不是你当前用的版本
而你用的 action 带参的版本在 java8 这个 branches 这里:
https://gitee.com/jfinal/jfinal/blob/jfinal-java8/src/main/java/com/jfinal/core/ActionMapping.java
2018-01-30 21:12
看一下你的截图中的第一行注释: recommend add "limit 1" in your sql
这个当然是要添加 limit 1 的, jfinal 没有为你的 sql 额外添 limit 1 在当年主要是如下考虑:
1:不同数据库对于限定返回数据的数量方言不同,例如,有些是使用 limit ,有些是使用 top,当时为了省事就没处理不同的方言
2:对于大部分使用 findFirst 的场景来说,都有 where 条件用在 id 上,而 id 是天然排序过的,所以不会有性能问题,例如: select * from user where id = 123
3:findFirst 这个做法始于 7 年前的第一个版本,用户量上来以后,再考虑添加 limit 1 或者 top 1 这样的处理,会有较大的兼容风险
总的来说,还是findFirst 做得不是很周到,对于不在索引条件上的查询,确实有性能风险
2018-01-30 18:33
非常详细,感谢你的分享
再介绍一个比较简洁可靠的方法,利用一个现有的 maven 项目,里头有 src 目录,以及 pom.xml 文件,稍微改改 pom.xml 中的 groupid 之类的,然后导入到 eclipse/IDEA 中即可,导入的时候选择导入的是 maven 项目, 开发工具会自动生成各种配置文件
这种方法可以避免掉自己创建项目过程中有些选项或者输入拿不准的问题
具体操作时,可以下载 jfinal.com 首页的 jfinal-demo-form-maven 这个小 demo 作为蓝本去操作,再一个就是 github 上很多这种标准备的 maven 结构的项目可以直接利用
2018-01-30 12:20
@或是的话 这个就很奇怪了,fastjson将 jsonString 转 model,只认 setter,建议单步调试一下