2017-02-15 21:56
@埋头苦干 注意一个事实,双主键的反射生成,拿到的主键次序不是取决于 jfinal,而是取决于 JDBC,目前的设计是相对好的选择,如果你有更好的设计方案可以提给我
2017-02-15 21:45
@埋头苦干 buildPrimaryKey() 方法得到的 resultSet 中的主键次序很可能与建表语句中指定的字段次序有关,你打开表结构观察一下
2017-02-15 20:06
这种情况 jfinal 早有考虑,如果你加入了 jfinal 俱乐部,可以在 jfinal-club 项目中看到如下的代码:
ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
_MappingKit.mapping(arp);
// 强制指定复合主键的次序,避免不同的开发环境生成在 _MappingKit 中的复合主键次序不相同
arp.setPrimaryKey("document", "mainMenu, subMenu");
me.add(arp);
以上的 arp.setPrimaryKey(...) 这么代码,就是在 _MappingKit.mapping(...) 调用之后,再次强制指定复合主键的次序,这样就万无一失了
2017-02-15 11:43
除了 jfinal template engine 这个模块涉及编译原理方面的算法,较为有难度以外,其她模块都很简单易读,只需具 java 基础知识即可。如果想看懂 template engine 模块,需要了解词法分析、语法分析、AST、语法分析等编译原理方面的知识
读源码最好的方式,是先了解项目的架构,先在心中有个宏观的认知,可以通过 jfinal 手册中的架构图去了解
在了解架构的基础之上,通过在关键代码处添加断点,进行调试便可了解程序大致的执行流程
在了解程序大致的执行流程以后,再分别在自己感兴趣的单个模块中的合适的地方设置断点,并进行单步调试,例可了解程序执行的所有细节
通过以上方式便可极为高效的了解 jfinal 源码,简单来说就是:了解架构 + 代码调试
仅仅去读代码,只是以静态的视角去了解内部,而程序运作却是动态的,所以让阅读方式从静态转变为动态是更加高效的方式