`
longzhun
  • 浏览: 370208 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java实现cassandra的增删改查

 
阅读更多

cassandra使用cql语言作为操作语言,cassandra在2.0之后,在操作上越来越像sql数据库的操作,这样想从传统关系型数据库,切换到cassandra的花,上手成本也越来越低。使用官方java驱动操作cassandra 非常简单。

maven引入驱动包

 

<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>2.0.1</version>
</dependency>

 1、创建应用的唯一session。

 

 

Cluster cluster = Cluster.builder()
                         .addContactPoint("192.168.22.161")
                         .build();

 这里构建一个集群对象,”192.168.22.161″ 是cassandra的种子节点(seed node).

 

 

Session session = cluster.connect();

 你也可以针对一个特定的keyspace获取一个session

 

 

Session session = cluster.connect("mykeyspace");

 session是线程安全的,所以一个应用中,你可以只有一个session实例,官方建议一个keyspace一个session。

 

2、session可以直接支持执行cql语句。

 

String cql = "select * from mykeyspace.tablename;";
session.execute(cql);

 

 你完全可以用这种方式完成任意操作,记住cql语句后面一定要带分号。

 

3、如果你不想繁琐的去拼字符串,你可以用com.datastax.driver.core.Querybuilder。

insert 一条记录String cql = “insert into mykeyspace.tablename(a,b) values(1,2);”
你可以这样写:

 

session.execute(
QueryBuilder.insertInto("mykeyspace", "tablename")
            .values(new String[]{"a","b"}, new Object[]{1,2}));

 delete 记录String cql = “delete from mykeyspace.tablename where a=1”;

 

你可以这样写:

 

session.execute(QueryBuilder.delete()
	   .from("mykeyspace", "tablename")
	   .where(QueryBuilder.eq("a", 1)))

 update 记录String cql = “update mykeyspace.tablename set b=2 where a=1”

 

 

session.execute(QueryBuilder.update("mykeyspace", "tablename")
       .with(QueryBuilder.set("b", 2))
       .where(QueryBuilder.eq("a", 1)));

 select 记录String cql = “select a, b from mykeyspace.tablename where a>1 and b<0”

ResultSet result = session.execute(QueryBuilder.select("a","b")
		.from("mykeyspace", "tablename")
		.where(QueryBuilder.gt("a", 1))
		.and(QueryBuilder.lt("a", 1)));
Iterator<Row> iterator = result.iterator();
while(iterator.hasNext())
{
	Row row = iterator.next();
	row.getInt("a");
	row.getInt("b");
}

 4、你也可以像jdbc那样使用预编译占位符的方式。

BoundStatement bindStatement = 
session.prepare(
"select * from mykeyspace.tablename where a=? and b=?")
.bind("1","2");
session.execute(bindStatement);

 或者

PreparedStatement prepareStatement = 
session.prepare(
"select * from mykeyspace.tablename where a=? and b=?");
BoundStatement bindStatement = 
     new BoundStatement(prepareStatement).bind("1","2");
session.execute(bindStatement);

 或者

Insert insert = 
QueryBuilder.insertInto("mykeyspace", "tablename")
.values(new String[]{"a","b"}, 
new Object[]{QueryBuilder.bindMarker(),QueryBuilder.bindMarker()});
BoundStatement bindStatement = 
    new BoundStatement(session.prepare(insert)).bind("1","2");
session.execute(bindStatement);

 5、批量batch的方式也有的。

BatchStatement batchStatement = new BatchStatement();
batchStatement.add(insert);
batchStatement.add(bindStatement);
session.execute(batchStatement);

 注:批量操作只支持INSERT,UPDATE,DELETE

cassandra新版的java驱动,是灵活多变的,文章里只是简单的示例了下,你可以通过驱动的源码,或者是官方的api文档,灵活的使用。

 

分享到:
评论

相关推荐

    slick增删该查

    本教程将以"hello-slick-3.0"为例,深入探讨Slick在增删改查方面的应用。 首先,我们了解Slick的基本概念。Slick是Apache 2.0许可下的一个开源项目,它允许开发者直接在Scala代码中编写SQL查询,编译时即会转化为...

    Cassandra Java Client.zip

    1. **CQL (Cassandra Query Language)**:Cassandra使用CQL作为其SQL-like查询语言,它支持增删改查以及表定义等操作,使开发者能够更容易地与数据库交互。 2. **Driver Architecture**:DataStax Java驱动程序基于...

    开源项目-pilosa-pilosa.zip

    Pilosa 是一个开源的、基于 Go 语言开发的分布式位图索引系统。...在实际应用中,Pilosa 可以与其他数据存储系统(如 Hadoop、Cassandra、Elasticsearch 等)配合使用,构建高性能的大数据解决方案。

    Cassandra使用手册

    cassandra-cli可以用来执行各种数据库操作,例如管理数据模型,以及数据的增删改查。nodetool则提供了一些用于管理和监控Cassandra集群的命令。 对于开发人员,Cassandra提供了一个简单的Java编程接口Thrift,可以...

    Cassandra-examples

    而Hector库则是一个Java客户端,它提供了丰富的接口和工具,使得开发者可以更容易地与Cassandra集群进行通信,包括数据的增删改查、索引操作、批处理等。 描述中的"DAO"(Data Access Object)是一种设计模式,用于...

    Java实现前端界面与数据库互联的具体流程研究.zip

    后端通过提供这些API接口,允许前端进行数据的增删改查操作。 安全性是整个流程中的重要考虑因素。数据传输应使用HTTPS协议保证加密,防止数据被窃取。后端需要对输入数据进行校验,防止SQL注入等攻击。同时,使用...

    非关系型数据库—Cassandra

    CQL支持基本的增删改查,以及索引创建、视图定义等高级功能,使得开发者能够更容易地理解和使用Cassandra。 **Cassandra的工具与生态系统** Cassandra提供了cqlsh命令行工具进行CQL操作,还有nodetool用于监控和...

    基于JAVA CS远程监控系统软件的实现(源代码+论文).rar

    4. 数据库访问层:这部分代码负责与数据库的交互,如增删改查操作,可能会使用DAO(Data Access Object)设计模式。 5. 系统配置和管理工具:可能包含用于配置监控参数、添加或删除监控目标的管理界面。 论文部分...

    hercules:Java的灵活Cassandra ORM

    5. **执行操作**:利用Hercules的API进行数据的增删改查,包括批量操作和条件查询。 6. **事务处理**:尽管Cassandra本身不支持ACID事务,但Hercules提供了一定程度的事务管理,以确保数据一致性。 通过深入理解...

    cassandra-rest-server:使用 JSON 支持为 Cassandra 提供测试接口

    - **测试接口**:通过发送HTTP请求到服务器,例如使用Postman或其他HTTP客户端工具,以JSON格式发送数据,执行增删改查操作。 **5. 示例用法** - **创建数据**:使用POST请求向服务器提交JSON对象,创建新的数据库...

    java进阶提高学习教程-15数据库操作.pptx

    数据库的基本操作主要是增删改查操作。事务操作是一个经典的例子,即银行转账。 非关系数据库: 随着大数据的兴起,非关系型数据库为大数据问题的解决,提供了全新的数据库技术支持。通过 Java 语言与 NoSQL 技术的...

    Web_006.zip

    在“web的不带框架增删改查”这个标签中,暗示了开发者可能使用了原生的编程语言功能来实现数据库操作,而不是依赖像Spring Boot、Django或Laravel这样的Web框架。这样做的好处是代码更简洁、可控性更强,但缺点是...

    java面试题(包含java基础、数据库、j2ee、前台、设计、综合、企业面试题、测试、java面试题等).zip

    2. **数据库**:面试中可能会涉及SQL查询语言,包括DML(增删改查)、DDL(定义表结构)、DCL(权限管理)等。还会考察数据库事务的ACID属性、索引、JOIN操作、存储过程、触发器、数据库设计范式等。对于NoSQL数据库...

    java数据库系统

    通过加载数据库驱动、建立数据库连接、创建Statement或PreparedStatement对象、执行SQL语句以及处理结果集,我们可以完成数据的增删查改操作。 1. **加载数据库驱动**:在Java程序中,我们需要先通过Class.forName...

    (完整word)Java软件开发工程师简历.doc

    - **CRUD操作**:理解如何使用Mybatis进行基本的数据库增删改查操作。 - **Mybatis+Struts2+Spring整合**:知道如何集成这三大框架,构建高效的企业级应用。 5. **工作流引擎**: - **JBPM**:熟悉使用JBPM工作...

    Spring Data Modern Data Access for Enterprise Java.pdf

    - **CRUD Repository**:提供了简单的接口,使得对实体类的增删改查操作变得更加简单。 - **分页和排序**:支持对查询结果进行分页处理和排序,方便处理大数据集。 - **规格化查询**:允许用户根据条件灵活构建...

    java连接各种数据库的驱动 jar包

    它允许Java开发者通过编写Java代码来执行SQL语句,实现数据的增、删、查、改操作。在Java中,JDBC驱动是连接数据库的关键组件,通常以JAR(Java Archive)文件的形式存在。下面将详细介绍如何使用Java连接不同类型的...

    spring-boot-mvc-cassandra-test

    通过此项目,开发者可以深入理解Spring Boot MVC和Cassandra的集成,掌握如何在Spring Boot应用中定义Cassandra的数据模型、编写CQL查询、处理数据增删改查操作。同时,也可以学习到如何编写和运行单元测试,以及...

    skinny-test_2.11-1.2.7.zip

    3. **数据操作**:ASTYANAX提供了丰富的API进行数据的增删改查,例如插入数据: ```java MutationBatch mb = keyspace.prepareMutationBatch(); mb.withRow(cfDef, "John") .putColumn("age", 30); mb.execute(); `...

Global site tag (gtag.js) - Google Analytics