2017-09-22 10:26

回望一下 jpa 与 hibernate,如果你面对的是一个极为复杂的关联查询,你仍然得回归到写 sql 这件事情上,无可避免

2017-09-22 10:25

数据库是非常成熟的软件产品,而数据库厂商提供给你使用数据库的唯一方式就是通过 sql 语句

无论类似于 jpa、hibernate、mybatis 这类的框架如何纷繁复杂,在它们的底层仍然是用的 sql 去操作数据库

而其中 mybatis 的价值观是 jfinal 最认同的,也就是回归 sql 本质去操作数据库。所以 jfinal 的 active record 插件,尽可能贴近 sql 去做事情,例如查询、分页这些全是直接写 sql

当然,为了便利性,对于单表的 save、delete、update 这些操作,jfinal 提供了面象对象的 API,不需要手写 sql,例如: user.setName(...).update();

而对于复杂查询,必须要 sql 才能将数据库的功能发挥得淋漓尽致

2017-09-22 10:20

简单说就是,你可以通过继承 Render 实现任意自己需要的 Render 功能,例如 MyQrRender,然后直接用于 Controller.render(Render) 方法

2017-09-22 10:19

@1040110333 jfinal 官方实现并不支持二维码带图片,你可以参考一下 com.jfinal.render.QrCodeRender.java, 然后将你的代码做成一个: MyQrCodeRender

用的时候这样:
render(new MyQrCodeRender(...));

2017-09-22 10:15

@utf-9 为保障社区内容的专注与高品质,只专注于 jfinal 以及 jfinal weixin 两方面问题

2017-09-22 09:53

表结构不同只能用 Db.use(...) 切换数据源,而且某些情况会出错,例如 Db.use(...).save(..., record)

2017-09-22 09:50

不需要自己实现,一行代码搞定的事:
renderQrCode(...)

2017-09-21 22:52

model 是与确定的数据源唯一对应的,在绝大部分场景下不建议切换数据源,如果要切换数据源,也只能是 new 出来一个 model 以后临时切过去,而绝对不能使用 dao 对象上的 use(...) 方法去切换

new User().use(...) 这样就将 User 切换到了另一个数据源之上了,用完这个 new 出来的 User 以后最好抛弃这个 user,以免后续被用到时,造成数据源的混乱

还有一种透明式的用法:
http://www.jfinal.com/share/236

@杜福忠 分享

2017-09-21 22:49

注意看 jfinal 手册的 @Clear 注解的用法

2017-09-21 22:49

@云之遥 用 @Clear 将登录页面上的 LoginInterceptor 删掉才可以

2017-09-21 22:48

这个需求第一次被提及,需要谨慎权衡,添加东西总是很容易,但由此产生不确定性后果以后再删就不容易了

你确定有实际的应用场景在用?

2017-09-21 22:46

顶多就是 catche 住这个类型的异常,然后忽略掉

2017-09-21 22:45

这个异常不需要理会,仅仅是客户端下载的中途自己中断了而已,抛异常才是正确的

2017-09-21 22:44

@qgzsyf 稍微学习一下 maven 的使用,这个现在是基础。 maven 项目可以直接导入 eclipse , 直接运行起来

2017-09-21 22:43

利用 jfinal 的生成器,生成 baseModel,让 model 自动拥有了 getter 方法,然后通过 me.setJsonFactory(new FastJsonFactory()) 即可