天天看点

Cassandra连接Java

Cassandra连接Java
Cassandra连接Java

1、pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.flx.test</groupId>
	<artifactId>CassandraDemo</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<name>cassandra</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		
		<dependency>
			<groupId>com.datastax.cassandra</groupId>
			<artifactId>cassandra-driver-core</artifactId>
			<version>3.1.2</version>
		</dependency>

	</dependencies>
</project>
           

2、连接数据库

package com.xxx.test;

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Host;
import com.datastax.driver.core.KeyspaceMetadata;
import com.datastax.driver.core.Metadata;
/**
 * 连接Cassandra数据库
 * @author Administrator
 *
 */
public class FirstDemo {
	
	public static void main(String[] args) {
		
		//连接
		Cluster cluster = 
				Cluster.builder().addContactPoint("127.0.0.1").withPort(9042).build();
		
		//获取并输出相关的集群信息    
		Metadata metadata = cluster.getMetadata();
		//getAllHosts() 获取所有节点连接的信息
		for (Host host : metadata.getAllHosts()) {
			System.out.println("------" + host.getAddress());
		}
		
		System.out.println("======================");
		
		//Metadata原数据对象 输出键空间
		for (KeyspaceMetadata keyspaceMetadata : metadata.getKeyspaces()) {
			System.out.println("--------" + keyspaceMetadata.getName());
		}
		//关闭进程
		cluster.close();
	}
}
           

3、cluster实现增删改查

package com.xxx.test;

import java.util.List;

import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;

/**
 * 实现增删改查的操作
 * Cluster
 * @author Administrator
 *
 */
public class SecondDemo {

	public static void main(String[] args) {
		
		Cluster cluster = null;
		Session session = null;
		
		try {
			//定义cluster类
			cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
			//需要获取session对象
			session = cluster.connect();
			//创建键空间    if not exists  防止发生错误 
			String createKeySpaceCQL = 
					"create keyspace if not exists testkeyspace1 with "
					+ "replication={'class':'SimpleStrategy','replication_factor':1}";
			session.execute(createKeySpaceCQL);
			//创建列族 ,testkeyspace1.student指定键空间的student表
			String createTableCQL =
					"create table if not exists testkeyspace1.student(name varchar primary key , age int)";
			session.execute(createTableCQL);
			//插入数据
			String insertCQL = 
					"insert into testkeyspace1.student(name,age) values('zhang',23)";
			session.execute(insertCQL);
			//查询
			String queryCQL = 
					"select * from testkeyspace1.student";
			//同步查询 ,返回结果是ResultSet
			ResultSet rs = session.execute(queryCQL);
			List<Row> dataList = rs.all();
			for (Row row : dataList) {
				System.out.println("------name" + row.getString("name"));
				System.out.println("------age" + row.getInt("age"));
			}
			//修改
			String updateCQL = 
					"update testkeyspace1.student set age=40 where name='zhang'";
			session.execute(updateCQL);
			rs = session.execute(queryCQL);
			dataList = rs.all();
			for (Row row : dataList) {
				System.out.println("------name" + row.getString("name"));
				System.out.println("------age" + row.getInt("age"));
			}
			//删除数据
			String deleteCQL=
					"delete from testkeyspace1.student where name='zhang'";
			session.execute(deleteCQL);
			rs = session.execute(queryCQL);
			dataList = rs.all();
			for (Row row : dataList) {
				System.out.println("------name" + row.getString("name"));
				System.out.println("------age" + row.getInt("age"));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			//关闭session和cluster
			session.close();
			cluster.close();
		}
	}
}
           

4、QueryBuilder 增删改查

package com.xxx.test;

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.querybuilder.Insert;
import com.datastax.driver.core.querybuilder.QueryBuilder;
import com.datastax.driver.core.querybuilder.Select.Where;
/**
 * QueryBuilder 增删改查
 * @author Administrator
 *
 */
public class ThirdDemo {
	

	public static void main(String[] args) {
		
		Cluster cluster = null;
		Session session = null;
		
		try {
			//定义cluster类
			cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
			//需要获取session对象
			session = cluster.connect();
			
			//新增数据 指定键空间和表
			 Insert insert= 
					 QueryBuilder.insertInto("testkeyspace1", "student").value("name", "xiaoming").value("age", 23);
			 session.execute(insert);
			 
			//查询数据
			 System.out.println("------查询数据------");
			 Where select = 
					 QueryBuilder.select().all().from("testkeyspace1", "student").where(QueryBuilder.eq("name", "xiaoming"));
			 System.out.println(select);
			 ResultSet rs = session.execute(select);
			 for (Row row : rs.all()) {
				System.out.println("-----name:" + row.getString("name"));
				System.out.println("-----age:" + row.getInt("age"));
			}
			
			//更新数据
			 System.out.println("------更新数据------");
			 //把名字是小明的人的年龄改成50
			 com.datastax.driver.core.querybuilder.Update.Where update=
					 QueryBuilder.update("testkeyspace1", "student").with(QueryBuilder.set("age", 50)).where(QueryBuilder.eq("name", "xiaoming"));
			 System.out.println(update);
			 session.execute(update);
			 //输出数据
			 rs = session.execute(select);
			 for (Row row : rs.all()) {
				System.out.println("-----name:" + row.getString("name"));
				System.out.println("-----age:" + row.getInt("age"));
			}
			//删除数据
			 System.out.println("------删除数据------");
			 com.datastax.driver.core.querybuilder.Delete.Where delete = QueryBuilder.delete().from("testkeyspace1", "student").where(QueryBuilder.eq("name", "xiaoming"));
			 System.out.println(delete);
			 session.execute(delete);
			//输出数据
			 rs = session.execute(select);
			 for (Row row : rs.all()) {
				System.out.println("-----name:" + row.getString("name"));
				System.out.println("-----age:" + row.getInt("age"));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			//关闭session和cluster
			session.close();
			cluster.close();
		}
	}
}
           

5、PreparedStatement 

package com.xxx.test;

import java.util.List;

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
/**
 * PreparedStatement 增删改查
 * @author Administrator
 *
 */
public class FourthDemo {
	
public static void main(String[] args) {
		
		Cluster cluster = null;
		Session session = null;
		
		try {
			//定义cluster类
			cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
			//需要获取session对象
			session = cluster.connect();
			
			PreparedStatement statement = 
					session.prepare(
							"insert into testkeyspace1.student(name,age) values(?,?)");
			//为占位符指定值
			session.execute(statement.bind("wangwu",23));
			
			//查询
			String queryCQL = 
					"select * from testkeyspace1.student";
			ResultSet rs = session.execute(queryCQL);
			List<Row> dataList = rs.all();
			for (Row row : dataList) {
				System.out.println("------name" + row.getString("name"));
				System.out.println("------age" + row.getInt("age"));
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			//关闭session和cluster
			session.close();
			cluster.close();
		}
	}
}