JFinal中sql和数据库方言问题

山东-小木 发布于 2014/12/24 21:54
阅读 1K+
收藏 1

@JFinal 你好,想跟你请教个问题:

写了一个sql语句 符合mysql但是不符合oracle

执行model的find方法

源代码中显示最后是根据配置中设置的具体数据库的方言去执行,如果出现上述情况,我针对oracle方言设置传入了符合mysql的sql JFinal没有做处理?

加载中
0
JFinal
JFinal

     JFinal 的方言仅用于 Model 的 save()、update()、delete()、等等由框架生成 sql 的方法,而开发者自由传入的 sql 框架并不会干预,这通常是在使用 find()、query()、paginate() 之类需要传入 sql 的方法。

    JFinal 引入的 Dialect 并不是为了让开发完成的项目无缝地迁移到其它类型的数据库,这样做的不仅成本高,而且得不偿失。如果要用方言实现数据库的无缝迁移,就需要像 Hibernate 引入类似 HQL 的一套新 sql 语言,数据库方言有时候差别巨大,类 HQL 方案同时也带来了弊端。

   综上,JFinal 引入的 Dialect 本质上是为了让 Model的 save()、update()、delete() 针对不同的库生成最基本的 sql 方言,是为了支持在多种数据库下开发,而非现成的项目去做数据库的无缝迁移。

    如果要做到现成项目的数据库迁移,可以将所有 sql 放在配置文件中,在 jfinal 中加载 sql,需要做迁移时提供目标数据库的另一套 sql 即可

返回顶部
顶部