ActiveJDBC,如何在单个 table 中查询我感兴趣的一些列
ActiveJDBC , How can i query some columns i interest with in a single table
当我查询单个 table 时,我不需要所有列,我只想要一些我感兴趣的列。
例如,当我使用where方法查询table时,它将查询table中的所有列,如
public class SubjectSpecimenType extends Model {
}
SubjectSpecimenType.where("SUBJECT_ID = ? AND SITE_ID = ?", subjectId, siteId);
我不知道是否有一个名为 select 的方法可以用来查询某些列,例如
SubjectSpecimenType.select("SUBJECT_NAME", "SITE_NAME").where("SUBJECT_ID = ? AND SITE_ID = ?", subjectId, siteId);
LazyList.java
里面有源码
/**
* Use to see what SQL will be sent to the database.
*
* @param showParameters true to see parameter values, false not to.
* @return SQL in a dialect for current connection which will be used if you start querying this
* list.
*/
public String toSql(boolean showParameters) {
String sql;
if(forPaginator){
sql = metaModel.getDialect().formSelect(null, null, fullQuery, orderBys, limit, offset);
}else{
sql = fullQuery != null ? fullQuery
: metaModel.getDialect().formSelect(metaModel.getTableName(), null, subQuery, orderBys, limit, offset);
}
if (showParameters) {
StringBuilder sb = new StringBuilder(sql).append(", with parameters: ");
join(sb, params, ", ");
sql = sb.toString();
}
return sql;
}
当调用formSelect方法时,第二个参数columns总是null
是否有未完成的 TODO?
在模型上操作时,ActiveJDBC 总是选择所有列,因为如果您加载模型并且它加载了部分属性,那么您的模型有缺陷。这些列在某些边缘情况下指定,如在 RawPaginator 中:https://github.com/javalite/javalite/blob/e91ebdd1e4958bc0965d7ee99e6b7debc59a7b85/activejdbc/src/main/java/org/javalite/activejdbc/RawPaginator.java#L141
这里没有什么可以完成的,该行为是故意的。
当我查询单个 table 时,我不需要所有列,我只想要一些我感兴趣的列。
例如,当我使用where方法查询table时,它将查询table中的所有列,如
public class SubjectSpecimenType extends Model {
}
SubjectSpecimenType.where("SUBJECT_ID = ? AND SITE_ID = ?", subjectId, siteId);
我不知道是否有一个名为 select 的方法可以用来查询某些列,例如
SubjectSpecimenType.select("SUBJECT_NAME", "SITE_NAME").where("SUBJECT_ID = ? AND SITE_ID = ?", subjectId, siteId);
LazyList.java
里面有源码/**
* Use to see what SQL will be sent to the database.
*
* @param showParameters true to see parameter values, false not to.
* @return SQL in a dialect for current connection which will be used if you start querying this
* list.
*/
public String toSql(boolean showParameters) {
String sql;
if(forPaginator){
sql = metaModel.getDialect().formSelect(null, null, fullQuery, orderBys, limit, offset);
}else{
sql = fullQuery != null ? fullQuery
: metaModel.getDialect().formSelect(metaModel.getTableName(), null, subQuery, orderBys, limit, offset);
}
if (showParameters) {
StringBuilder sb = new StringBuilder(sql).append(", with parameters: ");
join(sb, params, ", ");
sql = sb.toString();
}
return sql;
}
当调用formSelect方法时,第二个参数columns总是null
是否有未完成的 TODO?
在模型上操作时,ActiveJDBC 总是选择所有列,因为如果您加载模型并且它加载了部分属性,那么您的模型有缺陷。这些列在某些边缘情况下指定,如在 RawPaginator 中:https://github.com/javalite/javalite/blob/e91ebdd1e4958bc0965d7ee99e6b7debc59a7b85/activejdbc/src/main/java/org/javalite/activejdbc/RawPaginator.java#L141
这里没有什么可以完成的,该行为是故意的。