SpringBoot整合MongoDB完成增刪改查分頁(yè)查詢方式
SpringBoot整合MongoDB完成增刪改查分頁(yè)查詢
mongodb的依賴導(dǎo)入以及連接配置請(qǐng)自行配置,此文檔環(huán)境已經(jīng)搭建完成。
一,SpringBoot整合MongoDB準(zhǔn)備工作
1,首先要有mongodb的Document對(duì)應(yīng)的實(shí)體類,標(biāo)注@Document注解
//collection="zt_message_carousel"即為mongodb庫(kù)中的文檔名字
@Document(collection="zt_message_carousel")
public class CarouselInfo {
//創(chuàng)建索引
@Indexed(unique = true)
@Id
private String id;
private String type;
private String title;
private String clickUrl;
private String photoUrl;
private Integer platformId;
private String systemId;
private Integer sort;
private int state;
private String creator;
private Date createTime;
private Date updateTime;
}
二,SpringBoot整合MongoDB完成添加操作
//添加操作比較簡(jiǎn)單,創(chuàng)建對(duì)象,設(shè)置參數(shù),調(diào)用api即可
CarouselInfo info = new CarouselInfo();
//設(shè)置參數(shù)
info.setId(UUIDUtil.getUuid());
info.setSystemId(params.getSystemId());
info.setPlatformId(params.getPlatformId());
info.setTitle(params.getTitle());
info.setType(params.getType());
info.setClickUrl(params.getClickUrl());
info.setCreator(params.getCreator());
info.setPhotoUrl(params.getPhotoUrl());
info.setCreateTime(new Date());
//調(diào)用方法,完成添加,并返回添加成功的數(shù)據(jù)
CarouselInfo carouselInfo = mongoTemplate.save(info);
三,SpringBoot整合MongoDB完成刪除操作
//創(chuàng)建查詢
Query query = new Query();
//設(shè)置條件
Criteria criteria = new Criteria();
List<String> list = Arrays.asList(ids.split(","));
criteria.and("systemId").is(systemId);
criteria.and("platformId").is(platformId);
//這里用的是in,也可以是ID,刪除一條,靈活使用
criteria.and("id").in(list);
query.addCriteria(criteria);
//調(diào)用方法,DeleteResult中可以獲取到刪除的條數(shù)
DeleteResult remove = mongoTemplate.remove(query, CarouselInfo.class);
四,SpringBoot整合MongoDB完成修改操作
//創(chuàng)建查詢,主要是用來(lái)定位要修改的對(duì)象
Query query = new Query();
Criteria criteria = new Criteria();
criteria.and("systemId").is(params.getSystemId()).and("platformId").is(params.getPlatformId()).and("id").is(params.getId());
query.addCriteria(criteria);
//創(chuàng)建Update,修改設(shè)置,給查詢到的對(duì)象,對(duì)應(yīng)的字段設(shè)置新值,和sql異曲同工
Update update = new Update().set("title", params.getTitle()).set("type", params.getType()).set("photoUrl", params.getPhotoUrl()).set("updateTime",new Date());
//執(zhí)行修改操作,返回修改成功的條數(shù)
UpdateResult res = mongoTemplate.updateFirst(query, update, CarouselInfo.class);
五,SpringBoot整合MongoDB完成查詢操作
//這里是把查詢條件寫在了方法內(nèi),也可提取出來(lái),也可以使用find()方法,返回的就是一個(gè)List集合
CarouselInfo info = mongoTemplate.findOne(new Query(Criteria.where("systemId").is(systemId).and("platformId").is(platformId).and("id").is(id)), CarouselInfo.class);
六,SpringBoot整合MongoDB完成分頁(yè)查詢操作
//創(chuàng)建查詢,查出此條件下,總記錄數(shù)
Query query = new Query();
Criteria criteria = new Criteria();
criteria.and("systemId").is(params.getSystemId());
criteria.and("platformId").is(params.getPlatformId());
if (StringUtils.isNotBlank(params.getTitle())) {
criteria.and("title").is(params.getTitle());
}
if (StringUtils.isNotBlank(params.getType())) {
criteria.and("type").is(params.getType());
}
if (params.getState() != null) {
criteria.and("state").is(params.getState());
}
query.addCriteria(criteria);
int count = mongoTemplate.find(query, CarouselInfo.class).size();
// 分頁(yè)查詢
params.setCurPage(params.getCurPage() == null ? PageParameter.DEFAULT_CURR_PAGE : params.getCurPage());
params.setPageSize(params.getPageSize() == null ? PageParameter.DEFAULT_PAGE_SIZE : params.getPageSize());
//此處為第幾頁(yè),從第幾條開始查,公式和sql一樣,根據(jù)業(yè)務(wù)自行設(shè)置
query.skip((params.getCurPage() - 1) * params.getPageSize());
//每頁(yè)條數(shù)
query.limit(params.getPageSize());
//調(diào)用find(),查出符合條件的數(shù)據(jù)
List<CarouselInfo> carouselInfos = mongoTemplate.find(query, CarouselInfo.class);
七,SpringBoot整合MongoDB完成時(shí)間范圍查詢操作
因?yàn)閙ongodb存儲(chǔ)的時(shí)間和我們系統(tǒng)的時(shí)間不一樣,所以需要進(jìn)行時(shí)區(qū)的更改

//日期類型的,用gte和lte比較即可,且where條件只應(yīng)出現(xiàn)一次,所以根據(jù)業(yè)務(wù)書寫自己的邏輯即可
query.addCriteria(Criteria.where("createTime").gte(dateToISODate(new Date(beginTime + 8*60*60*1000))).lte(dateToISODate(new Date(endTime + 8*60*60*1000))));
/**
* 將時(shí)間戳轉(zhuǎn)化為mongodb中的ISODate時(shí)間類型數(shù)據(jù)
* @param dateStr Date類型時(shí)間戳
* @return parse ISODate時(shí)間
*/
public static Date dateToISODate(Date dateStr) {
Date parse = null;
try {
// 解析出字符串時(shí)間
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
parse = format.parse(format.format(dateStr));
} catch (Exception e) {
e.printStackTrace();
}
return parse;
}
SpringBoot整合mongodb完成基本的增刪改查操作,根據(jù)需要,自行調(diào)試,完活收工。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何解決Maven出現(xiàn)Could not find artifact的問題
這篇文章主要介紹了如何解決Maven出現(xiàn)Could not find artifact的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04
Spring源碼如何修改Bean的屬性用到的相關(guān)類
這篇文章主要介紹了Spring源碼如何修改Bean的屬性用到的相關(guān)類,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
Spring Security 在 Spring Boot 中的使用詳解【集中式】
這篇文章主要介紹了Spring Security 在 Spring Boot 中的使用【集中式】,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
springboot之SpringApplication生命周期和事件機(jī)制解讀
這篇文章主要介紹了springboot之SpringApplication生命周期和事件機(jī)制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
使用注解@Recover優(yōu)化丑陋的循環(huán)詳解
我們知道在實(shí)現(xiàn)一個(gè)功能的時(shí)候是可以使用不同的代碼來(lái)實(shí)現(xiàn)的,那么相應(yīng)的不同實(shí)現(xiàn)方法的性能肯定也是有差別的,下面這篇文章主要給大家介紹了關(guān)于使用注解@Recover優(yōu)化丑陋的循環(huán)的相關(guān)資料,需要的朋友可以參考下2022-04-04
Eclipse中安裝反編譯工具Fernflower的方法(Enhanced Class Decompiler)
這篇文章主要介紹了Eclipse中安裝反編譯工具Fernflower的方法(Enhanced Class Decompiler),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01

