java - Groovy Eval 函数来评估 sql 查询的某些部分
问题描述
我必须在 sqlquery 上使用 groovy Eval() 并在运行时对其进行评估。我正在使用
query =groovy.util.Eval.x(sqlQuery,sqlQuery); and
sqlQuery =select Distinct <col1> from Tablename where criteira1=<cond> AND Clas1.getDateonDBType(fieldname)
我必须评估 Clas1.getDateonDBType(fieldname) 这是运行时的 java 方法,因为这取决于我连接到的 DB。Eval 函数能够获取 sqlQuery 但抛出异常
Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script1.groovy: 1: unexpected token: DISTINCT @ line 1, column 8.
我是 groovy 的新手。请帮我找出问题所在
解决方案
老实说,我猜你走错了路
Groovyeval
可以评估 Groovy 脚本,而不是直接评估 SQL。SQL 由您的数据库评估。您的 Groovy-Script 可以包装 SQL 语句,连接到数据库,然后执行 SQL 并返回结果。
据我所知,您想使用 Groovy 是因为您需要评估getDateonDBType()
. 你不能做这样的事情:
String dateonDBType = Clas1.getDateonDBType(fieldname)
sqlQuery = "select Distinct <col1> from Tablename where criteira1=<cond> AND "+dateonDBType
这将sqlQuery
在 Java 中构建正确的权限,然后您可以连接到数据库并执行 SQL,而无需评估 Groovy 代码。
希望有帮助
推荐阅读
- javascript - 仅在附加时才关注输入
- python - Python 2.7 pip install 失败缺少 pyconfig.h,可能安装的源分发错误?
- mysql - mysql symfony中左连接时如何确定排序字段?
- javascript - 从字典列表中提取值并填充组件
- docker - docker 中的 java 应用程序如何在 ubuntu 18.4 的挂载点中定位文件
- c++ - C++,程序认为我没有 main 函数,当我这样做并给出“_main”时,引用自:implicit entry/start for main executable error
- ios - Xcode 12.0 中是否有任何更改将 ButtonType 从 roundedRect 更改为 system?
- ruby-on-rails - Rails slim 将 html 渲染为文本
- jquery - 如何在 jQuery 中使用嵌套的 foreach 循环?
- android - 将 TextView 锚定到 ImageView