对于jfinal连接postgresql数据库时使用模式及Db + Record的一些特殊处理

jfinal连接postgresql时,如果用到了postgresql的模式(schemaName.tableName)的形式访问表的时候,如果使用Db.findById(tableName....)这一类方法时,sql会报错,因为jfinal内部在postgresql方言下对表名和列名在生成sql语句时做了增加双引号的处理目的是为了解决使用关键字作为表名或列名的情况,解决办法为在本地程序上重写jfinal内部的postgresql方言,将tableName做特殊处理,处理方法可能会有想不到的地方,如有问题欢迎交流,如下图所示:

图片.png

评论区

JFinal

2016-12-05 23:12

这种处理办法性能还不错,而且代码量少,感谢回来分享,赞一个

w878785

2016-12-28 16:57

厉害了我的鸽

defineconst

2020-05-18 17:44

能说明一下如何配置吗?

defineconst

2020-05-18 17:58

OK了。需要加上
if ("oracle".equals(p.get("dbType"))) {
// 配置属性名(字段名)大小写,true:小写,false:大写,统一小写,切换oracle数据库的时候可以不用改页面字段
arp.setContainerFactory(new CaseInsensitiveContainerFactory(true));
arp.setDialect(new OracleDialect());
} else if ("postgresql".equals(p.get("dbType"))) {
arp.setDialect(new PostgreSqlDialect());
} else {
arp.setDialect(new MysqlDialect());
}

热门分享

扫码入社