我有一个应该支持oracle和mysql数据库的应用程序。 我会为不同的数据库获得不同的配置。
但我希望代码中使用的所有HSQL都完好无损。
但我无法做到以下bcoz:
我创建了一个如下所示的查询:
String SQL_QUERY = "select count(log) from dbtable where created_date='"+ givenDate
Query query = session.createQuery(SQL_QUERY);
query.uniqueResult();
这在mysql中运行得很好 但不是在oracle
因为oracle db期望使用
格式化created_date列的值to_date(givenDate,"yyyy-MM-dd")
所以我必须将上述查询更改为:
String SQL_QUERY = "select count(log) from dbtable where created_date=to_date('"+ givenDate+","yyyy-MM-dd")
我可以以任何方式避免对mysql和oracle进行多次查询声明吗?
答案 0 :(得分:1)
从java.sql.Date
中创建String
并将其传递给查询;不要将转换嵌入数据库中。
更好的是,在String
到达持久层之前将Date
绑定到{{1}}。 Java是一种面向对象的语言;从对象的角度思考。