一、SpringBoot 中 MongoDB 的簡單使用
(1)pom 依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
(2)yml配置
spring:
data:
mongodb:
uri: mongodb://ydt:ydtnb@123.123.123.123:27017/ydt?authSource=ydt
(3)代碼
@Resource
private MongoTemplate mongoTemplate;
/**
* 新增數(shù)據(jù)示例,jl_gps 集合沒有會自動創(chuàng)建
*/
public void testSave() {
BJlGps jlGps = new BJlGps();
...
mongoTemplate.save(x, "jl_gps")
}
/**
* 查詢數(shù)據(jù)示例
*/
public void testQuery() {
List<TestEntity> list = new ArrayList();
Query query = new Query();
Criteria criteria = new Criteria();
String dwid = getDwid();
// 模糊查詢
criteria.where("dwid").regex("^.*" + dwid + ".*$");
/* 精確查詢 */
if (StringUtil.isNotEmpty(type)) {
criteria.and("type").is(type);
}
/* 范圍查詢 */
if (StringUtil.isNotEmpty(sDate) && StringUtil.isNotEmpty(eDate)) {
criteria.and("dt")
.gte(DateUtil.strToDateLong(sDate))
.lt(DateUtil.strToDateLong(eDate));
}
query.addCriteria(criteria);
// 執(zhí)行查詢,反饋結果集
list = mongoTemplate.find(query, TestEntity.class, "test");
}
二、問題補充(問題提出者:王)
問題一:使用 MongoTemplate 查詢數(shù)據(jù)第一次會比較慢
原因:第一次查詢會先建立連接,導致查詢慢
解決方案:在項目啟動時建立連接
@Component
public class MongoConnTask implements ApplicationRunner {
/**
* Springboot啟動時,注入 MongoTemplate ,即可創(chuàng)建連接
*/
@Resource
private MongoTemplate mongoTemplate;
@Override
public void run(ApplicationArguments args) throws Exception {
}
}
問題二:可視化工具中查看時間相關數(shù)據(jù),發(fā)現(xiàn)與存進去的時間少 8 小時
原因:MongoDB 存儲時間為標準時間,UTC +0:00。中國標準時間為 UTC +8:00。
解決方案:無需解決
MongoTemplate 在取數(shù)據(jù)時,會自動加 8H,保證存取一致。
本文摘自 :https://www.cnblogs.com/