zl程序教程

您现在的位置是:首页 >  其他

当前栏目

cassandra入门(三):便捷的@Accessor注解

入门 注解 便捷 Cassandra
2023-09-14 09:02:12 时间

import com.datastax.driver.core.ResultSet;

import com.datastax.driver.mapping.Result;

import com.datastax.driver.mapping.annotations.Accessor;

import com.datastax.driver.mapping.annotations.Param;

import com.datastax.driver.mapping.annotations.Query;

import com.google.common.util.concurrent.ListenableFuture;

import com.zoo.Address;

@Accessor

public interface UserAccessor {

@Query("SELECT * FROM complex.users WHERE id = ?")

User getOnePosition(UUID userId);

@Query("SELECT * FROM complex.users")

Result User getAll();

@Query("SELECT * FROM complex.users")

ListenableFuture Result User getAllAsync();

@Query("insert into complex.users(id, name, addresses) values (:id, :name, :addresses)")

ResultSet insertUser(@Param("id") UUID id, @Param("name") String name,

@Param("addresses") Map String, Address addresses);

@Query("UPDATE complex.users SET name= :name WHERE id= :id")

ResultSet updateName(@Param("id") UUID id, @Param("name") String name);

@Query("UPDATE complex.users SET addresses[:name]=:address WHERE id= :id")

ResultSet updateAddress(@Param("id") UUID id, @Param("name") String addressName,

@Param("address") Address address);

@Query("DELETE FROM complex.users WHERE id = ?")

ResultSet deleteOne(UUID userId);

}


import java.util.UUID;

import com.datastax.driver.mapping.annotations.Column;

import com.datastax.driver.mapping.annotations.Frozen;

import com.datastax.driver.mapping.annotations.Table;

import com.zoo.Address;

import com.zoo.BaseEntity;

@Table(keyspace = "complex", name = "users")

