springboot中mongdb的简单运用

本文介绍了如何在SpringBoot项目中集成并使用MongoDB,包括环境准备、依赖添加、配置文件设定,以及如何创建Java实体类和服务层逻辑,重点讲解了MongoTemplate的使用,如更新操作的API示例。
摘要由CSDN通过智能技术生成

spring作为java中使用程度最广泛的框架,因为开源且支持各种中间件被广大开发者所喜爱.

这里来简单的聊一下,springboot 中对MongoDB的简单运用。

一、环境准备

首先肯定是先新建一个springboot项目(IDEA专业版直接创建,eclipse可以安装sts插件创建)

然后导入依赖

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.14.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-mongodb</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

这里用的maven管理项目依赖,gradle的话可以通过这个网址找到相关依赖点击打开链接

然后配置对应的配置文件

data:
      mongodb:
         uri: mongodb://用户名:密码@mongodb的地址:端口/log1DbName

二、简单操作

1.根据集合创建对应的java实体类

以这个Collection集合为例

public class Collection implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @JSONField(serializeUsing = ToStringSerializer.class)
    private Long id;

    private String userId;

    @DBRef
    private InfoQuestion infoQuestion;

    private Date createTime;

    private int isDelete;

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public InfoQuestion getInfoQuestion() {
        return infoQuestion;
    }

    public void setInfoQuestion(InfoQuestion infoQuestion) {
        this.infoQuestion = infoQuestion;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public int getIsDelete() {
        return isDelete;
    }

    public void setIsDelete(int isDelete) {
        this.isDelete = isDelete;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
}

创建完实体类后就可以直接去写Service层的逻辑代码(可以跳过dao),在每个service类中注入MongoDB模板

@Autowired
    private MongoTemplate mongoTemplate;

spring将MongoDB的大部分操作都封装到MongoTemplate中,通过这个模板来执行对MongoDB的操作

ps:对关系型数据库或者其他非关系型数据库同样有模板(mysql,redis)

下图为部分api




Class一般是指对应实体类的class对象(比如Collection的class对象就为Collection.class)

下面以更新为例

MongoTemplate的更新操作一般是以下几种


对更新、查询操作分别封装了两个对象

import org.springframework.data.mongodb.core.query.Update;
import org.springframework.data.mongodb.core.query.Query;

Query query = new Query(Criteria.where("_id").is("");
//可以查看到Query的源码

	/**
	 * Creates a new {@link Query} using the given {@link CriteriaDefinition}.
	 *
	 * @param criteriaDefinition must not be {@literal null}.
	 * @since 1.6
	 */
	public Query(CriteriaDefinition criteriaDefinition) {
		addCriteria(criteriaDefinition);
	}

Criteria的源码

/**
	 * Static factory method to create a Criteria using the provided key
	 * 
	 * @param key
	 * @return
	 */
	public static Criteria where(String key) {
		return new Criteria(key);
	}
相当于sql中的where "_id"="参数2"


可以查看到Update类的源码

/**
	 * Update using the {@literal $set} update modifier
	 *
	 * @param key
	 * @param value
	 * @return
	 * @see <a href="https://docs.mongodb.com/manual/reference/operator/update/set/">MongoDB Update operator: $set</a>
	 */
	public Update set(String key, Object value) {
		addMultiFieldOperation("$set", key, value);
		return this;
	}

Update update = new Update().set("","");

第一个参数是要修改的键值,第二个参数为限制条件(相当于sql中的set  “参数1”(字段名)= “参数2”)

最后将对象入参,第三个参数为对应的实体类对象

mongoTemplate.updateFirst(query,update, xxxx.class);





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值