```
package cn.javaex.springboot.util;
import java.util.List;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
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.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
/**
* MongoDB 工具類
*/
@Component
public class MongoDBUtils {
public static MongoDBUtils mongoDBUtils;
@Autowired
private MongoTemplate mongoTemplate;
@PostConstruct
public void init() {
mongoDBUtils = this;
}
/**
* 保存數據對象,集合為數據對象中@Document 注解所配置的collection
*
* @param obj 數據對象
*/
public static void save(Object obj) {
mongoDBUtils.mongoTemplate.save(obj);
}
/**
* 指定集合保存數據對象
*
* @param obj 數據對象
* @param collectionName 集合名
*/
public static void save(Object obj, String collectionName) {
mongoDBUtils.mongoTemplate.save(obj, collectionName);
}
/**
* 根據數據對象中的id刪除數據,集合為數據對象中@Document 注解所配置的collection
*
* @param obj 數據對象
*/
public static void delete(Object obj) {
mongoDBUtils.mongoTemplate.remove(obj);
}
/**
* 指定集合 根據數據對象中的id刪除數據
*
* @param obj 數據對象
* @param collectionName 集合名
*/
public static void delete(Object obj, String collectionName) {
mongoDBUtils.mongoTemplate.remove(obj, collectionName);
}
/**
* 根據key,value到指定集合刪除數據
*
* @param key 鍵
* @param value 值
* @param collectionName 集合名
*/
public static void deleteByKey(String key, Object value, String collectionName) {
Query query = new Query();
query.addCriteria(new Criteria(key).is(value));
mongoDBUtils.mongoTemplate.remove(query, collectionName);
}
/**
* 指定集合 修改數據,且僅修改找到的第一條數據
*
* @param accordingKey 修改條件 key
* @param accordingValue 修改條件 value
* @param updateKeys 修改內容 key數組
* @param updateValues 修改內容 value數組
* @param collectionName 集合名
*/
public static void updateFirst(String accordingKey, Object accordingValue,
String[] updateKeys, Object[] updateValues, String collectionName) {
Criteria criteria = Criteria.where(accordingKey).is(accordingValue);
Query query = Query.query(criteria);
Update update = new Update();
for (int i=0; i<updateKeys.length; i++) {
update.set(updateKeys[i], updateValues[i]);
}
mongoDBUtils.mongoTemplate.updateFirst(query, update, collectionName);
}
/**
* 指定集合修改數據,且修改所找到的所有數據
*
* @param accordingKey 修改條件 key
* @param accordingValue 修改條件 value
* @param updateKeys 修改內容 key數組
* @param updateValues 修改內容 value數組
* @param collectionName 集合名
*/
public static void updateAll(String accordingKey, Object accordingValue,
String[] updateKeys, Object[] updateValues, String collectionName) {
Criteria criteria = Criteria.where(accordingKey).is(accordingValue);
Query query = Query.query(criteria);
Update update = new Update();
for (int i = 0; i < updateKeys.length; i++) {
update.set(updateKeys[i], updateValues[i]);
}
mongoDBUtils.mongoTemplate.updateMulti(query, update, collectionName);
}
/**
* 根據條件查詢出所有結果集 集合為數據對象中@Document 注解所配置的collection
*
* @param obj 數據對象
* @param findKeyArr 查詢條件 key
* @param findValueArr 查詢條件 value
* @return
*/
public static List<? extends Object> find(Object obj, String[] findKeyArr, Object[] findValueArr) {
Criteria criteria = null;
for (int i=0; i<findKeyArr.length; i++) {
if (i==0) {
criteria = Criteria.where(findKeyArr[i]).is(findValueArr[i]);
} else {
criteria.and(findKeyArr[i]).is(findValueArr[i]);
}
}
Query query = Query.query(criteria);
List<? extends Object> resultList = mongoDBUtils.mongoTemplate.find(query, obj.getClass());
return resultList;
}
/**
* 指定集合 根據條件查詢出所有結果集
*
* @param obj 數據對象
* @param findKeyArr 查詢條件 key
* @param findValueArr 查詢條件 value
* @param collectionName 集合名
* @return
*/
public static List<? extends Object> find(Object obj, String[] findKeyArr, Object[] findValueArr, String collectionName) {
Criteria criteria = null;
for (int i=0; i<findKeyArr.length; i++) {
if (i==0) {
criteria = Criteria.where(findKeyArr[i]).is(findValueArr[i]);
} else {
criteria.and(findKeyArr[i]).is(findValueArr[i]);
}
}
Query query = Query.query(criteria);
List<? extends Object> resultList = mongoDBUtils.mongoTemplate.find(query, obj.getClass(), collectionName);
return resultList;
}
/**
* 指定集合 根據條件查詢出所有結果集 并排倒序
*
* @param obj 數據對象
* @param findKeyArr 查詢條件 key
* @param findValueArr 查詢條件 value
* @param collectionName 集合名
* @param sort 排序字段
* @return
*/
public static List<? extends Object> find(Object obj, String[] findKeyArr, Object[] findValueArr, String collectionName ,String sort) {
Criteria criteria = null;
for (int i = 0; i < findKeyArr.length; i++) {
if (i == 0) {
criteria = Criteria.where(findKeyArr[i]).is(findValueArr[i]);
} else {
criteria.and(findKeyArr[i]).is(findValueArr[i]);
}
}
Query query = Query.query(criteria);
query.with(new Sort(Direction.DESC, sort));
List<? extends Object> resultList = mongoDBUtils.mongoTemplate.find(query, obj.getClass(), collectionName);
return resultList;
}
/**
* 根據條件查詢出符合的第一條數據 集合為數據對象中 @Document 注解所配置的collection
*
* @param obj 數據對象
* @param findKeyArr 查詢條件 key
* @param findValueArr 查詢條件 value
* @return
*/
public static Object findOne(Object obj, String[] findKeyArr, Object[] findValueArr) {
Criteria criteria = null;
for (int i=0; i<findKeyArr.length; i++) {
if (i==0) {
criteria = Criteria.where(findKeyArr[i]).is(findValueArr[i]);
} else {
criteria.and(findKeyArr[i]).is(findValueArr[i]);
}
}
Query query = Query.query(criteria);
Object resultObj = mongoDBUtils.mongoTemplate.findOne(query, obj.getClass());
return resultObj;
}
/**
* 指定集合 根據條件查詢出符合的第一條數據
*
* @param obj 數據對象
* @param findKeyArr 查詢條件 key
* @param findValueArr 查詢條件 value
* @param collectionName 集合名
* @return
*/
public static Object findOne(Object obj, String[] findKeyArr, Object[] findValueArr, String collectionName) {
Criteria criteria = null;
for (int i=0; i<findKeyArr.length; i++) {
if (i==0) {
criteria = Criteria.where(findKeyArr[i]).is(findValueArr[i]);
} else {
criteria.and(findKeyArr[i]).is(findValueArr[i]);
}
}
Query query = Query.query(criteria);
Object resultObj = mongoDBUtils.mongoTemplate.findOne(query, obj.getClass(), collectionName);
return resultObj;
}
/**
* 查詢出所有結果集 集合為數據對象中 @Document 注解所配置的collection
*
* @param obj 數據對象
* @return
*/
public static List<? extends Object> findAll(Object obj) {
List<? extends Object> resultList = mongoDBUtils.mongoTemplate.findAll(obj.getClass());
return resultList;
}
/**
* 指定集合 查詢出所有結果集
*
* @param obj 數據對象
* @param collectionName 集合名
* @return
*/
public static List<? extends Object> findAll(Object obj, String collectionName) {
List<? extends Object> resultList = mongoDBUtils.mongoTemplate.findAll(obj.getClass(), collectionName);
return resultList;
}
}
```
- JDK常用知識庫
- JDK各個版本安裝
- Java8流
- 算法
- 十大排序算法
- 冒泡排序
- 選擇排序
- 插入排序
- 歸并排序
- 快速排序
- 堆排序
- 希爾排序
- 計數排序
- 桶排序
- 基數排序
- 總結
- 常用工具類
- 浮點型計算
- 時間格式處理
- 常用功能點思路整理
- 登錄
- 高并發
- 線程安全的單例模式
- Tomcat優化
- Tomcat之APR模式
- Tomcat啟動過慢問題
- 常用的數據庫連接池
- Druid連接池
- 緩存
- Redis
- SpringBoot整合Redis
- 依賴和配置
- RedisTemplate工具類
- 工具類使用方法
- Redis知識庫
- Redis安裝
- Redis配置參數
- Redis常用Lua腳本
- MongoDB
- SpringBoot操作MongoDB
- 依賴和配置
- MongoDB工具類
- 工具類使用方法
- 消息中間件
- ActiveMq
- SpringBoot整合ActiveMq
- 框架
- SpringBoot
- 定時任務
- 啟動加載
- 事務
- JSP
- 靜態類注入
- SpringSecurity
- Shiro
- 配置及整合
- 登陸驗證
- 權限驗證
- 分布式應用
- SpringMVC
- ORM框架
- Mybatis
- 增
- 刪
- 改
- 查
- 程序員小笑話
- 我給你講一個TCP的笑話吧
- 二進制笑話
- JavaScript的那點東西
- JavaScript內置對象及常見API詳細介紹
- JavaScript實現Ajax 資源請求
- JavaScript干貨
- 架構師成長之路
- JDK源碼解析
- ArrayList源碼解讀
- 設計模式
- 微服務架構設計模式
- 逃離單體煉獄
- 服務的拆分策略
- 全面解析SpringMvc框架
- 架構設計的六大原則
- 并發集合
- JUC并發編程
- 搜索引擎
- Solr
- Solr的安裝
- 分布式服務框架
- Dubbo
- 從零開始學HTMl
- 第一章-初識HTML
- 第二章-認識HTML標簽