2019-05-01 11:15
Db.select().from("users").orderBy(field("id").desc()).fetch()
上面这种写法不如纯 sql 简洁:
Db.find("select * from users order by id desc");
从代码量上来说纯 sql 是最省的,而且 sql 还可以交给外部文件进行管理与优化:
https://www.jfinal.com/doc/5-13
此外,复杂 sql 是极端灵活的,可以一直嵌套下去,而 java 代码模式写不出需求复杂的查询来
然后, java 代码模式属于新创的东西,会增加学习成本,即便学会了使用 java 代码模式,仍然还要学会 sql,等于是多了一部分学习成本
最后,纯 sql 效率是最高的,也不会出现 java 模式带来的生成 sql 时的可能错误
仔细深想一下,java 代码模式除了能在写代码的时候带来一点点心理上的安全感以外,并没有带来实质的好处
sql 是很重要的基本功,是一定要过这一关的,通行各种数据库
2019-04-30 18:19
@杜福忠 这种用法,适合十分灵活的应用,eova 这个项目极其动态化,全程 Db + Record,连 Model 都没使用
感谢分享
2019-04-30 12:08
@qyq1103 maven 项目直接下载 jfinal demo for maven ,里头有 pom.xml
maven 项目不需要 jar 包,会自动化下载
2019-04-30 11:08
@qyq1103 总之,全用 jfinal-3.8-all.zip 中的 jar 包,其中的作用里头有一个说明文件
你自己找的 jar 包就要保证其版本合适
2019-04-30 11:07
@crazykids find 方法本身是极快的,因为 jfinal 的任何数据库操作方法都是对 JDBC 的极薄封装
慢就慢在,如果你返回的数据条数多的话,io 动作就慢了, io 动作本身就与 jfinal 无关了
我这边不仅要用聚合函数,也得查表中的一部分字段,用 find 是可以的
也可以试试 Db.query 方法,该方法返回的值不封装为 Model、Record,是原生的 java 对象,能提点速度,但这个提速基本可以忽略不计
2019-04-30 09:53
@qyq1103 注意 jetty-server 也用那个 zip 中的,现在的版本到了 jetty-server-2019.3