1、创建多模块的项目请参考https://blog.csdn.net/sunxiaoju/article/details/84343002
2、创建一个cassandra模块,并创建好相应的目录包以及对应的文件,如下图所示:
3、然后配置pom.xml,需要添加对应的依赖包,如下代码所示:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<parent>
<artifactId>Spring-root</artifactId>
<groupId>Spring-root</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cassandra</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-cassandra</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.6.0</version>
</dependency>
</dependencies>
</project>
4、然后打开cassandra数据库创建user表,cql语句为:
create table user (id bigint primary key,username text,age int);
如下图所示:
5、向user表中插入数据,cql语句为:
insert into user (id,username,age) values (1,'zs',23);
insert into user (id,username,age) values (2,'ls',24);
insert into user (id,username,age) values (3,'ww',25);
如下图所示:
6、根据数据库表创建User.java实体类,如下代码:
package com.win.cas.bean;
import org.springframework.data.cassandra.core.mapping.PrimaryKey;
import org.springframework.data.cassandra.core.mapping.Table;
@Table(value = "user")
public class User {
@PrimaryKey("id")
private int id;
private String username;
private int age;
public User() {
}
public User(String username, int age) {
this.username = username;
this.age = age;
}
public void setUsername(String username){
this.username=username;
}
public void setAge(int age){
this.age=age;
}
public int getId(){
return this.id;
}
public void setId(int id){
this.id=id;
}
public String getUsername(){
return this.username;
}
public int getAge(){
return this.age;
}
}
7、创建返回json对象类:JsonResult.java,如下代码:
package com.win.cas.bean;
public class JsonResult {
private String status = null;
private Object result = null;
public JsonResult status(String status) {
this.status = status;
return this;
}
public void setResult(Object user){
this.result=user;
}
public Object getResult(){
return this.result;
}
public void setStatus(String status){
this.status=status;
}
public String getStatus(){
return this.status;
}
}
8、创建dao接口类:UserDao.java,如下代码所示:
package com.win.cas.dao;
import com.win.cas.bean.User;
import java.util.List;
public interface UserDao {
public User getUserById(Integer id);
public User getUserById1(Integer id);
public List<User> getUserList();
public List<User> getUserList1();
public boolean add(User user);
public boolean update(Integer id, User user);
public boolean delete(Integer id);
}
9、实现dao接口类:UserDaoImpl.java,如下代码所示:
package com.win.cas.dao.impl;
import com.win.cas.bean.User;
import com.win.cas.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.cassandra.core.CassandraTemplate;
import org.springframework.data.cassandra.core.query.Query;
import org.springframework.data.cassandra.core.query.Update;
import org.springframework.stereotype.Repository;
import java.util.List;
import static org.springframework.data.cassandra.core.query.Criteria.where;
@Repository
public class UserDaoImpl implements UserDao {
@Autowired
private CassandraTemplate cassandraTemplate;
@Override
public User getUserById(Integer id){
String cql=String.format("select * from user where id = %d",id.intValue());
List<User> list = cassandraTemplate.select(cql,User.class);
if(list!=null && list.size()>0){
return list.get(0);
}else{
return null;
}
}
@Override
public User getUserById1(Integer id){
User usero = cassandraTemplate.selectOne(Query.query(where("id").is(id)),User.class );
if(usero!=null){
return usero;
}
return null;
}
@Override
public List<User> getUserList(){
String cql=String.format("select * from user");
List<User> list = cassandraTemplate.select(cql,User.class);
if(list!=null && list.size()>0){
return list;
}else{
return null;
}
}
@Override
public List<User> getUserList1(){
return null;
}
@Override
public boolean add(User user){
String cql=String.format("insert into user (id,username,age) values (%d,'%s',%d)",user.getId(),user.getUsername(),user.getAge());
return cassandraTemplate.getCqlOperations().execute(cql);
}
@Override
public boolean update(Integer id, User user){
return cassandraTemplate.update(Query.query(where("id").is(id.intValue())),Update.empty().set("username",user.getUsername()).set("age",user.getAge()), User.class);
}
@Override
public boolean delete(Integer id){
return cassandraTemplate.delete(Query.query(where("id").is(id.intValue())),User.class);
}
}
10、service接口类:UserService.java,如下代码所示:
package com.win.cas.service;
import com.win.cas.bean.User;
import java.util.List;
public interface UserService {
public User getUserById(Integer id);
public List<User> getUserList();
public User getUserById1(Integer id);
public List<User> getUserList1();
public boolean add(User user);
public boolean update(Integer id, User user);
public boolean delete(Integer id);
}
11、实现service接口类:UserServiceImpl.java,如下代码所示:
package com.win.cas.service.impl;
import com.win.cas.bean.User;
import com.win.cas.dao.UserDao;
import com.win.cas.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public User getUserById(Integer id){
return userDao.getUserById(id);
}
@Override
public User getUserById1(Integer id){
return userDao.getUserById1(id);
}
@Override
public List<User> getUserList(){
return userDao.getUserList();
}
@Override
public List<User> getUserList1(){
return userDao.getUserList1();
}
@Override
public boolean add(User user){
return userDao.add(user);
}
@Override
public boolean update(Integer id, User user){
return userDao.update(id, user);
}
@Override
public boolean delete(Integer id){
return userDao.delete(id);
}
}
12、控制层代码UserController.java类,如下代码:
package com.win.cas.web;
import com.win.cas.bean.JsonResult;
import com.win.cas.bean.User;
import com.win.cas.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
public class UserController {
@Autowired
private UserService userService;
/**
* 根据ID查询用户
* @param id
* @return
*/
@RequestMapping(value = "user/{id}", method = RequestMethod.GET)
public ResponseEntity<JsonResult> getUserById (@PathVariable(value = "id") Integer id){
JsonResult r = new JsonResult();
try {
User user = userService.getUserById(id);
r.setResult(user);
r.setStatus("ok");
} catch (Exception e) {
r.setResult(e.getClass().getName() + ":" + e.getMessage());
r.setStatus("error");
e.printStackTrace();
}
return ResponseEntity.ok(r);
}
/**
* 根据ID查询用户
* @param id
* @return
*/
@RequestMapping(value = "user1/{id}", method = RequestMethod.GET)
public ResponseEntity<JsonResult> getUserById1 (@PathVariable(value = "id") Integer id){
JsonResult r = new JsonResult();
try {
User user = userService.getUserById1(id);
r.setResult(user);
r.setStatus("ok");
} catch (Exception e) {
r.setResult(e.getClass().getName() + ":" + e.getMessage());
r.setStatus("error");
e.printStackTrace();
}
return ResponseEntity.ok(r);
}
/**
* 查询用户列表
* @return
*/
@RequestMapping(value = "users", method = RequestMethod.GET)
public ResponseEntity<JsonResult> getUserList (){
JsonResult r = new JsonResult();
try {
List<User> users = userService.getUserList();
r.setResult(users);
r.setStatus("ok");
} catch (Exception e) {
r.setResult(e.getClass().getName() + ":" + e.getMessage());
r.setStatus("error");
e.printStackTrace();
}
return ResponseEntity.ok(r);
}
/**
* 查询用户列表
* @return
*/
@RequestMapping(value = "users1", method = RequestMethod.GET)
public ResponseEntity<JsonResult> getUserList1 (){
JsonResult r = new JsonResult();
try {
List<User> users = userService.getUserList1();
r.setResult(users);
r.setStatus("ok");
} catch (Exception e) {
r.setResult(e.getClass().getName() + ":" + e.getMessage());
r.setStatus("error");
e.printStackTrace();
}
return ResponseEntity.ok(r);
}
/**
* 添加用户
* @param user
* @return
*/
@RequestMapping(value = "user", method = RequestMethod.POST)
public ResponseEntity<JsonResult> add (@RequestBody User user){
JsonResult r = new JsonResult();
try {
boolean orderId = userService.add(user);
if (!orderId) {
r.setResult(orderId);
r.setStatus("fail");
} else {
r.setResult(orderId);
r.setStatus("ok");
}
} catch (Exception e) {
r.setResult(e.getClass().getName() + ":" + e.getMessage());
r.setStatus("error");
e.printStackTrace();
}
return ResponseEntity.ok(r);
}
/**
* 根据id删除用户
* @param id
* @return
*/
@RequestMapping(value = "user/{id}", method = RequestMethod.DELETE)
public ResponseEntity<JsonResult> delete (@PathVariable(value = "id") Integer id){
JsonResult r = new JsonResult();
try {
boolean orderId = userService.delete(id);
if (!orderId) {
r.setResult(orderId);
r.setStatus("fail");
} else {
r.setResult(orderId);
r.setStatus("ok");
}
} catch (Exception e) {
r.setResult(e.getClass().getName() + ":" + e.getMessage());
r.setStatus("error");
e.printStackTrace();
}
return ResponseEntity.ok(r);
}
/**
* 根据id修改用户信息
* @param user
* @return
*/
@RequestMapping(value = "user/{id}", method = RequestMethod.PUT)
public ResponseEntity<JsonResult> update (@PathVariable("id") Integer id, @RequestBody User user){
JsonResult r = new JsonResult();
try {
boolean ret = userService.update(id, user);
if (!ret) {
r.setResult(ret);
r.setStatus("fail");
} else {
r.setResult(ret);
r.setStatus("ok");
}
} catch (Exception e) {
r.setResult(e.getClass().getName() + ":" + e.getMessage());
r.setStatus("error");
e.printStackTrace();
}
return ResponseEntity.ok(r);
}
}
13、启动类代码:Application.java类,如下代码:
package com.win.cas;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableAutoConfiguration
@SpringBootApplication
public class Application {
public static void main( String[] args )
{
System.out.println( "start....." );
SpringApplication.run(Application.class, args);
}
}
14、application.yml配置文件:
spring:
data:
cassandra:
keyspace-name: mycasdb
contact-points: 127.0.0.1
port: 9042
username: cassandra
password: cassandra
15、通过Debug启动程序,然后在浏览器中输入:http://127.0.0.1:8080/user/1或http://127.0.0.1:8080/user1/2,即可查询cassandra数据表中的内容,此两个地址所实现的代码是略有不同的,如下图所示:
16、输入:http://127.0.0.1:8080/users,即可查询user表中的所有记录,如下图所示:
17、添加用户,打开火狐浏览器的RESTClient调试工具,然后添加http头,如下图所示:
18、请求方法选择Post,然后输入:,在正文中输入:{"id":4,"username":"zl","age":26},如下图所示:
19、点击发送请求之后可通过http://127.0.0.1:8080/users进行查看,如下图所示:
20、修改用户信息,选择put请求,然后输入:http://127.0.0.1:8080/user/4,输入要修改的内容:{"id":4,"username":"hahazl23423","age":80},表示修改指定ID的信息,点击发送即可修改,并且有返回状态,如下图所示:
21、再次刷新获取用户列表,如下图所示:
22、删除用户信息,选择DELETE请求,然后输入:http://127.0.0.1:8080/user/2,不需要输入内容,点击发送即可删除,并且有返回状态,如下图所示:
23、重新刷新即可删除,如下图所示: