2016-09-11 18:01

如果添加 Db.findByIdLoadColumns(...) 这个特性,由于参数非常多,还不如直接用 Db.findFirst("select a,b,c from ...", p1, ...pn) 来得方便快捷,而且不需要去学习那些参数的含义,降低了学习成本

2016-09-11 17:59

无论是 Model 还是 Db,早在 jfinal 1.9 的时候, findById 都有重载实现 loadColumns 的功能,那时方法名全叫 findById(...),用重载实现的

到了 jfinal 2.0 添加了多主键支持,Model、Db 中的 findById 必须跟着变化,而 findById 本来重载的方法就很多了,所以添加多主键支持时,重载方案下的参数的各种组合变得很复杂,也容易让用户用错

所以 jfinal 2.0 的 Model 将该功能改了方法名,由 findById 改为了 findByIdLoadColumns,避免了重载带来的各种问题

而 jfinal 2.0 多主键支持下的 Db 类情况更加麻烦,由于 Db + Record 模式下的各种查询方法需要传入 tableName,甚至 idName,所以参数数量更加多,在使用过程中,如果将这些参数都用上,发现还不如直接在 sql 的 select 中带上这些个 columns 来得方便,并且易于理解,所以 2.0 就干脆将 Db 上的这个特性干掉了

重载是面象对象语言的很优秀的特性,但在参数过多时也会带来一些问题

2016-09-11 12:53

@小木学堂 昨晚服务器迁移,停服了几个小时,mysql 5.7 有坑啊,居然不兼容某些 mysql 5.6 的 sql

2016-09-10 18:14

@云云 感谢你的支持,社区会越来越完善,多多关注社区动态

2016-09-10 18:10

感谢分享,赞一个

2016-09-10 17:53

问题再详细些,目前的信息量无法知道问题所在,适当贴出一些代码来

2016-09-10 17:19

@玄伶 多多关注社区动态,今天社区要更换新服务器,偶尔会有停服的情况

2016-09-10 17:18

@玄伶 社区还有一部分核心功能上线以后,就会全力丰富社区内容,让大家可以获取到很多对开发有价值的经验、源码等资源
也会依靠广大用户都去分享自己的资源,形成一个正能力、高品质的极速开发社区,进一步提升开发效率、代码质量以及开发体验

2016-09-10 17:07

@玄伶 基本上是一人开发,有少数用户直接提交过代码,jfinal 是极简设计,代码才一万行左右,目前不需要多少人

2016-09-10 12:11

主要是出于以下考虑:
1:Model 核心设计目标是在 bean 的基础上加上动态特性,而 bean中必然是会定义属性attribute,attrs 就是为了存放 bean 属性的值的
2:而 Record 是完全动态化的,面向数据表中字段的,map 中的 key 无法对应到某一个具体的 bean 类,所以才命名为了 columns
在 jfinal 看来,变量命名可对抽象、代码质量产生巨大影响,好的命名是代码质量基本保障。
这个问题,从来没人提出来过,@小木学堂 眼力极好哈,超赞 ^_^

2016-09-09 14:58

能否兼容 jfinal 自带的 redis 插件,能给出更详细的使用例子不? 我看到上面的例子是在 callback 中使用的,这样的用法代码比较多,有没有更简单用法?

2016-09-09 14:19

jfinal 自身目前不需要这个线程池管理的功能,对于 web 框架来说,在请求到来时 tomcat、jetty 这类容器已然有线程池管理多线程。
在未来提供某些功能需要用到线程池的时候,才会去考虑添加线程池管理

2016-09-09 11:30

@海哥 jfinal 的用户多数都会同时用到 jfinal mvc 与 orm,假如将 orm 分开来,对于有些新手来说总还是有个事存在的
不分开的话,在用户心里就是使用 jfinal,一个 jar 包走起 ^_^

2016-09-09 09:48

jfinal 定位于 WEB MVC + ORM,所以 ORM 与其她部分是一个整体,集成在一起省去了用户的麻烦。
如果要独立去用,其实不必将 ORM 从中抽离出来,直接使用就好,因为 jfinal 整体的体积才 300K 左右,没有什么必要去抽取,很多用户都是直接使用的,独立使用的方法参考手册第 5.13 小节

2016-09-08 19:17

看一下jfinal 中的这个源码:com.jfinal.plugin.activerecord.SqlReporter.java,可以通过代理的方式来拦截。
此外,如果你用的 DruidPlugin,还可以通过扩展它的 Filter 来拦截
最后你还可以使用 jfinal 的业务层 AOP 在业务层拦截器用户的查询方法去改变 sql,方法有很多,最后这个是最推荐的方式