您的位置:首页 > 数据库 > Mongodb

SpringBoot结合MongoDB简单应用

2017-07-20 19:18 465 查看

1.docker安装MongoDB

本案例在windows环境下安装。

命令:

docker pull mongodb


2.运行docker容器

docker run -d -p 27017:27017 mongo


打开virtualBox进行端口映射。如图所示:



3. 下载安装mongoDB数据库管理软件

Robomongo



4.搭建springBoot项目

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.wangh</groupId>
<artifactId>springboot_mongodb</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>springboot_mongodb</name>
<description>Demo project for Spring Boot</description>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</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>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>


5.新建实体类(领域模型)

package com.wangh.springboot_mongodb.model;

import java.util.Collection;
import java.util.LinkedList;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

@Document //映射领域模型和mongodb文档
public class Person {

@Id //此属性为文档Id
private String id;
private String name;
private Integer age;
@Field("locs") //此属性在文档中的名称为locs,locations属性将以数组形式存在当前数据记录中
private Collection<Location> locations = new LinkedList<Location>();

public Person(String name, Integer age) {
super();
this.name = name;
this.age = age;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}

public Collection<Location> getLocations() {
return locations;
}

public void setLocations(Collection<Location> locations) {
this.locations = locations;
}
}

package com.wangh.springboot_mongodb.model;
/**
* 工作过的地方
* @author Wanghao
*
*/
public class Location {

private String place;
private String year;

public Location(String place, String year) {
super();
this.place = place;
this.year = year;
}

public String getPlace() {
return place;
}

public void setPlace(String place) {
this.place = place;
}

public String getYear() {
return year;
}

public void setYear(String year) {
this.year = year;
}
}


6. 数据访问接口

package com.wangh.springboot_mongodb.repository;

import java.util.List;

import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;

import com.wangh.springboot_mongodb.model.Person;

public interface PersonRepository extends MongoRepository<Person, String> {
//1.支持方法名查询
Person findByName(String name);
//2.支持@Query查询,查询参数构造JSON字符串即可
@Query("{'age' : ?0}")
List<Person> withQueryFindByAge(Integer age);

}


7.控制器

package com.wangh.springboot_mongodb.controller;

import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;

import javax.annotation.Resource;

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

import com.wangh.springboot_mongodb.model.Location;
import com.wangh.springboot_mongodb.model.Person;
import com.wangh.springboot_mongodb.repository.PersonRepository;

@RestController
public class PersonController {

@Resource
private PersonRepository personRepository;

@RequestMapping("/save")
public List<Person> save(){
Person p1 = new Person("wanghao", 27);
Collection<Location> locations1 = new LinkedList<Location>();
Location l1 = new Location("北京", "2017");
Location l2 = new Location("上海", "2015");
Location l3 = new Location("广州", "2010");
Location l4 = new Location("西安", "2008");
locations1.add(l1);
locations1.add(l2);
locations1.add(l3);
locations1.add(l4);
p1.setLocations(locations1);
Person p2 = new Person("wangzhen", 27);
Collection<Location> locations2 = new LinkedList<Location>();
locations2.add(l1);
locations2.add(l2);
locations2.add(l3);
locations2.add(l4);
p2.setLocations(locations2);
List<Person> ps = new ArrayList<Person>();
ps.add(p1);
ps.add(p2);

return personRepository.save(ps);
}

@RequestMapping("/all")
public List<Person> list(){
return personRepository.findAll();
}

@RequestMapping("/q1")
public Person q1(String name){
return personRepository.findByName(name);
}

@RequestMapping("/q2")
public List<Person> q2(Integer age){
return personRepository.withQueryFindByAge(age);
}
}


8.测试

访问 http://localhost:8080/all



访问 http://localhost:8080/q1?name=wangtuo



访问 http://localhost:8080/q2?age=21

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb springboot