首先我查看下mongodb默认的数据库列表,打开mongodb的安装目录执行mongo.exe
然后执行命令show dbs出现如下图所示
本次学习我们使用test数据库,test数据库有数据时才会显示test
下面我们直接展示项目中的代码以及相关配置
项目目录
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.neoway</groupId>
<artifactId>mongodb</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mongodb</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons-core</artifactId>
<version>1.4.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.45</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.yml配置文件
spring:
data:
mongodb:
uri: mongodb://localhost:27017/test
User实体类
package com.neoway.mongodb.bean;
import lombok.Data;
@Data
public class User {
private String id;
private String name;
private int age;
}
由于引入了lomokjar包所以使用@Data注解可以省去set、get方法
MongodbController
为了测试方便所有的请求我统一采用的是get请求
package com.neoway.mongodb.controller;
import com.neoway.mongodb.bean.User;
import com.neoway.mongodb.dao.MongodbDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping
public class MongodbController {
@Autowired
private MongodbDao mongodbDao;
/**
* 新增数据
*/
@GetMapping("/save")
public void save(){
User user=new User();
user.setAge(13);
user.setId("2");
user.setName("李四");
mongodbDao.insert(user);
}
/**
* 查询所有的数据
*/
@GetMapping("/findAll")
public void findAll(){
mongodbDao.getAll();
}
/**
* 根据id查询实体
*/
@GetMapping("/findOne")
public void findOne(){
User user=new User();
user.setId("1");
mongodbDao.findOne(user);
}
/**
* 修改
*/
@GetMapping("/update")
public void update(){
User user=new User();
user.setAge(13);
user.setId("1");
user.setName("张三1");
mongodbDao.update(user);
}
/**
* 删除
*/
@GetMapping("/delete")
public void delete(){
User user=new User();
user.setId("1");
mongodbDao.delete(user);
}
}
MongodbDao操作mongodb数据库,我采用的是注入MongoTemplate来操作,刚开始学习时,MongoTemplate注入不进去,最后检查发现是pom.xml文件的依赖没有完全拉下来,
package com.neoway.mongodb.dao;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.neoway.mongodb.bean.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class MongodbDao {
Logger log= LoggerFactory.getLogger(MongodbDao.class);
@Autowired
private MongoTemplate mongoTemplate;
/**
* 添加新的用户
* @param user
*/
public void insert(User user){
mongoTemplate.save(user);
}
/**
* 查询所有的用户
* @return
*/
public List<User> getAll(){
List<User> list=mongoTemplate.findAll(User.class);
log.info(JSONArray.toJSONString(list));
return list;
}
/**
* 通过id查询实体
* @param user
* @return
*/
public User findOne(User user){
Query query=new Query(Criteria.where("id").is(user.getId()));
User result=mongoTemplate.findOne(query,User.class);
log.info(JSON.toJSONString(result));
return result;
}
/**
* 修改用户
* @param user
*/
public void update(User user){
Query query=new Query(Criteria.where("age").is(user.getAge()));
Update update=new Update().set("name",user.getName());
//更新查询返回结果集的第一条数据
//mongoTemplate.updateFirst(query,update,User.class);
//更新查询返回结果集的所有数据
mongoTemplate.updateMulti(query,update,User.class);
}
/**
* 删除用户
* @param user
*/
public void delete(User user){
Query query=new Query(Criteria.where("id").is(user.getId()));
mongoTemplate.remove(query,User.class);
}
}
通过mongodb的命令find()来查看文档数据
初次学习,有什么不对的地方欢迎大家指出拍砖