🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
``` 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; } } ```