2016-11-08 17:19

@lyh061619 如果sql 的最外层是 group by,需添加一个参数:
paginate(1, 10, true, "select * ", ...); 注意第三个参数为 true,是告诉分页 api,这个 sql 的最外层是 group by

注意,这里一定是最外层是 group by 才这样,如果 sql 嵌套过了,内层用的 group by 则不需要

2016-11-08 17:06

@snoop tomcat 6 太老了,换新的吧,tomcat 新版本兼容老项目

2016-11-08 17:05

说说更新了什么内容啊,这样才能让有需要的人更加清楚的明白是不是需要的

2016-11-08 17:04

_MappingKit 必然是可以支持多个的,在实践中,你可以使用多个 Generator,分别配置不同的参数, "_MappingKit" 这个文件名,以及这个文件的路径都是可以单独配置的,如果有多个数据源的时候,生成多个 _MappingKit 文件,用于多个 ActiveRecordPlugin 极度方便

2016-11-08 17:02

jfinal 是建议先划分模块,然后在模块内部再去分层,分层的时候并不创建子包,而是用类名去区分不同的层,以下是一个例子:
1:account模块,以下是 com.xxx.account 包下的文件
AccountController
AccoutService
AccountInterceptor
2:article 模块,以下是 com.xxx.article 包下的文件
ArticleController
ArticleService
3:所有 model 统一放在 com.xxx.common.mode 包下面
便于将来抽取成公共的 maven module 拆分成多个小型的分布式系统去重用这个模块

2016-11-08 16:59

@luorongda 这个是必然的,并且分层分模块才是最佳实践,是极力推荐的方式

2016-11-08 16:58

其实细节很多,jfinal 社区的这一套功能做得还是非常细致的,哈哈

2016-11-08 16:58

简要做个回答:
1:最新动态,只显示自己以及自己关注的人的动态,其它人一概不显示

2:最新动态这一栏,不会去管有没有人回复你、@ 你,强调看第一点,最新动态仍然只显示自己与关注人所做的事情,这些事情包括:发贴、回贴

3:@提到我这一栏显示两类信息:一是有人 @ 我、二是有人回复我的文章,当然 @ 我可以是在文章,也可以是在回贴中,如果用户同一个动作触发多个 @ 我,只产生一个 @ 我

4:实现方式主要是将用户的发贴、回贴这两件事情生成一条叫做 news_feed 的记录,将这条记录将创建者与贴子或回贴关联起来即可

5:@提到我,是用的另外的一张单独的表 refer_me,这张表有 id,referUserId,newsFeedId 这三个主字段,第二个是被 @ 的人账号,第三个是 @ 这条数据对应的在 4 中说明的 news_feed 记录,在查询的时候只需要 select newsFeedId from refer_me where referUserId = 我的ID 就可以得到所有 @ 我的 newsFeedId 集合了,再通过 newsFeedId 集合得到 news_feed 数据显示出来,所以 refer_me 这张表与 news_feed 这张表最终显示出来的数据形式完全一样,因为是通过 refer_me 先找一次 news_feed,然后仍然显示的是 news_feed 列表而已,只不过这些 news_feed 是 @ 了你而已

6:点赞功能单做的表,如 article_like(userId, articleId),被点赞时发送一条私信即可,与前面的功能完全无关

2016-11-08 16:45

@charlox play 的源代码看过一些,基本没法看,看到将异常用于正常流程控制后,更加肯定该框架设计水平较低,此外用 play 开发项目光是 jar 包就一大堆,我记得还用了 JPA、Hibernate 之类的东东,更加没法看了

2016-11-08 13:22

play 的这个功能是正要极力批评的一个设计,因为 play 是通过在 render(...) 方法中使用抛出异常这种暴力的方式终止当前执行流程的,起码有两大坏处:
1:抛出异常严重拉低框架性能,异常的创建、初始化、抛出都是很费时的操作
2:异常用于正常流程是对异常的极度误用,建议看看《effective java》 这本经典的书,里面有非常深度的解读,异常只能用于不正常的流程

程序语言决定了,要终止一个正常执行中的 statement 语句序列,必须使用 return、continue、break、goto 等专用程序跳转控制机制才可以做到, throw 并非用于控制程序跳转机制

综上,jfinal 的 render 不会去支持直接跳出当前正常的 statement 执行流

2016-11-08 13:16

@java180 多写点代码,或者通过配置的方式,兼容下两种运行环境

2016-11-08 13:16

设置一下方言: arp.setDialect(new AnsiSqlDialect()) 即可

AnsiSqlDialect 这个方言支持所有遵守 ANSI SQL 标准的数据库,当然你也可以通过继承 Dialect 来扩展出 HiveDialect 专用方言

最后,生成 model 的生成器别忘了也要设置方言

2016-11-08 13:13

感谢分享,小程序越来越火了,jfinal 也会更火爆

2016-11-08 13:12

先做重要的功能,验证码增强的事情目前可以通过 class MyCaptchaRender extends Render 的方式自己先扩展出来,然后通过:
render(new MyCaptcharender()) 来使用