2019-02-28 11:44
findFirst 方法的注释中已经明确说明了要根据不同的数据库添加不同的限定,例如 mysql 是添加 limit 1:
select * from xxx where ... limit 1
这个设计在 8 年前是这么来考虑的:
1:不同的数据库由于限定方式不同所以 Dialect 中没有帮你加 limit 1,而是留给用户自己加
2:后来过了几年有人提出这个需求,希望 jfinal 自动加 limit 1,但这时考虑到会影响已经加过 limit 1的用户,也就没再动这里。虽然可以通过判断 sql 中是否存在 limit 来决定要不要加 limit,但代码不太优雅,也就作罢
3:不同的数据库是加不同的限定,如 Sql Server 是加 select top 1,所以想加也不太方便,担心会干扰现有 sql,不如用户自己加来得方便
4:退一步讲,findFirst 查询一般用的查询条件是 id 值,出现问题的情况并不多
总得来说还是该进一步处理一下,jfinal 3.7 考虑改进
2019-02-28 11:35
在 jfinal 里头是为了减少代码量而上的功能
按传统说法,依赖注入的好处是方便在未来通过配置的方式注入不同的实现类,从而实现不同的功能
例如,你先是给定一个 IService 接口,今天你通过依赖注入的是 AaaService 实现类,下个月你希望给注入一个 BbbService 实现类,这时候就可以通过配置来改变实现类
而在实际的工程应用中,这种动不动就依赖注入的搞法并不划算,因为你要在未来改变实现类的需求在实际上是很少的,退一步讲即便在未来出现这个需求了,直接改代码也很方便
所以,为了一个在未来可能出现的需求,而在当下随处都弄上依赖注入在工程上是很不划算、很愚蠢的做法
依赖注入更适合于框架类的系统,而不是应用系统。 框架类的系统面临的场景足够多
所以,jfinal 中提供了非常多的 setter 方法对很多功能都可以配置,而配置进去的东西相当于依赖注入,例如:
me.setRenderFactor(...)
engine.setSourceFactory(...)
arp.setContainerFactory(...)
只有在你确定有很多实现需要切换的时候才有价值
2019-02-28 11:27
@sandyxie 很奇怪的问题,从来没人反馈过,你试试升级到最新版本的 jfinal 3.6
再一个,你 extends 的这个 Model,检查一下是不是 com.jfinal.plugin.activerecord.Model
2019-02-28 11:26
@nommpop 直接用 value.toDouble() 或者 value.toFloat() 即可,注意看文档:
https://www.jfinal.com/doc/6-9
2019-02-27 21:27
@猴子的花果山 路由的详细文档在这里:
https://www.jfinal.com/doc/2-3
2019-02-27 21:16
@猴子的花果山 建议用 jfinal 原生的路由功能,简单方便,稍微习惯一下就好,省去很多麻烦
要知道 jfinal 原生路由是支持 Routes 级别的 Interceptor、ViewPath、mappingSuperClass(boolean) 的
2019-02-27 20:16
@年少 在 jfinal 这端不需要动什么地方吧?
2019-02-27 17:38
@凌云sama model 中不要使用属性,直接使用 mode.put 方法放入一些额外的数据即可
在转 json 时使用 JFinalJson.getJson().toJson(...) 进行转换
这个问题多多单步调试就一目了然了,在 getter、setter 方法中设置断点调试
然后 Model.set(...)、Model.get(...) 中也可以设置断点调试一下
2019-02-27 16:54
@onelit jfinal 3.5 用的 jetty-server 应该还是老版本的: jetty-server-8.1.8.jar
在社区下载一下:
http://www.jfinal.com/download/?file=jfinal-3.5-all.zip
jfinal-3.5-all.zip 这个压缩包里头有 jetty-server-8.1.8.jar