java - 仅当输入值不为空时,查询生成器才创建更新语句

标签 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()(或输入)不为空时才更新团队,否则保持原样。有人可以帮忙吗?

谢谢

最佳答案

NOT NULL 属性仅适用于 Cassandra 中的主键。在使用st查询生成器绑定(bind)信息之前,您应该检查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));          
}

关于java - 仅当输入值不为空时,查询生成器才创建更新语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40098751/

相关文章:

java - 如何在 Java 中使用 spark 将几列保存到 cassandra

cassandra - 清理几乎已满的 Cassandra 节点中的空间

java - 如何为使用 kafka 和 cassandra 的应用程序设置/创建 docker 镜像

cassandra - 对 cassandra 表执行范围查询

支持连接池的 Golang cassandra 客户端

java - 如何在 JSP 中清洁打印 Collections 对象

java.lang.NoClassDefFoundError : scala/StringContext

java - Spring @Transactional 服务。如果它调用另一个@Transactional Service 会发生什么?

cassandra - 哪个 CQL 版本对应哪个 Cassandra 版本?

java - Spring Data REST - POST 后的空字段 - 我应该何时/何处初始化它们?