public class User extends BaseEntity {

private UUID id;

private String name;

@Column(name = "addresses")

@Frozen("map text,frozen address ")

private Map String, Address address;

public UUID getId() {

return id;

}

public void setId(UUID id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Map String, Address getAddress() {

return address;

}

public void setAddress(Map String, Address address) {

this.address = address;

}

}


import com.datastax.driver.core.Cluster;

import com.datastax.driver.core.Host;

import com.datastax.driver.core.Metadata;

import com.datastax.driver.core.Session;

import com.datastax.driver.mapping.MappingManager;

import com.datastax.driver.mapping.Result;

import com.google.common.util.concurrent.ListenableFuture;

import com.zoo.Address;

import com.zoo.Phone;

/**

*

* @author yankai913@gmail.com

* @date 2015-11-4

*

*/

public class AccessorClient {

private Cluster cluster;

private Session session;

// 放一个公共userId

private UUID userId = UUID.fromString("fbdf82ed-0063-4796-9c7c-a3d4f47b4b25");

public Session getSession() {

return this.session;

}

/**

* 连接集群,创建执行cql的session对象。

*

* @param node

*/

public void connect(String node) {

cluster = Cluster.builder().addContactPoint(node).build();

Metadata metadata = cluster.getMetadata();

System.out.printf("Connected to cluster: %s\n", metadata.getClusterName());

for (Host host : metadata.getAllHosts()) {

System.out.printf("Datacenter: %s; Host: %s; Rack: %s\n", host.getDatacenter(),

host.getAddress(), host.getRack());

}

session = cluster.connect();

System.out.println();

}

public void insert() {

MappingManager manager = new MappingManager(getSession());

UserAccessor userAccessor = manager.createAccessor(UserAccessor.class);

Map String, Address addresses = new HashMap String, Address

Address address = new Address();

address.setCity("Honolulu");

address.setStreet("123 Arnold Drive");

address.setZipCode(95476);

List Phone phones = new ArrayList Phone

Phone phone1 = new Phone("job1", "10086");

Phone phone2 = new Phone("job2", "10000");

phones.add(phone1);

phones.add(phone2);

address.setPhones(phones);

addresses.put("Work", address);

userAccessor.insertUser(userId, "tom", addresses);

}

public void select() {

// getAll

MappingManager manager = new MappingManager(getSession());

UserAccessor userAccessor = manager.createAccessor(UserAccessor.class);

Result User users = userAccessor.getAll();

for (User user : users) {

System.out.println("getAll:" + user);

}

// getOne

User user = userAccessor.getOnePosition(userId);

System.out.println("getOne:" + user);

// getAllAsync

ListenableFuture Result User future = userAccessor.getAllAsync();

try {

for (User _user : future.get()) {

System.out.println("getAsync:" + _user);

}

}

catch (Exception e) {

e.printStackTrace();

}

}

public void update() {

MappingManager manager = new MappingManager(getSession());

UserAccessor userAccessor = manager.createAccessor(UserAccessor.class);

userAccessor.updateName(userId, "jack");

}

public void update2() {

MappingManager manager = new MappingManager(getSession());

UserAccessor userAccessor = manager.createAccessor(UserAccessor.class);

Address address = new Address();

List Phone phones = new ArrayList Phone

Phone phone2 = new Phone("job2", "10010");

phones.add(phone2);

address.setPhones(phones);

userAccessor.updateAddress(userId, "Work", address);

}

public void delete() {

MappingManager manager = new MappingManager(getSession());

UserAccessor userAccessor = manager.createAccessor(UserAccessor.class);

userAccessor.deleteOne(userId);

}

public void dropSchema() {

session.execute("DROP KEYSPACE complex;");

}

public void close() {

session.close();

cluster.close();

}

public static void main(String[] args) {

AccessorClient client = new AccessorClient();

try {

client.connect("127.0.0.1");

client.select();

client.insert();

client.select();

client.update();

client.select();

client.update2();

client.select();

client.delete();

client.select();

client.dropSchema();

}

catch (Exception e) {

e.printStackTrace();

}

finally {

client.close();

}

}

}


Connected to cluster: Test Cluster
Datacenter: datacenter1; Host: /127.0.0.1; Rack: rack1

getOne:null

getOne:{“address”:{“Work”:{“city”:”Honolulu”,”phones”:[{"alias":"job1","number":"10086"},{"alias":"job2","number":"10000"}],”street”:”123 Arnold Drive”,”zipCode”:95476}},”id”:”fbdf82ed-0063-4796-9c7c-a3d4f47b4b25″,”name”:”tom”}

getOne:{“address”:{“Work”:{“city”:”Honolulu”,”phones”:[{"alias":"job1","number":"10086"},{"alias":"job2","number":"10000"}],”street”:”123 Arnold Drive”,”zipCode”:95476}},”id”:”fbdf82ed-0063-4796-9c7c-a3d4f47b4b25″,”name”:”jack”}

getOne:{“address”:{“Work”:{“phones”:[{"alias":"job2","number":"10010"}],”zipCode”:0}},”id”:”fbdf82ed-0063-4796-9c7c-a3d4f47b4b25″,”name”:”jack”}

getOne:null


ElasticSearch 学习笔记(四)-----ES在SpringBoot中的集成以及项目应用开发指南 接上一篇ElasticSearch 学习笔记(三)-----ES的设计原理以及分词器说明。今天我们主要介绍ES 与SpringBoot 的集成以及项目应用开发指南。
SpringCloud微服务实战——搭建企业级开发框架(二十八):扩展MybatisPlus插件DataPermissionInterceptor实现数据权限控制 一套完整的系统权限需要支持功能权限和数据权限,前面介绍了系统通过RBAC的权限模型来实现功能的权限控制,这里我们来介绍,通过扩展Mybatis-Plus的插件DataPermissionInterceptor实现数据权限控制。   简单介绍一下,所谓功能权限,顾名思义是指用户在系统中拥有对哪些功能操作的权限控制,而数据权限是指用户在系统中能够访问哪些数据的权限控制,数据权限又分为行级数据权限和列级数据权限。
SpringCloud微服务实战——搭建企业级开发框架(五):数据库持久化集成MySql+Druid+MyBatis-Plus 在引入相关数据库持久化相关依赖库之前,我们可以考虑到,当我们因业务开发需要,引入各种各样的依赖库时,Jar包冲突是我们必须面对的一个问题,Spring为了解决这些Jar包的冲突,推出了各种bom,最著名的就是Spring IO Platform bom,其中最核心的三个是:spring-framework-bom、spring-boot-dependencies、platform-bom。我们这里参考Spring管理Jar包的方式,新建一个GitEgg-Platform平台工程,提供各种第三方组件的配置及自定义方法,使用子工程gitegg-platform-bom统一管理GitEgg自定义方法
MyBatis基础搭建及架构概述(上) MyBatis是第一个支持自定义SQL、存储过程和高级映射的类持久框架。MyBatis消除了大部分JDBC的样板代码、手动设置参数以及检索结果。MyBatis能够支持简单的XML和注解配置规则。使Map接口和POJO类映射到数据库字段和记录。 下面我们通过一个简单的项目搭建来带你认识一下MyBatis的使用和一些核心组件的讲解。
MyBatis基础搭建及架构概述(下) MyBatis是第一个支持自定义SQL、存储过程和高级映射的类持久框架。MyBatis消除了大部分JDBC的样板代码、手动设置参数以及检索结果。MyBatis能够支持简单的XML和注解配置规则。使Map接口和POJO类映射到数据库字段和记录。 下面我们通过一个简单的项目搭建来带你认识一下MyBatis的使用和一些核心组件的讲解。