首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >apache元模型queryConstraints

apache元模型queryConstraints
EN

Stack Overflow用户
提问于 2016-05-24 07:50:00
回答 1查看 283关注 0票数 0
代码语言:javascript
复制
DataSet dataSet = datacontext.query()
    .from(table)
    .select(colNameArr)
    .where(frstCol).eq(dynamicval1).and("").eq("").or("").eq("")....etc
    .execute();

这能实现吗?,我可以从和()或()开始动态地决定约束吗?如果是的话,我们怎样才能做到呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-23 22:03:32

动态选择和WHERE子句示例:

代码语言:javascript
复制
    // Prepare a data context based on plain old Java objects
    List<TableDataProvider<?>> tableDataProviders = new ArrayList<TableDataProvider<?>>();
    SimpleTableDef tableDef1 = new SimpleTableDef("snippetTableName1", new String[] {"id", "name"});
    tableDataProviders.add(new ArrayTableDataProvider(tableDef1,
            new ArrayList<Object[]>()));
    PojoDataContext dataContext = new PojoDataContext("snippetSchemaName", tableDataProviders);

    // Add some rows
    dataContext.executeUpdate(new UpdateScript() {

        public void run(UpdateCallback callback) {
            callback.insertInto("snippetTableName1").value("id", "id1").value("name", "name1").execute();
            callback.insertInto("snippetTableName1").value("id", "id2").value("name", "name2").execute();
        }
    });

    // Prepare dynamic query
    String[] selectArray = new String[2];
    selectArray[0] = "id";
    selectArray[1] = "name";

    Map<String, Object> whereClauses = new HashMap<String, Object>();
    whereClauses.put("id", "id1");
    whereClauses.put("name", "name1");

    SatisfiedSelectBuilder<?> queryBuilder = dataContext.query().from("snippetTableName1").select(selectArray);
    SatisfiedWhereBuilder<?> whereBuilder = null;

    int i = 0;
    for (Map.Entry<String, Object> whereClause: whereClauses.entrySet()) {
        if (i == 0) {
            whereBuilder = queryBuilder.where(whereClause.getKey()).eq(whereClause.getValue());
        } else {
            whereBuilder = whereBuilder.and(whereClause.getKey()).eq(whereClause.getValue());
        }
        i++;
    }

    DataSet dataSet = whereBuilder.execute();

    while (dataSet.next()) {
        Row row = dataSet.getRow();
        System.out.println("Row: " + row);
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37407428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档