在Java中使用MongoDb

如何在Java中使用MongoDb

首先需要导入依赖

<dependency> <groupId>org.mongodb</groupId> <artifactId>bson</artifactId> <version>3.11.2</version> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver</artifactId> <version>3.11.2</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>2.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-core</artifactId> <version>3.11.2</version> </dependency>

第二步在配置类里,配好mongonDB的连接路径

spring: data: mongodb: uri: mongodb://student:123456@127.0.0.1:27017/student # URI形如:mongodb://[username:password@]host1[:port1][,...hostN[:portN]]][/[database][?options]]

第四步写工具类MongoDbUtil(举个栗子)

package com.xiao.lanmao.utils; import lombok.Data; import org.springframework.beans.factory.annotation.Autowired; 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.stereotype.Component; import org.springframework.util.ObjectUtils; import java.util.List; @Component @Data public class MongoDbUtil<T> { @Autowired private MongoTemplate mongoTemplate; private static String TENANT_ID = "hh"; /*** * 保存一个集合(对象)(如果数据库中的id和要保存的id一样,那么会被覆盖) */ public T save(T t, String collectionName) { collectionName = TENANT_ID + "-" + collectionName; createCollection(collectionName); return this.mongoTemplate.save(t, collectionName); } /*** * 根据id从几何中查询对象 */ public T queryById(Integer id, Class<T> clazz, String collectionName) { collectionName = TENANT_ID + "-" + collectionName; createCollection(collectionName); Query query = new Query(Criteria.where("_id").is(id)); return this.mongoTemplate.findOne(query, clazz, collectionName); } /** * 根据id删除 */ public int deleteById(Long id, Class<T> clazz, String collectionName) { collectionName = TENANT_ID + "-" + collectionName; createCollection(collectionName); Criteria criteria = Criteria.where("_id").is(id); if (null != criteria) { Query query = new Query(criteria); T obj = this.mongoTemplate.findOne(query, clazz, collectionName); if (obj != null) { return (int) this.mongoTemplate.remove(obj, collectionName).getDeletedCount(); } } return 0; } /** * 功能描述: 往对应的集合中插入一条数据 */ public void insert(T info, String collectionName) { collectionName = TENANT_ID + "-" + collectionName; createCollection(collectionName); mongoTemplate.insert(info, collectionName); } /** * 功能描述: 往对应的集合中批量插入数据,注意批量的数据中不要包含重复的id */ public void insertMulti(List<T> infos, String collectionName) { collectionName = TENANT_ID + "-" + collectionName; createCollection(collectionName); mongoTemplate.insert(infos, collectionName); } /** * 功能描述: 根据id删除集合中的内容 */ public void deleteById(String id, Class<T> clazz, String collectionName) { collectionName = TENANT_ID + "-" + collectionName; createCollection(collectionName); // 设置查询条件,当id=#{id} Query query = new Query(Criteria.where("id").is(id)); mongoTemplate.remove(query, clazz, collectionName); } /** * 功能描述: 查询列表信息 */ public List<T> selectList(String collectName, Class<T> clazz) { collectName = TENANT_ID + "-" + collectName; createCollection(collectName); return selectList(collectName, clazz, null, null); } /** * 功能描述: 创建一个集合 * 同一个集合中可以存入多个不同类型的对象,我们为了方便维护和提升性能, * 后续将限制一个集合中存入的对象类型,即一个集合只能存放一个类型的数据 * @param name 集合名称,相当于传统数据库的表名 */ public void createCollection(String name) { if (!mongoTemplate.collectionExists(name)) { mongoTemplate.createCollection(name); } } /** * 功能描述: 分页查询列表信息 */ public List<T> selectList(String collectName, Class<T> clazz, Integer currentPage, Integer pageSize) { collectName = TENANT_ID + "-" + collectName; createCollection(collectName); //设置分页参数 Query query = new Query(); //设置分页信息 if (!ObjectUtils.isEmpty(currentPage) && ObjectUtils.isEmpty(pageSize)) { query.limit(pageSize); query.skip(pageSize * (currentPage - 1)); } return mongoTemplate.find(query, clazz, collectName); } }

第五步、使用的时候需要写一个实体类(有时候不需要,看情况)

package com.xiao.lanmao.MongoDbDate; import lombok.Data; import org.springframework.data.annotation.Id; @Data public class PowerDate { /** * 学号 * */ @Id private Integer studentNumber; /** * 用户名 * */ private String user; /** * 年龄 * */ private Integer age; }

最后在service中的使用示例

@Autowired MongoDbUtil mongoDbUtil; public viod postTestData() { PowerDate powerDate = new PowerDate(); powerDate.setStudentNumber(135); powerDate.setUser("名字"); powerDate.setAge(20); mongoDbUtil.save(powerDate, "MongoDBTableName"); }

__EOF__

本文作者小懒猫
本文链接https://www.cnblogs.com/SXLM/p/16484392.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   天使中的恶魔  阅读(1784)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示