springboot整合mongodb的方法是什么

1.mongodb的安装和简介1.1简介

作为一个开源数据库系统,MongoDB使用C++语言来构建,采用分布式文件存储技术。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB的目标是提供一个能够可扩展高性能的数据存储解决方案,为Web应用程序服务。MongoDB使用基于键值对的文档来存储数据结构。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

1.2安装

网上安装的教程也比较多,我在这里就不再多说了。

1.3配置环境变量和检查安装情况

SpringBoot整合MongoDB:实现高效开发

这里的配置类似于jdk的配置,不再多说!查看安装和启动数据库

2.springboot集成mongodb

为了节省篇幅,好多注释和空行都去掉了,大家见谅!

2.1pom文件中maven的引入<
!-- mongodb -->

<
dependency>

<
groupId>
org.springframework.boot<
/groupId>

<
artifactId>
spring-boot-starter-data-mongodb<
/artifactId>

<
/dependency>
2.2properties文件配置#################mongodb################
#spring.data.mongodb.uri=mongodb://username:password@localhost:27017/test
spring.data.mongodb.uri=mongodb://localhost:27017/springboot 2.3dao层的编写package com.lengmo.dao;


import com.lengmo.entity.Student;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.mongodb.core.MongoTemplate;

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

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

import org.springframework.stereotype.Component;

import java.util.List;


@Component
public class MongoDbDao {
@Autowired
private MongoTemplate mongoTemplate;

public void save(Student s) {
mongoTemplate.save(s);

}
public Student get(Query query) {
return mongoTemplate.findOne(query,Student.class);

}
public List<
Student>
findAll() {
return mongoTemplate.findAll(Student.class);

}
public void update(Query query, Update update) {
mongoTemplate.updateMulti(query,update,Student.class);

}
public void delete(Query query) {
mongoTemplate.remove(query,Student.class);

}
} 2.4service层的编写

这里要熟悉mongodb的一些常规操作方法,多用多练习即可!!!!

package com.lengmo.service;


import com.lengmo.dao.MongoDbDao;

import com.lengmo.entity.Hobbies;

import com.lengmo.entity.Student;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.mongodb.core.query.Criteria;

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

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

import org.springframework.stereotype.Service;

import java.util.List;


@Service
public class MongoDbService {
@Autowired
private MongoDbDao mongoDbDao;

public void save() {
Student s=new Student();

s.setName("
lis"
);

s.setAge(17);

s.setSex(1);

s.setHeight(182);

Hobbies h=new Hobbies();

h.setHname("
swing"
);

s.setHobbies(h);

mongoDbDao.save(s);

}
public Student get() {
//and查询
/* Criteria criteriaName=Criteria.where("
name"
).is("
lisi"
);

Criteria criteriaAage=Criteria.where("
age"
).is(17);

Criteria andCriteria = new Criteria();

andCriteria.andOperator(criteriaName,criteriaAage);

Query query=new Query(andCriteria);
*/
//or查询
Criteria criteriaName=Criteria.where("
name"
).is("
lisi"
);

Criteria criteriaAage=Criteria.where("
age"
).gt(16);

Criteria orCriteria = new Criteria();

orCriteria.orOperator(criteriaName,criteriaAage);

Query query=new Query(orCriteria);


return mongoDbDao.get(query);

}
public List<
Student>
findAll() {
return mongoDbDao.findAll();

}
public void update() {
Query query=new Query(Criteria.where("
name"
).is("
zhangsan"
));

Update update=new Update();

update.set("
age"
,30);

update.set("
height"
,188);

update.set("
hobbies.hname"
,"
basketball"
);

mongoDbDao.update(query,update);

}
public void delete() {
Query query=new Query(Criteria.where("
name"
).is("
zhangsan"
));

mongoDbDao.delete(query);

}
} 2.5conreoller层的编写package com.lengmo.controller;


import com.lengmo.entity.Student;

import com.lengmo.service.MongoDbService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import java.util.List;


