2016-08-29 12:25

@nbjgl @飞羽 我个人对缓存的使用的基本路子是:
1:先不使用缓存,完全无视缓存,用数据库保存数据,并实现功能
2:在需要缓存加速的地方,引入缓存
3:缓存只在 service 层中引入,service 层以外完全不知道缓存的存在

这样做的好处是:
1:以数据库为核心,缓存只在适当的地方做辅助,数据可以持久化,避免了缓存断电丢失的情况。数据库存放数据更加结构化,便于管理,而缓存结构化差,不易于管理
2:缓存只在业务层中,业务知道自己如何管理缓存,例如某个业务的 getList(...) 方法使用了缓存,那么在这个业务的 delete()、update() 方法就可以精准地更新缓存,缓存管理统一在了当前的业务层之中,不会散布到各处,易于管理,不易出错
3:缓存对于业务的调用者完全透明

2016-08-29 12:15

referMe 这个字段用于存放 @提到我 数量,message 用于马上要做的私信功能,你还可继续添加字段用于存放其它类型的数据。
1:每次有 referMe 到来时让这个字段加1
2:用户访问网站的时候会去缓存取这个 remind model,如果没有则去数据库读,如3:果字段值大于 0 则显示 tips 提示框
4:当用户点击了 tips 提示框的链接,或者进入过 /my/referMe 这个 action 将 message.referMe 的值置为 0即可

2016-08-29 12:11

@nbjgl 没那么麻烦,我直接贴出 remind 表的设计
CREATE TABLE `remind` (
`accountId` int(11) NOT NULL COMMENT '用户账号id,必须手动指定,不自增',
`referMe` int(11) NOT NULL DEFAULT '0' COMMENT '提到我的消息条数',
`message` int(11) NOT NULL DEFAULT '0' COMMENT '私信条数,未来考虑加粉丝增加个数',
PRIMARY KEY (`accountId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2016-08-29 09:46

就是这个方向,注意三点:
1:原来的 classDefineTemplate 中是 extends Model,改成 extends CommonModel
2:让 CommonModel 继承 Model
3:使用生成器时注入:generator.setBaseModelGenerator(new ResetBaseModelGenerator())

2016-08-28 23:36

@nbjgl 社区会做收藏功能,到时候收藏更方便

2016-08-27 21:59

存的时候用 incrBy(Object, long) 就可以了,不要用 set 去存,因为 set 会做序列化操作

2016-08-27 17:18

没有这方面的打算,jfinal 目前只专注于做好“极速开发”,让开发效率快到我满意的程度才会考虑做其它类型的产品,即便到了那一天,要做什么类型的产品也会慎重考虑

2016-08-27 15:50

@455386896 在 public void afterJFinalStart() 中调用是最好的,注意看手册中的这个方法的用法。
此外,这样配置以后,一定要注意使用 ${obj.name} 的形式,而不能使用 ${obj.getName()}

2016-08-27 15:49

@海风的爸爸 目前是手动升级,重启服务也就几秒钟的事情,这几秒钟是停服的

2016-08-27 12:13

当前的优先级是:
1:私信功能
2:点赞功能
3:收藏功能
周末都在抓紧时间添加功能,该有的都会有的,多多关注社区动态

2016-08-27 12:10

@455386896 前面说过了,用 ModelRecordElResolver.setResolveBeanAsModel(true) 可立即解决

2016-08-27 11:45

在项目启动的时候调用一下:ModelRecordElResolver.setResolveBeanAsModel(true) 这个方法,可以让 jfinal 绕过 getter 方法,转而调用内部的 attrs.get(key) 方法,然后界面使用: ${obj.userName} 即可

2016-08-27 11:40

@455386896 是用的 jfinal 2.2 并且为 model 生成了 getter、setter 方法吧? 如果是这样的话,那么 ${obj.userName} 确实获取不到,因为 getUserName() 这个方法并不存在

2016-08-26 23:44

@455386896 试试 ${obj.userName} 注意大小写与 sql 中的 as 别名一致

2016-08-26 23:30

用的是 jsp 页面,还能 ${obj.get(...)} ? 应该是不行的