• SpringBoot MongoDB操作封装


    1.引入Jar包

    1. <dependency>
    2. <groupId>org.springframework.bootgroupId>
    3. <artifactId>spring-boot-starter-data-mongodbartifactId>
    4. dependency>

    2.MongoDbHelper操作

    1. /**
    2. * MongoDB Operation class
    3. * @author Mr.Li
    4. * @date 2022-12-05
    5. */
    6. public class MongoDbHelper {
    7. @Autowired
    8. private MongoTemplate mongoTemplate;
    9. /**
    10. * Save Individual Objects
    11. *
    12. * @param t
    13. * @param
    14. * @return
    15. */
    16. public T save(T t) {
    17. return mongoTemplate.insert(t);
    18. }
    19. /**
    20. * Store the object to the specified collectionName
    21. * @param objectToSave
    22. * @param collectionName
    23. * @param
    24. * @return
    25. */
    26. public T save(T objectToSave, String collectionName){
    27. return mongoTemplate.insert(objectToSave,collectionName);
    28. }
    29. /**
    30. * Batch save track data
    31. *
    32. * @param list
    33. * @param collectionName
    34. * @return
    35. */
    36. public Collection batchSave(Collection list, String collectionName) {
    37. return mongoTemplate.insert(list,collectionName);
    38. }
    39. /**
    40. * Query Data
    41. *
    42. * @param query
    43. * @param tClass
    44. * @param
    45. * @return
    46. */
    47. public List find(Query query, Class tClass) {
    48. return mongoTemplate.find(query, tClass);
    49. }
    50. /**
    51. * Collection specified by query data
    52. *
    53. * @param query
    54. * @param tClass
    55. * @param
    56. * @return
    57. */
    58. public List find(Query query, Class tClass, String collectionName) {
    59. return mongoTemplate.find(query, tClass,collectionName);
    60. }
    61. /**
    62. * Pagination query
    63. * @param query query criteria
    64. * @param pageNum Current Page
    65. * @param pageSize Number of entries per page
    66. * @param sortField Sorted Field
    67. * @param sortType 1:asc;0:desc
    68. * @param tClass to class
    69. * @param collectionName collection name
    70. * @param
    71. * @return
    72. */
    73. public MongoPage findByPage(Query query,int pageNum,int pageSize,String sortField,int sortType, Class tClass, String collectionName) {
    74. int count = (int) mongoTemplate.count(query, tClass, collectionName);
    75. if(sortType==1){
    76. query.with(Sort.by(Sort.Order.asc(sortField)));
    77. }else {
    78. query.with(Sort.by(Sort.Order.desc(sortField)));
    79. }
    80. //Set starting number
    81. query.skip((pageNum - 1) * pageSize);
    82. //Set the number of queries
    83. query.limit(pageSize);
    84. //Query the current page data set
    85. List taskList = mongoTemplate.find(query, tClass,collectionName);
    86. int size=count % pageSize == 0 ? count / pageSize : count / pageSize + 1;
    87. MongoPage page=new MongoPage();
    88. page.setTotal(count);
    89. page.setSize(size);
    90. page.setData(taskList);
    91. return page;
    92. }
    93. /**
    94. * 查询前几条数据
    95. * @param query
    96. * @param limitNum 前几条
    97. * @param sortField 排序字段
    98. * @param sortType 0:倒序;1:正序
    99. * @param tClass
    100. * @param collectionName
    101. * @param
    102. * @return
    103. */
    104. public List findTop(Query query,Integer limitNum,String sortField,int sortType, Class tClass, String collectionName){
    105. if(sortType==1){
    106. query.with(Sort.by(Sort.Order.asc(sortField)));
    107. }else {
    108. query.with(Sort.by(Sort.Order.desc(sortField)));
    109. }
    110. query.limit(limitNum);
    111. return mongoTemplate.find(query, tClass,collectionName);
    112. }
    113. /**
    114. * 查询一条数据
    115. * @param query
    116. * @param sortField
    117. * @param sortType
    118. * @param tClass
    119. * @param collectionName
    120. * @param
    121. * @return
    122. */
    123. public List findOne(Query query,String sortField,int sortType, Class tClass, String collectionName){
    124. if(sortType==1){
    125. query.with(Sort.by(Sort.Order.asc(sortField)));
    126. }else {
    127. query.with(Sort.by(Sort.Order.desc(sortField)));
    128. }
    129. //Set the number of queries
    130. query.limit(1);
    131. //Query the current page data set
    132. List taskList = mongoTemplate.find(query, tClass,collectionName);
    133. return taskList;
    134. }
    135. /**
    136. * Query All
    137. *
    138. * @param tClass
    139. * @param
    140. * @return
    141. */
    142. public List findAll(Class tClass) {
    143. return mongoTemplate.findAll(tClass);
    144. }
    145. /**
    146. * Query all specified collections
    147. *
    148. * @param tClass
    149. * @param collectionName
    150. * @param
    151. * @return
    152. */
    153. public List findAll(Class tClass,String collectionName) {
    154. return mongoTemplate.findAll(tClass,collectionName);
    155. }
    156. /**
    157. * create collection
    158. * @param collName
    159. * @param indexList
    160. * @return
    161. */
    162. public boolean createCollection(String collName, List> indexList){
    163. try {
    164. if (mongoTemplate.collectionExists(collName)) {
    165. return true;
    166. }
    167. //Index collection to be created
    168. List indexModels = new ArrayList<>();
    169. for (Map indexMap : indexList) {
    170. BasicDBObject index = new BasicDBObject();
    171. for (String key : indexMap.keySet()) {
    172. index.put(key, indexMap.get(key));
    173. }
    174. indexModels.add(new IndexModel(index));
    175. }
    176. mongoTemplate.createCollection(collName).createIndexes(indexModels);
    177. return true;
    178. }catch (Exception e){
    179. return false;
    180. }
    181. }
    182. /**
    183. * Update the first result set returned by the query
    184. * @param query
    185. * @param update
    186. * @param collectionName
    187. * @return
    188. */
    189. public boolean updateFirst(Query query, Update update, String collectionName){
    190. try {
    191. mongoTemplate.updateFirst(query, update, collectionName);
    192. return true;
    193. }catch (Exception e){
    194. return false;
    195. }
    196. }
    197. /**
    198. * Update all returned result sets
    199. * @param query
    200. * @param update
    201. * @param collectionName
    202. * @return
    203. */
    204. public boolean updateMulti(Query query, Update update, String collectionName){
    205. try {
    206. mongoTemplate.updateMulti(query, update, collectionName);
    207. return true;
    208. }catch (Exception e){
    209. return false;
    210. }
    211. }
    212. /**
    213. * If the update object does not exist, add it
    214. * @param query
    215. * @param update
    216. * @param tClass
    217. * @param
    218. * @param collectionName
    219. * @return
    220. */
    221. public boolean upsert(Query query, Update update, Class tClass,String collectionName){
    222. try {
    223. mongoTemplate.upsert(query, update, tClass,collectionName);
    224. return true;
    225. }catch (Exception e){
    226. return false;
    227. }
    228. }
    229. /**
    230. * 存在则更新不存在则创建
    231. * @param query
    232. * @param update
    233. * @param collectionName
    234. * @return
    235. */
    236. public boolean upsert(Query query, Update update, String collectionName){
    237. try {
    238. mongoTemplate.upsert(query, update,collectionName);
    239. return true;
    240. }catch (Exception e){
    241. return false;
    242. }
    243. }
    244. /**
    245. * 汇总查询
    246. * @param aggregation
    247. * @param tClass
    248. * @param collectionName
    249. * @param
    250. * @return
    251. */
    252. public List groupQuery(Aggregation aggregation,Class tClass,String collectionName){
    253. AggregationResults maps = mongoTemplate.aggregate(aggregation, collectionName, tClass);
    254. return maps.getMappedResults();
    255. }
    256. /**
    257. * 查总条数
    258. * @param query
    259. * @param collectionName
    260. * @return
    261. */
    262. public long queryCount(Query query, String collectionName){
    263. return mongoTemplate.count(query, collectionName);
    264. }
    265. }

    3.分页实体类MongoPage

    1. /**
    2. * MongoDB paged query returns result set
    3. * @author Mr.Li
    4. * @date 2023-01-11
    5. */
    6. @Data
    7. public class MongoPage {
    8. /**
    9. * Total number of data
    10. */
    11. private Integer total;
    12. /**
    13. * Page count
    14. */
    15. private Integer size;
    16. /**
    17. * Data result set per page
    18. */
    19. private Object data;
    20. }

  • 相关阅读:
    Redis 典型应用——缓存(缓存预热,穿透,雪崩,击穿)
    【学习笔记】指向常量的指针和常量指针
    upload-labs关卡9(基于win特性data流绕过)通关思路
    uniapp中简单的前端文字校验
    深度学习(1)---卷积神经网络(CNN)
    Linux中查找某路径下,包含某个字符串的所有文件
    318. 最大单词长度乘积
    蓝牙安全入门——两道CTF题目复现
    了解SC与TC油封的差异
    Dapp智能合约开发搭建
  • 原文地址:https://blog.csdn.net/qq_17486399/article/details/132981464