仅当输入值不为null时,查询构建器才会创建更新语句

时间:2016-10-18 02:51:22

标签: java cassandra datastax query-builder

我正在处理我的java应用程序并使用cassandra作为带有datastax java驱动程序的数据存储。我正在使用Querybuilder构建我的查询。

更新查询很棘手,因为我只想在输入值不为空时才更改字段。

示例:

Statement st = QueryBuilder.
    update("repo_info").
    with(QueryBuilder.set("team", repo.getTeam())).
    and(QueryBuilder.set("author", repo.getAuthor())).
    and(QueryBuilder.set("git_project_url", repo.getGitProjectUrl())).
    where(QueryBuilder.eq("name", name)).ifExists();

所以在这里我想说只有当repo.getTeam()(或输入)不为null时才更新团队,否则保持原样。有人可以帮忙吗?

由于

1 个答案:

答案 0 :(得分:1)

NOT NULL 属性仅适用于Cassandra中的主键。在使用 st 查询构建器绑定信息之前,应检查 repo.getTeam()!= NULL 。这是最简单的方法之一。

例如:

PreparedStatement st = QueryBuilder.
    update("repo_info").
    with(QueryBuilder.set("team", QueryBuilder.bindMarker())).
    and(QueryBuilder.set("author", QueryBuilder.bindMarker())).
    and(QueryBuilder.set("git_project_url", QueryBuilder.bindMarker())).
    where(QueryBuilder.eq("name", QueryBuilder.bindMarker())).ifExists();

if(repo.getTeam !=NULL){    
    session.execute(st.bind(repo.getTeam(),repo.getAuthor(),repo.getGitProjectUrl(),name));          
}