一、MongoDB
MongoDB(來自於英文單詞“Humongous”,中文含義爲“龐大”)是可以應用於各種規模的企業、各個行業以及各類應用程序的開源數據庫。基於分佈式文件存儲的數據庫。由C++語言編寫。旨在爲 WEB 應用提供可擴展的高性能數據存儲解決方案。MongoDB 是一個高性能,開源,無模式的文檔型數據庫,是當前 NoSql 數據庫中比較熱門的一種。
MongoDB 是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。他支持的數據結構非常鬆散,是類似 json 的 bjson 格式,因此可以存儲比較複雜的數據類型。MongoDB 最大的特點是他支持的查詢語言非常強大,其語法有點類似於面向對象的查詢語言,幾乎可以實現類似關係數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。
傳統的關係數據庫一般由數據庫(database)、表(table)、記錄(record)三個層次概念組成,MongoDB 是由數據庫(database)、集合(collection)、文檔對象(document)三個層次組成。MongoDB 對於關係型數據庫裏的表,但是集合中沒有列、行和關係概念,這體現了模式自由的特點。
MongoDB 中的一條記錄就是一個文檔,是一個數據結構,由字段和值對組成。MongoDB 文檔與 JSON 對象類似。字段的值有可能包括其它文檔、數組以及文檔數組。MongoDB 支持 OS X、Linux 及 Windows 等操作系統,並提供了 Python,PHP,Ruby,Java及 C++ 語言的驅動程序,社區中也提供了對 Erlang 及 .NET 等平臺的驅動程序。
MongoDB 的適合對大量或者無固定格式的數據進行存儲,比如:日誌、緩存等。對事物支持較弱,不適用複雜的多文檔(多表)的級聯查詢。文中演示 Mongodb 版本爲 3.5。
二、添加Maven依賴
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
</dependencies>
三、application.yml配置
spring:
data:
mongodb:
uri: mongodb://username:[email protected]:27017/test
四、創建數據實體
package com.zxhy.entity;
import com.zxhy.base.entity.BaseEntity;
import java.io.Serializable;
import java.util.Date;
/**
* 事件
*
* @author zxhy
* @date 2018-10-09 11:57:29
*/
public class EventEntity extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
//主鍵
private String event;
//電站ID
private String psId;
//編號
private String id;
//發生時間
private Date ctime;
//數值
private String value;
public String getEvent() {
return event;
}
public void setEvent(String event) {
this.event = event;
}
public String getPsId() {
return psId;
}
public void setPsId(String psId) {
this.psId = psId;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Date getCtime() {
return ctime;
}
public void setCtime(Date ctime) {
this.ctime = ctime;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
五、編寫DAO
package com.zxhy.dao;
import com.zxhy.entity.EventEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
@Component
public class EventDao {
/**
* 操作mongodb的類,可以參考api
*/
@Autowired
private MongoTemplate mongoTemplate;
/**
* 事件信息
*
* @param eventEntity
* @return
*/
public EventEntity save(EventEntity eventEntity) {
mongoTemplate.save(eventEntity);
return eventEntity;
}
/**
* 查詢數據
*
* @param map
* @return
*/
public List<EventEntity> queryList(Map<String, Object> map) {
Query query = new Query();
if (map != null && map.size() > 0) {
for (Map.Entry<String, Object> entry : map.entrySet()) {
query.addCriteria(Criteria.where(entry.getKey()).is(entry.getValue()));
}
}
List<EventEntity> list = mongoTemplate.find(query, EventEntity.class);
return list;
}
}