where().eq("colName", new SelectArg()) 是什么意思?
What does where().eq("colName", new SelectArg()) mean?
虽然 运行 通过我们应用程序中的一些旧代码,但我 运行 变成了这样的东西:
queryBuilder.selectRaw("myFirstColumnName");
queryBuilder.where().eq("mySecondColumnName", new SelectArg());
其中 queryBuilder
是 com.j256.ormlite.stmt.QueryBuilder
。现在,我不知道这如何映射到 SQL,但我在想象:
SELECT myFirstColumnName
WHERE mySecondColumnName = SELECT *
我以前从未见过,更不用说用过。 这样做的目的是什么?这可能是想做什么,结果会是什么?
queryBuilder.where()
方法returns一个com.j256.ormlite.stmt.Where<T,ID>
。
eq()
方法为 where
条件创建相等比较。
生成的 SQL 查询将是:
SELECT myFirstColumnName WHERE mySecondColumnName = ?
new SelectArg()
将是 ?
的值。
这方面的文档参考:
http://ormlite.com/javadoc/ormlite-core/com/j256/ormlite/stmt/Where.html
很好的回答@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 特殊字符(如引号),我们就会这样做。
虽然 运行 通过我们应用程序中的一些旧代码,但我 运行 变成了这样的东西:
queryBuilder.selectRaw("myFirstColumnName");
queryBuilder.where().eq("mySecondColumnName", new SelectArg());
其中 queryBuilder
是 com.j256.ormlite.stmt.QueryBuilder
。现在,我不知道这如何映射到 SQL,但我在想象:
SELECT myFirstColumnName
WHERE mySecondColumnName = SELECT *
我以前从未见过,更不用说用过。 这样做的目的是什么?这可能是想做什么,结果会是什么?
queryBuilder.where()
方法returns一个com.j256.ormlite.stmt.Where<T,ID>
。
eq()
方法为 where
条件创建相等比较。
生成的 SQL 查询将是:
SELECT myFirstColumnName WHERE mySecondColumnName = ?
new SelectArg()
将是 ?
的值。
这方面的文档参考: http://ormlite.com/javadoc/ormlite-core/com/j256/ormlite/stmt/Where.html
很好的回答@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 特殊字符(如引号),我们就会这样做。