springboot整合mongodb的方法是什么
1.mongodb的安装和简介1.1简介
作为一个开源数据库系统,MongoDB使用C++语言来构建,采用分布式文件存储技术。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB的目标是提供一个能够可扩展高性能的数据存储解决方案,为Web应用程序服务。MongoDB使用基于键值对的文档来存储数据结构。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
1.2安装网上安装的教程也比较多,我在这里就不再多说了。
1.3配置环境变量和检查安装情况这里的配置类似于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 的基本方法及优势,并能在实际应用中进行灵活的配置,实现高效开发。