ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

在Java中使用MongoDb

2022-07-16 16:03:26  阅读:157  来源: 互联网

标签:collectionName Java String MongoDb public mongodb 使用 query id


如何在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");         
}

标签:collectionName,Java,String,MongoDb,public,mongodb,使用,query,id
来源: https://www.cnblogs.com/SXLM/p/16484392.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有