java——spring boot集成MongoDB——示例
数据库:biancheng
新增集合以及文档:
> db.createCollection("user")
{ "ok" : 1 }
> db.user.insert({name:'ceshi',age:22,sex:'nv'})
WriteResult({ "nInserted" : 1 })
>

=========================================================
pom文件中,主要新增如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
下面的pom文件,基于之前的几个项目:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
<?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> <groupId>org.example</groupId> <artifactId>anxinfu</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>anxinfu Maven Webapp</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.5</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 去掉默认的日志配置 --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!-- 依赖Spring Boot Data Redis --> <!-- 依赖Spring Boot Data Redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <exclusions> <exclusion> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> </exclusion> </exclusions> </dependency> <!--对象池化组件,配合Java客户端JedisPool使用--> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency> <!--jedis的jar包--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.3.0</version> </dependency> <!-- 引入log4j2依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> </dependencies> <build> <finalName>anxinfu</finalName> <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> <plugins> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.1.0</version> </plugin> <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.2</version> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> </plugin> </plugins> </pluginManagement> </build></project> |

application.properties文件中新增如下信息:
# mongodb\u914D\u7F6E
spring.data.mongodb.uri=mongodb://localhost/biancheng
spring.data.mongodb.database=biancheng
注意:本机安装的数据库。biancheng是数据库名

domain包中新增:
UserDTO
package com.test.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
import java.io.Serializable;
import java.util.Date;
@Document()
public class UserDTO implements Serializable {
//标识集合中的“_id”字段
@Id
private ObjectId _id;
//指定自定义文档的字段名
@Field("name")
private String name;
@Field("age")
private int age;
@Field("sex")
private String sex;
public ObjectId getId() {
return _id;
}
public void setId(ObjectId id) {
this._id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}

服务层,新增:
UserService2
package com.test.service;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import com.test.domain.UserDTO;
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.Service;
import java.util.List;
@Service
public class UserService2 {
@Autowired
private MongoTemplate mongoTemplate;
/**
* 新增
* @param userDTO
* @return
*/
public UserDTO insert(UserDTO userDTO){
//insert方法并不提供级联类的保存,所以级联类需要先自己先保存
return mongoTemplate.insert(userDTO,"user");
}
/**
* 修改
* @param userDTO
* @return
*/
public UpdateResult updateResult(UserDTO userDTO){
//构造更新条件,根据主键id更新
Query query = new Query();
query.addCriteria(Criteria.where("id").is(userDTO.getId()));
//设置更新内容
Update update = new Update();
update.set("name",userDTO.getName());
update.set("age",userDTO.getAge());
update.set("sex",userDTO.getSex());
//指定查询collectionName集合中的记录,相当于表名区分大小写,然后根据id更新数据
return mongoTemplate.updateFirst(query,update,UserDTO.class,"user");
}
/**
* 删除
* @param id
* @return
*/
public DeleteResult deleteResult(Integer id){
Query query = new Query();
query.addCriteria(Criteria.where("id").is(id));
//指定查询collectionName集合中的记录,相当于表名区分大小写,然后根据id删除数据
return mongoTemplate.remove(query,UserDTO.class,"user");
}
/**
* 查询所有
* @return
*/
public List<UserDTO> findAll() {
//指定查询collectionName集合中的记录,相当于表名区分大小写
//如果没有collectionName会先到缓存中根据classname获取集合名,如果还没有则新建一个集合名(类名首字母小写)
return mongoTemplate.findAll(UserDTO.class,"user");
}
/**
* 获取单条
* @param id
* @return
*/
public UserDTO getOneById(Integer id) {
return mongoTemplate.findById(id,UserDTO.class,"user");
}
}

访问控制层:
UserController
package com.test.controller;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import com.test.domain.UserDTO;
import com.test.service.UserService;
import com.test.service.UserService2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
public class UserController {
@Autowired
private UserService2 userService;
@GetMapping("/findAll")
public List<UserDTO> findAll(){
return userService.findAll();
}
@GetMapping("/get/{id}")
public UserDTO getOne(@PathVariable Integer id){
return userService.getOneById(id);
}
@PostMapping("/save")
public UserDTO save(@RequestBody UserDTO userDTO){
return userService.insert(userDTO);
}
@PostMapping("/update")
public UpdateResult update(@RequestBody UserDTO userDTO){
return userService.updateResult(userDTO);
}
@DeleteMapping("/delete/{id}")
public DeleteResult update(@PathVariable Integer id){
return userService.deleteResult(id);
}
}

http://localhost:8080/findAll



浙公网安备 33010602011771号