2018-06-25 10:46
@netwild 我是手动打乱了调用次序,测试了各种情况,没有问题
你得要能重现问题,才有利于解决
我现在的猜测是你的参数本身不对,例如确实是两个或者多个参数
2018-06-24 14:45
@foam103 sql 天然就是可以多表关联查询,并且可以在 select 中指定返回多个表的字段
只是传统的 ORM 框架如果 hibernate 是基于 java bean 的,所以才无法获取到这些 select 出来的字段
而 jfinal 的 ORM 的 Model 天然就支持这种关联跨表获取数据。不仅如此,jfinal 的 Model 还照样可以有 getter setter 方法,也可以用 jfinal 官方生成器极速生成 setter getter
jfinal 的 ORM 结合了传统 Java bean 与 Model 的优点。而传统的 ORM 依赖于 bean 这种固定的无法扩展的盒子自然是无法装下千变万化的 sql 返回值的
2018-06-24 12:12
这个原因就多了,下面仅仅随手举几个原因:
1:CRUD 功能中,其中 CUD 都是不用写 sql 的,因为这部分功能的 sql 灵活性与复杂度在多数情况下并不高。 但用于查询的 sql 可能是千变万化的,所以在总体设计上是将 sql 完全开放出来,不要做任何干预,否则会造成认知成本的上升。 仅仅开放一个 find(String sql, Object... prara) 就足以应对千变万化的场景,例如多表关联的场景
2:在你建议的设计方式之下,为了满足关联查询,避免 select * 的这些问题,就必然还是要引入 jfinal 现有的设计方式的 API,学习成本会上升
3:避免 select *,这样会损失性能,假定支持 find("age>18 and name ='abc'"); 这样的形式,必然就会是 select *
4:你建议的设计方式并不能省多少代码,对比一下下面两个:
find("age>18 and name ='abc'");
find("select id from user age>18 and name ='abc'");
综上,带来的好处并不多,但带来和弊端会更多,做任何设计都是一个权衡取舍的过程,没有完美的设计
等你的开发经验多了,就更能体会 jfinal 这样设计的原因
2018-06-22 22:46
@穿越123 jfinal enjoy 自身是支持任意扩展名的,配置后缀为 .vm 找不到视图,肯定是别的原因,单步调试跟踪一下
2018-06-22 18:23
@Hulk-X 或许你是新手,虽然这个问题我回答过了不下 1000 次,最后再回答一次:
NoClassDefFoundError 表示你的 druid 的 jar 包有问题,或者多个版本的 druid jar 包有冲突
解决办法是先删掉本地 maven 库中的 druid ,让 maven 重下去下载一次
2018-06-22 17:39
或者使用 @Clear(...) 用在 action 上,针对性的移除,看一下 jfinal 文档,里面有 @Clear 的详细用法
2018-06-22 17:38
jfinal 官方并未提供 mongodb 整合
jfinal 是 mvc 框架,理论上来说直接使用第三方即可,不一定要有一个整合的动作,所以不一定要有一个 mongodb 的插件
如果一定想看看这方面的集成,可以找找其它资源,例如:
https://github.com/T-baby/MongoDB-Plugin
https://github.com/nanusl/jfinal_mongodb_shiro
https://my.oschina.net/u/1251467/blog/667142
http://www.cnblogs.com/super-d2/p/3657081.html
以上资源我还没有仔细看过,不保障质量