spring boot集成Cassandra

1,版本说明

jdk:1.8

spring boot:Dalston.SR1【1.5.4.RELEASE】

Cassandra服务端:cassandra-3.11.4

2,POM文件依赖


    org.springframework.data
    spring-data-cassandra

以及spring boot必要依赖。

3,application.yml配置

spring:
  data:
    cassandra:
      keyspace-name: cloudbridge
      #entity-base-packages:
      contact-points: 服务端IP
      port: 9042
      cluster-name: Test Cluster

4,配置加载类

package com.eden.springcloud.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.cassandra.config.java.AbstractCassandraConfiguration;

import com.eden.springcloud.devicedata.vo.DeviceDataVo;


@Configuration
public class CassandraConfig extends AbstractCassandraConfiguration {

//空间名称
    @Value("${spring.data.cassandra.keyspace-name}")
    private String keyspaceName;

    //表实体类包名
//    @Value("${spring.data.cassandra.entity-base-packages}")
//    private String entityBasePackages;

    //节点IP(连接的集群节点IP)
    @Value("${spring.data.cassandra.contact-points}")
    private String contactPoints;

    //端口
    @Value("${spring.data.cassandra.port}")
    private int port;

    //集群名称
    @Value("${spring.data.cassandra.cluster-name}")
    private String clusterName;

    
    @Override
    protected String getKeyspaceName() {
        return keyspaceName;
    }

    @Override
    public String getContactPoints() {
        return contactPoints;
    }

    @Override
    public int getPort() {
        return this.port;
    }

    @Override
    public String getClusterName() {
        return clusterName;
    }

    @Override
    public String[] getEntityBasePackages() {
        return new String[] { DeviceDataVo.class.getPackage().getName()};
    }
}

5,实体类

package com.eden.springcloud.devicedata.vo;

import java.io.Serializable;
import java.util.Date;

import org.springframework.data.cassandra.mapping.Column;
import org.springframework.data.cassandra.mapping.PrimaryKey;
import org.springframework.data.cassandra.mapping.Table;


@Table("device_data")
public class DeviceDataVo implements Serializable{
     
        private static final long serialVersionUID = 3531754743416202852L;
     
        /**
         * 存储主键
         */
        @PrimaryKey
        private Long id;
     
        @Column(value = "device_id")
        private Long deviceId;
        @Column(value = "property")
        private String property;

        @Column(value = "value")
        private String value;

  
        /**
         * @return the id
         */
        public Long getId() {
            return id;
        }

        /**
         * @param id the id to set
         */
        public void setId(Long id) {
            this.id = id;
        }

        /**
         * @return the deviceId
         */
        public Long getDeviceId() {
            return deviceId;
        }

        /**
         * @param deviceId the deviceId to set
         */
        public void setDeviceId(Long deviceId) {
            this.deviceId = deviceId;
        }
        /**
         * @return the property
         */
        public String getProperty() {
            return property;
        }

        /**
         * @param property the property to set
         */
        public void setProperty(String property) {
            this.property = property;
        }

        /**
         * @return the value
         */
        public String getValue() {
            return value;
        }

        /**
         * @param value the value to set
         */
        public void setValue(String value) {
            this.value = value;
        }
}

6,repository类

package com.eden.springcloud.devicedata.dao;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.cassandra.core.CassandraTemplate;
import org.springframework.stereotype.Repository;

import com.datastax.driver.core.querybuilder.QueryBuilder;
import com.datastax.driver.core.querybuilder.Select;
import com.eden.springcloud.devicedata.vo.DeviceDataVo;


@Repository
public class DeviceDataDao{

    @Autowired
    private CassandraTemplate cassandraTemplate;
    
    public DeviceDataVo save(DeviceDataVo entity) {
        return cassandraTemplate.insert(entity);
    }
    
    public DeviceDataVo findOne(Long id) {
        return cassandraTemplate.selectOneById(DeviceDataVo.class, id);
    }
    
    public Iterable findAll() {
        return cassandraTemplate.select("SELECT * FROM device_data ;", DeviceDataVo.class);
    }

    public Iterable findByCondition(DeviceDataVo deviceDataVo) {

        //未建索引的列查询  须使用ALLOW FILTERING

        Select select = QueryBuilder.select().from("device_data").allowFiltering();
        select.where(QueryBuilder.eq("status", "1"));
        return cassandraTemplate.select(select, DeviceDataVo.class);
    }
    
}

 

你可能感兴趣的:(spring,cloud,Cassandra,springcloud,Cassandra)