@RestController
@RequestMapping("
/mongodb"
)
public class MongoDbController {
@Autowired
private MongoDbService mongoDbService;

@RequestMapping("
/save"
)
public void save(){
mongoDbService.save();

}
@RequestMapping("
/get"
)
public Student get(){
return mongoDbService.get();

}
@RequestMapping("
/findAll"
)
public List<
Student>
findAll(){
return mongoDbService.findAll();

}

@RequestMapping("
/update"
)
public void update(){
mongoDbService.update();

}
@RequestMapping("
/delete"
)
public void delete(){
mongoDbService.delete();

}
} 2.6实体类层的编写(两个类放一起了,你们记得分开)package com.lengmo.entity;

import lombok.Data;

import javax.persistence.Id;


@Data
//之所以没有像 mysql那样需要@table标签去标注我们的表名与实体类的对应关系。是因为 mongodb默认类名即与表名对应。
public class Student{
@Id
private String id;

private String name;

private Integer age;

private Integer sex;

private Integer height;

private Hobbies hobbies;

}



package com.lengmo.entity;

import lombok.Data;


@Data
public class Hobbies {
private String hname;

}

一、Spring Boot 与 MongoDB 的简介
Spring Boot 是一个基于 Spring 开发的轻量级框架,具有自动化配置和快速开发的特点,广受开发者喜爱。而 MongoDB 则是一种基于文档的数据库,与传统的关系型数据库不同,它的数据结构基于 BSON(Binary JSON)格式,能更好地处理大量非结构化数据。因此,Spring Boot 整合 MongoDB,不仅能较好地利用二者各自的优势,还能提高开发效率。
二、Spring Boot 整合 MongoDB 的方法
1. 添加 MongoDB 的依赖
在 pom.xml 文件中,添加 spring-boot-starter-data-mongodb 依赖即可。
2. 配置 MongoDB 的连接信息
在 application.properties 文件中,添加 MongoDB 连接信息,如下所示:
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=mydb
3. 创建实体类
根据所需的数据类型,在 Java 中创建对应的实体类。需要注意的是,由于 MongoDB 是文档型数据库,因此实体类中的字段需要使用注解 @Document 和 @Id 来标识。
@Document(collection = \"user\")
public class User {
@Id
private String id;
private String name;
private int age;
// getter 和 setter
}
4. 创建 Dao 层
利用 Spring Data 框架,只需创建一个接口继承 MongoRepository 接口即可。若需要自定义查询方法,只需要按照一定规范来定义方法名即可。
public interface UserRepository extends MongoRepository {
User findByName(String name);
}
5. 编写业务逻辑层和控制层
在业务逻辑层和控制层中,利用该实体类和 Dao 层所提供的方法进行开发。
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
@Override
public User findUserByName(String name) {
return userRepository.findByName(name);
}
}
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping(\"/user/{name}\")
public User findUserByName(@PathVariable(\"name\") String name) {
return userService.findUserByName(name);
}
}
三、Spring Boot 整合 MongoDB 的优势
1. 高效处理非结构化数据
MongoDB 不仅能处理结构化数据,还能较好地处理非结构化数据。在实际开发中,很多数据都属于非结构化的数据类型,因此利用 MongoDB,能更高效地存储和查询这些数据。
2. 便捷地实现数据交互
Spring Boot 整合 MongoDB,不仅能方便地进行数据存储和读取,还能方便地实现数据交互。开发者们可以通过开发 Restful API 来实现数据交互,并能通过各种客户端(浏览器、App 等)来获取数据,实现真正的数据交互。
3. 提升开发效率
通过 Spring Boot 整合 MongoDB,可以容易地实现业务逻辑的拆分和聚合,达到高效开发的目的。而利用 Spring Data 框架所提供的各种简洁明了的 API,也能使开发者更加专注于业务代码的开发,从而提升开发效率。
总结
Spring Boot 及 MongoDB 都是非常优秀的开源项目,它们的精髓在于简洁、高效、易用。通过本文的介绍,读者能掌握 Spring Boot 整合 MongoDB 的基本方法及优势,并能在实际应用中进行灵活的配置,实现高效开发。