通过maven库查找,找到Azure DocumentDB的对应的SDK java jar.
<!-- azure-documentdb -->
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-documentdb</artifactId>
<version>1.9.4</version>
</dependency>
通过查看得知依赖关系:
- Apache Commons Lang
- Apache HttpClient
- Apache HttpCore
- Jackson Data Mapper
- JSON
- JUnit
- mockito
#1.建立数据库,集合 首先需要从Azure云上获取到DocumentDB的END_POINT和MASTER_KEY(分为读写key和只读key).
// 初始化一个DocumentClient实例,用于操作Azure DocumentDB
DocumentClient documentClient = new DocumentClient(
END_POINT,
MASTER_KEY,
ConnectionPolicy.GetDefault(),
ConsistencyLevel.Session);
// 创建数据库
Database myDatabase = new Database();
myDatabase.setId(DATABASE_ID);
myDatabase = documentClient.createDatabase(myDatabase, null).getResource();
// 创建集合
DocumentCollection myCollection = new DocumentCollection();
myCollection.setId(COLLECTION_ID);
// 设置吞吐量为 1000 RUs.
RequestOptions requestOptions = new RequestOptions();
requestOptions.setOfferThroughput(1000);
myCollection = documentClient.createCollection(
myDatabase.getSelfLink(),
myCollection,
requestOptions).getResource();
只是通过API可以进行创建,但实际上,最好在Azure云上直接手动进行创建,创建过程中需要选择相关的价格.所以我选择在程序中不创建数据库以及集合.
#2 .插入数据 创建数据,需要的角色为DocumentClient,DataBase,Colliection. 因此,我们创建以下3个测试用的工具方法
public static DocumentClient getDocumentClient() {
return new DocumentClient(END_POINT, MASTER_KEY, ConnectionPolicy.GetDefault(), ConsistencyLevel.Session);
}
public static Database getDatabase(DocumentClient documentClient, String dataBaseId) throws Exception {
String querySql = "SELECT * FROM root r WHERE r.id=" + dataBaseId;
List<Database> databaseList = documentClient.queryDatabases(querySql, null).getQueryIterable().toList();
if (!databaseList.isEmpty()) {
return databaseList.get(0);
} else {
throw new Exception("Database does not exist.");
}
}
public static DocumentCollection getDocumentCollection(DocumentClient documentClient, Database database, String collectionId) throws Exception {
String querySql = "SELECT * FROM root r WHERE r.id=" + collectionId;
List<DocumentCollection> documentCollectionList = documentClient.queryCollections(database.getSelfLink(), querySql, null)
.getQueryIterable().toList();
if (!documentCollectionList.isEmpty()) {
return documentCollectionList.get(0);
} else {
throw new Exception("DocumentCollection does not exist.");
}
}
下面是插入数据的main方法:
import com.microsoft.azure.documentdb.Database;
import com.microsoft.azure.documentdb.Document;
import com.microsoft.azure.documentdb.DocumentClient;
import com.microsoft.azure.documentdb.DocumentCollection;
/**
* This file created by ZhaoQian on 2017/1/10 14:35.
*/
public class InsertDataTest {
public static void main(String[] args) throws Exception {
DocumentClient documentClient = DocumentDBUtils.getDocumentClient();
Database database = DocumentDBUtils.getDatabase(documentClient, DocumentDBUtils.DATABASE_ID);
DocumentCollection documentCollection = DocumentDBUtils.getDocumentCollection(documentClient, database, DocumentDBUtils.COLLECTION_ID);
String jsonString = "{\"id\":\"003\" ,\"firstName\": \"Credo\", \"lastName\":\"Zhao\", \"email\": \"credo@gmail.com\" }";
Document document = new Document(jsonString);
try {
documentClient.createDocument(documentCollection.getSelfLink(), document, null, false);
}catch (Exception e){
e.printStackTrace();
}
}
}
log日记输入是一对的HTTP信息.这表明微软的这个jar是用HTTP POST推送信息到documentDB中.
#3. 查询数据 代码如下:
import com.microsoft.azure.documentdb.Database;
import com.microsoft.azure.documentdb.Document;
import com.microsoft.azure.documentdb.DocumentClient;
import com.microsoft.azure.documentdb.DocumentCollection;
import java.util.List;
/**
* This file created by ZhaoQian on 2017/1/10 15:22.
*/
public class TestQueryData {
public static void main(String[] args) throws Exception {
DocumentClient documentClient = DocumentDBUtils.getDocumentClient();
Database database = DocumentDBUtils.getDatabase(documentClient, DocumentDBUtils.DATABASE_ID);
DocumentCollection documentCollection = DocumentDBUtils.getDocumentCollection(documentClient, database, DocumentDBUtils.COLLECTION_ID);
//Document document=DocumentDBUtils.getDocumentById(documentClient,documentCollection,"001");
//System.out.println(document);
List<Document> documentList = documentClient
.queryDocuments(documentCollection.getSelfLink(),
"SELECT * FROM c", null)
.getQueryIterable().toList();
for(Document temp:documentList){
System.out.println(temp);
}
}
}
输入结果为:
{"firstName":"Credo","lastName":"Zhao","_attachments":"attachments/","_rid":"1UAxAIjCGwABAAAAAAAAAA==","id":"001","_self":"dbs/1UAxAA==/colls/1UAxAIjCGwA=/docs/1UAxAIjCGwABAAAAAAAAAA==/","email":"credo@gmail.com","_etag":"\"0300d513-0000-0000-0000-58748af10000\"","_ts":1484032749}
{"firstName":"Credo","lastName":"Zhao","_attachments":"attachments/","_rid":"1UAxAIjCGwADAAAAAAAAAA==","id":"002","_self":"dbs/1UAxAA==/colls/1UAxAIjCGwA=/docs/1UAxAIjCGwADAAAAAAAAAA==/","email":"credo@gmail.com","_etag":"\"03008520-0000-0000-0000-58748da70000\"","_ts":1484033443}
{"firstName":"Credo","lastName":"Zhao","_attachments":"attachments/","_rid":"1UAxAIjCGwAEAAAAAAAAAA==","id":"003","_self":"dbs/1UAxAA==/colls/1UAxAIjCGwA=/docs/1UAxAIjCGwAEAAAAAAAAAA==/","email":"credo@gmail.com","_etag":"\"03005a2e-0000-0000-0000-587490e80000\"","_ts":1484034276}