请问JFinal的ActiveRecord+Db如何操作Oracle函数?

在使用JFinal中的Db.save('table',record)时,如何使用Oracle函数?

例如:我想插入一个字段属性为Date或者TimeStamp的时间数据。

INSERT INTO TEST(CREATE_TIME) VALUES (TO_DATE('2018-04-16 12:12:12','yyyy-mm-dd hh24:mi:ss'))。

如果使用Db.save('table',record)这种方式,对于ORACLE中的这些函数需要如何处理转义。或者还是只能Db.update(sql)这样的方式?@Jfinal

评论区

JFinal

2018-04-16 11:22

使用 Db.update(sql, paras) 即可,函数啥的在 sql 中直接用,原生的

JFinal

2018-04-16 11:23

jfinal 对于数据库的支持,向来是原生 sql , 不做任何干预,这样才能将学习成本降到极致,会用 sql 即会用 jfinal Db

ztvip71

2018-04-16 11:28

@JFinal 因为之前是在MYSQL下写的方法全是Db.save(),现在迁移到Oracle下,时间字段类型全部要加上to_date函数才能存入,现在是不是只得全部把Db.save改成Db.update(sql,paras)了

JFinal

2018-04-16 11:59

@ztvip71 建议参数,用问号挂参:
Db.update("insert into ... ? ? ? ...", p1, p2, p3)

这样就不需要 to_date 了

由于使用的是原生 sql , 部分情况下从 mysql 迁到 oracle 下的 sql 要做调整

如果你使用 jfinal 的 Model 中的不带 sql 参数的 api,这个是可以直接迁移的

ztvip71

2018-04-16 16:55

@JFinal Oracle中的timestamp字段,原生sql插入的时候就需要跟上to_date,否则直接使用字符串时间是插入不了,我现在已经使用Db.update(?,?,?,to_date(?,'yyyy_mm_dd hh24:mi:ss'),p1,p2,p3,p4)这种方式进行保存了。

JFinal

2018-04-16 17:32

@ztvip71 用最新版本的 jfinal 3.4 就可以支持,jfinal 3.4 针对 oracle sqlserver 等数据库的日期类型数据做了细致的优化

jfinal 3.4 还未发布,想尝鲜的同学可以用这种办法用上:
http://www.jfinal.com/share/714

ztvip71

2018-04-16 19:53

@JFinal 好的,非常感谢波总的耐心指导。

热门反馈

扫码入社