在Java中使用MongoDb

2022/7/17 2:15:06

本文主要是介绍在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");         
}


这篇关于在Java中使用MongoDb的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程