cassandra数据库使用(四)--使用spring data进行数据基本操作,cassandraspring
一、简介
这一节,将介绍基于spring data对cassandra进行数据的增删改查操作。
二、开发步骤
1、添加maven依赖(spring略过,其版本为5.0.4.RELEASE)
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.32</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.6</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-mapping</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-extras</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-cassandra</artifactId>
<version>2.0.7.RELEASE</version>
</dependency>
2、定义示例对象StuCas.java
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.springframework.data.cassandra.core.mapping.Column;
import org.springframework.data.cassandra.core.mapping.PrimaryKey;
import org.springframework.data.cassandra.core.mapping.Table;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
@Table("stu")
public class StuCas {
@PrimaryKey("stu_id")
private Integer stuId;
@Column("stu_name")
private String stuName;
@Column("teacher_list")
private List<String> teacherList;
@Column("course_set")
private Set<String> courseSet;
@Column("school")
private Map<String, String> schoolMap;
@Column("create_time")
private Date createTime;
public StuCas() {
}
public StuCas(Integer stuId, String stuName, List<String> teacherList, Set<String> courseSet, Map<String, String> schoolMap) {
this.stuId = stuId;
this.stuName = stuName;
this.teacherList = teacherList;
this.courseSet = courseSet;
this.schoolMap = schoolMap;
}
public Integer getStuId() {
return stuId;
}
public void setStuId(Integer stuId) {
this.stuId = stuId;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public List<String> getTeacherList() {
return teacherList;
}
public void setTeacherList(List<String> teacherList) {
this.teacherList = teacherList;
}
public Set<String> getCourseSet() {
return courseSet;
}
public void setCourseSet(Set<String> courseSet) {
this.courseSet = courseSet;
}
public Map<String, String> getSchoolMap() {
return schoolMap;
}
public void setSchoolMap(Map<String, String> schoolMap) {
this.schoolMap = schoolMap;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}
注意:1、通过注解@Table指定表名
2、通过注解@PrimaryKey指定唯一键
3、通过注解@Column指定列名
3、定义repository类StuCasRepository.java
import com.dragon.study.cassandra.bean.StuCas;
import org.springframework.data.repository.CrudRepository;
public interface StuCasRepository extends CrudRepository<StuCas, Integer> {
StuCas findByStuName(String stuName);
}
4、定义spring文件spring-cassandra.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:cassandra="http://www.springframework.org/schema/data/cassandra"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/data/cassandra
http://www.springframework.org/schema/data/cassandra/spring-cassandra.xsd
">
<!--cassandra的ip和port-->
<cassandra:cluster id="cassandraCluster" contact-points="192.168.0.1" port="9042"/>
<!--指定keyspace-->
<cassandra:session id="cassandraSession" cluster-ref="cassandraCluster" keyspace-name="key_space_1"/>
<!--指定repository路径-->
<cassandra:repositories base-package="com.dragon.study.cassandra.repository"/>
<!--指定bean路径-->
<cassandra:mapping entity-base-packages="com.dragon.study.cassandra.bean"/>
<cassandra:template id="cassandraTemplate"/>
<cassandra:converter id="cassandraConverter"/>
</beans>
5、进行数据的增删除改查(解释请看注释)
import com.dragon.study.cassandra.bean.StuCas;
import com.dragon.study.cassandra.repository.StuCasRepository;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.*;
public class CassandraSpringPaperMain {
public static void main(String[] args) {
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("classpath:spring-cassandra.xml");
//获取repository
StuCasRepository stuCasRepository = ac.getBean(StuCasRepository.class);
Map<String, String> schoolMap = new HashMap<>();
schoolMap.put("schoolId", "001");
schoolMap.put("schoolName", "第一中学");
List<String> teacherList = Arrays.asList("张教师", "李教师");
Set<String> courseSet = new HashSet<>(Arrays.asList("语文", "英语"));
//插入或更新
StuCas s1 = new StuCas(1, "apple1", teacherList, courseSet, schoolMap);
stuCasRepository.save(s1);
//根据id查找
StuCas stuCas = stuCasRepository.findById(23).get();
System.out.println(stuCas);
//根据stuName查找
StuCas stu2 = stuCasRepository.findByStuName("apple1");
System.out.println(stu2);
//查询所有
Iterable<StuCas> stuIter1 = stuCasRepository.findAll();
stuIter1.forEach(System.out::println);
//根据多个id批量查询
Iterable<StuCas> stuIter2 = stuCasRepository.findAllById(Arrays.asList(1,2,3));
stuIter2.forEach(System.out::println);
//根据id删除
stuCasRepository.deleteById(2);
ac.close();
}
}
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。