java - where().eq ("colName", new SelectArg()) 是什么意思?

标签 java android ormlite

在我们的应用程序中运行一些旧代码时,我遇到了这样的情况:

queryBuilder.selectRaw("myFirstColumnName");
queryBuilder.where().eq("mySecondColumnName", new SelectArg());

其中queryBuildercom.j256.ormlite.stmt.QueryBuilder。现在,我不知道这如何映射到 SQL,但我想象一下:

SELECT myFirstColumnName
WHERE mySecondColumnName = SELECT *

我以前从未见过,更不用说使用过。 这样做的目的是什么?这可能会尝试做什么,结果会是什么?

最佳答案

很好的答案@novak。只是添加一些信息:

queryBuilder.where().eq("mySecondColumnName", new SelectArg());

这是一个有点奇怪的模式。 SelectArg 的典型用法是创建一个变量,以便我们稍后可以设置该值。例如:

SelectArg arg = new SelectArg();
queryBuilder.where().eq("mySecondColumnName", arg);
...
arg.setValue("column1");

有时我们预先知道参数的值,但我们仍然想使用 SQL ? 机制,因此我们可以这样做:

queryBuilder.where().eq("mySecondColumnName", new SelectArg("column1"));

例如,当我们想要保护自己免受 SQL injection attacks 的侵害时,我们就会这样做或者如果我们使用具有 SQL 特殊字符(如引号)的值。

关于java - where().eq ("colName", new SelectArg()) 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34212641/

相关文章:

java - Spring框架有命令行界面吗

java - 为 servlet 支持的 API 生成文档的好方法是什么?

android - 在 android 中手机重启时启动我的服务

javascript - 对于基于 Web 的应用程序,在 Android 中不会发生调整大小

android - 当我添加一个新字段时,我得到一个空指针

java - maven-dependency-plugin 不排除匹配文件

java - 数字尝试 (JAVA) - 线程 "main"java.lang.ArrayIndexOutOfBoundsException : -13 中出现异常

android - setArguments 的意义何在?

android - 在 ORMLite 事务期间读取数据

java - 使用 ormlite 访问现有的 postgres 数据库