一、项目结构
![](https://oscimg.oschina.net/oscnet/4dfc431f73ca59c9911a485c17b9dce3af0.jpg)
二、pom.xml
- mongodb-parent------->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>
<groupId>com.ittzg.mongodb</groupId>
<artifactId>mongodb-parent</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
</parent>
<modules>
<module>mongodb-client</module>
<module>springboot-mongodb</module>
</modules>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
- springboot-mongodb---->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">
<parent>
<artifactId>mongodb-parent</artifactId>
<groupId>com.ittzg.mongodb</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>springboot-mongodb</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
</dependencies>
</project>
代码展示
- UserEntity.java
package com.ittzg.mongodb.entity;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.util.List;
/**
* @email: tazhigang095@163.com
* @author: ittzg
* @date: 2019/7/22 15:12
*/
@Document(collection="user")
public class UserEntity {
@Id
private ObjectId id;
private String username;
private String sex;
private AddressEntity address;
private List<LikeEntity> likes;
@Document
public static class AddressEntity{
private String province;
private String citiy;
private String county;
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCitiy() {
return citiy;
}
public void setCitiy(String citiy) {
this.citiy = citiy;
}
public String getCounty() {
return county;
}
public void setCounty(String county) {
this.county = county;
}
}
@Document
public static class LikeEntity{
private String like;
public String getLike() {
return like;
}
public void setLike(String like) {
this.like = like;
}
}
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public AddressEntity getAddress() {
return address;
}
public void setAddress(AddressEntity address) {
this.address = address;
}
public List<LikeEntity> getLikes() {
return likes;
}
public void setLikes(List<LikeEntity> likes) {
this.likes = likes;
}
}
- UserDao.java
package com.ittzg.mongodb.dao;
import com.ittzg.mongodb.entity.UserEntity;
import org.bson.types.ObjectId;
import java.util.List;
/**
* @email: tazhigang095@163.com
* @author: ittzg
* @date: 2019/7/22 14:32
*/
public interface UserDao {
// 添加或者更新数据
boolean saveOrUpdate(UserEntity userEntity);
// 查找返回实体
List<UserEntity> findByUserName(String username);
// 删除
boolean deleteByUserName(String username);
}
- UserDaoImpl.java
package com.ittzg.mongodb.dao.impl;
import com.ittzg.mongodb.dao.UserDao;
import com.ittzg.mongodb.entity.UserEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;
import java.util.List;
import static org.springframework.data.mongodb.core.query.Criteria.where;
/**
* @email: tazhigang095@163.com
* @author: ittzg
* @date: 2019/7/22 14:32
*/
@Component
public class UserDaoImpl implements UserDao{
@Autowired
private MongoOperations mongoOperations;
@Override
public boolean saveOrUpdate(UserEntity userEntity) {
try {
mongoOperations.save(userEntity);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@Override
public List<UserEntity> findByUserName(String username) {
try {
Query query = new Query(where("username").is(username));
List<UserEntity> userEntities = mongoOperations.find(query, UserEntity.class);
return userEntities;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
public boolean deleteByUserName(String username) {
try {
Query query = new Query(where("username").is(username));
mongoOperations.findAllAndRemove(query, UserEntity.class);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
- UserController.java
package com.ittzg.mongodb.controller;
import com.ittzg.mongodb.dao.UserDao;
import com.ittzg.mongodb.entity.UserEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @email: tazhigang095@163.com
* @author: ittzg
* @date: 2019/7/22 15:38
*/
@RestController
@RequestMapping(value = "user")
public class UserController {
@Autowired
private UserDao userDao;
@RequestMapping(value = "addOrModify",method = RequestMethod.POST)
public String addUser(@RequestBody UserEntity userEntity){
if(userDao.saveOrUpdate(userEntity)){
return "success";
}
return "failure";
}
@RequestMapping(value = "deleteByUserName",method = RequestMethod.DELETE)
public String deleteByUserName(String username){
if(userDao.deleteByUserName(username)){
return "success";
}
return "failure";
}
@RequestMapping(value = "findByUserName",method = RequestMethod.GET)
public List<UserEntity> findByUserName(String username){
return userDao.findByUserName(username);
}
}
- UserSwaggerConfig.java
package com.ittzg.mongodb.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* @email: tazhigang095@163.com
* @author: ittzg
* @date: 2019/7/22 13:43
* Swagger配置
*/
@Configuration
@EnableSwagger2
public class UserSwaggerConfig extends WebMvcConfigurerAdapter{
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.ittzg.mongodb"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("mongoDB测试案例")
.description("restApi of mongodb operation")
.contact("ittzg")
.version("1.0")
.build();
}
}
- MongoDBApplication.java
package com.ittzg.mongodb;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @email: tazhigang095@163.com
* @author: ittzg
* @date: 2019/7/22 13:43
* 由于只做演示故省略业务层
*/
@SpringBootApplication
public class MongoDBApplication {
public static void main(String[] args) {
SpringApplication.run(MongoDBApplication.class,args);
}
}
四、测试swagger页面
![](https://oscimg.oschina.net/oscnet/358a470ef93d5c5646cb85683d07bbd1a57.jpg)