至于MongoDB网上有很多相关的资料,所以在这里不进行过多的介绍,我们在这里主要是介绍下如何将mongodb与spring boot结合使用。本节大纲:

(1) 准备工作;

(2) 新建一个maven java project;

(3) 引入相关依赖;

(4) 编写测试代码;

(5) 配置文件;

(6) 使用MongoTemplate进行操作;

接下来一起看看每个步骤都是怎么操作的吧。

(1) 准备工作;

既然需要使用mongodb,那么很明显就需要安装mongodb 服务。这个网络上有很多相关的资料,自行进行操作。

下载安装完,把mongodb服务启动起来以备之后进行操作使用。

(2) 新建一个maven java project;

在这里我们新建一个spring-boot-mongodb项目。

(3) 引入相关依赖;

引入相关依赖,在这里最主要的是mongodb的依赖,其它的依赖就是基本的了,具体看如下pom.xml文件:

<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.kfit</groupId>

<artifactId>spring-boot-mongodb</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>jar</packaging>

<name>spring-boot-mongodb</name>

<url>http://maven.apache.org</url>

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<!-- jdk版本号,angel在这里使用1.8,大家修改为大家本地配置的jdk版本号即可 -->

<java.version>1.8</java.version>

</properties>

<!--

spring boot 父节点依赖,

引入这个之后相关的引入就不需要添加version配置,

spring boot会自动选择最合适的版本进行添加。

-->

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>1.3.3.RELEASE</version>

</parent>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

</dependency>

<!-- spring boot web支持:mvc,aop... -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<!-- 增加mongodb支持 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-mongodb</artifactId>

</dependency>

</dependencies>

</project>

(4) 编写测试代码;

在这里我们需要编写一个简单的例子进行测试下,我们需要创建一个DemoInfo实体类,需要创建一个操作MongoDB的repository类,再者就是一个控制类DemoController。具体看如下代码:

实体类代码DemoInfo:com.kfit.demo.DemoInfo ,具体代码如下:

package com.kfit.demo;

import org.springframework.data.annotation.Id;

/**

* 实体类.

* @author Angel --守护天使

* @version v.0.1

* @date 2016年8月18日下午3:15:39

*/

public class DemoInfo {

//id属性是给mongodb用的,用@Id注解修饰

@Id

private String id;

private String name;

privateintage;

public String getName() {

returnname;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(intage) {

this.age = age;

}

@Override

public String toString() {

return "DemoInfo [id=" + id + ", name=" + name + ", age=" + age + "]";

}

}

这个类很简单,跟普通的实体类相比就是多了一个id的注解,这给Mongodb使用的。

接下来编写一个操作mongodb的repository代码,它继承MongoRepository接口;MongoRepository接口包含了常用的CRUD操作,例如:save,insert,fillAll等。我们也可以定义我们自己的操作接口,具体看如下代码:

com.kfit.demo.DemoInfoRepository :

 

package com.kfit.demo;

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

/**

* 继承自MongoRepository接口,MongoRepository接口包含了常用的CRUD操作,

* 例如:save、insert、findall等等。我们可以定义自己的查找接口,

* 例如根据demoInfo的name搜索,具体的DemoInfoRepository接口代码如下:

* @author Angel --守护天使

* @version v.0.1

* @date 2016年8月18日下午3:15:49

*/

public interface  DemoInfoRepository  extends MongoRepository<DemoInfo, String> {

DemoInfo findByName(String name);

}

接下来就是访问控制类,这个类中很简单,都是最基本的代码,看如下:

com.kfit.demo.DemoController:

package com.kfit.demo;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

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

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

/**

*

* @author Angel --守护天使

* @version v.0.1

* @date 2016年8月18日下午8:49:35

*/

@RestController

public class DemoController {

@Autowired

private DemoInfoRepository demoInfoRepository;

@RequestMapping("save")

public String save(){

DemoInfo demoInfo = new DemoInfo();

demoInfo.setName("张三");

demoInfo.setAge(20);

demoInfoRepository.save(demoInfo);

demoInfo = new DemoInfo();

demoInfo.setName("李四");

demoInfo.setAge(30);

demoInfoRepository.save(demoInfo);

return "ok";

}

@RequestMapping("find")

public List<DemoInfo> find(){

return demoInfoRepository.findAll();

}

@RequestMapping("findByName")

public DemoInfo findByName(){

return demoInfoRepository.findByName("张三");

}

}

最后编写App.java启动类,启动应用程序:

com.kfit.App:

package com.kfit;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

/**

*

* @author Angel --守护天使

* @version v.0.1

* @date 2016年8月18日下午3:15:28

*/

@SpringBootApplication

public class App {

public static void main(String[] args) {

SpringApplication.run(App.class, args);

}

}

好了到这里,简单的一个程序就可以运行起来看看了,运行起来之后,依次访问如下地址:

http://127.0.0.0.1:8080/save :保存两条数据;

http://127.0.0.0.1:8080/find  :查询所有数据;

http://127.0.0.0.1:8080/findByName  :通过名称查找;

只要在浏览器中能看到数据,那么恭喜你,基本的使用算是成功了。那么你肯定会有疑问,看下文。

(5) 配置文件

我们会发现我们根本没有做什么配置,所以spring boot提供了默认的一些配置,比如地址,端口号,那么如果我们修改了mongodb默认的端口号27017,Spring boot 也给我们配置的地方application.properties文件,具体支持如下一些配置:

# MONGODB (MongoProperties)

spring.data.mongodb.authentication-database= # Authentication database name.

spring.data.mongodb.database=test # Database name.

spring.data.mongodb.field-naming-strategy= # Fully qualified name of the FieldNamingStrategy to use.

spring.data.mongodb.grid-fs-database= # GridFS database name.

spring.data.mongodb.host=localhost # Mongo server host.

spring.data.mongodb.password= # Login password of the mongo server.

spring.data.mongodb.port=27017 # Mongo server port.

spring.data.mongodb.repositories.enabled=true # Enable Mongo repositories.

spring.data.mongodb.uri=mongodb://localhost/test # Mongo database URI. When set, host and port are ignored.

spring.data.mongodb.username= # Login user of the mongo server.

(6) 使用MongoTemplate进行操作;

首先在DemoController中引入MongoTemplate :

@Autowired

private MongoTemplate mongoTemplate;

编写访问方法:

@RequestMapping("find2")

public List<DemoInfo> find2(){

return mongoTemplate.findAll(DemoInfo.class);

}

访问地址:http://127.0.0.1:8080/find2 ,如果看到和find一样的数据,恭喜你你成功了。好了暂时就介绍到这里。

84. Spring Boot集成MongoDB【从零开始学Spring Boot】的更多相关文章

  1. 63.JPA/Hibernate/Spring Data概念【从零开始学Spring Boot】

    [从零开始学习Spirng Boot-常见异常汇总] 事情的起源,无意当中在一个群里看到这么一句描述:"有人么?默默的问一句,现在开发用mybatis还是hibernate还是jpa&quo ...

  2. 47. Spring Boot发送邮件【从零开始学Spring Boot】

    (提供源代码) Spring提供了非常好用的JavaMailSender接口实现邮件发送.在Spring Boot的Starter模块中也为此提供了自动化配置.下面通过实例看看如何在Spring Bo ...

  3. 20. Spring Boot Servlet【从零开始学Spring Boot】

    转载:http://blog.csdn.net/linxingliang/article/details/52069482 Web开发使用 Controller 基本上可以完成大部分需求,但是我们还可 ...

  4. (20)Spring Boot Servlet【从零开始学Spring Boot】

    Web开发使用 Controller 基本上可以完成大部分需求,但是我们还可能会用到 Servlet.Filter.Listener.Interceptor 等等. 当使用Spring-Boot时,嵌 ...

  5. 81. Spring Boot集成JSP疑问【从零开始学Spring Boot】

    [原创文章,转载请注明出处] 针对文章: ()Spring Boot 添加JSP支持[从零开始学Spring Boot] 有网友提了这么一些疑问: 1.Spring Boot使用jsp时,仍旧可以打成 ...

  6. (37)Spring Boot集成EHCache实现缓存机制【从零开始学Spring Boot】

    [本文章是否对你有用以及是否有好的建议,请留言] 写后感:博主写这么一系列文章也不容易啊,请评论支持下. 如果看过我之前(35)的文章这一篇的文章就会很简单,没有什么挑战性了. 那么我们先说说这一篇文 ...

  7. 57. Spring 自定义properties升级篇【从零开始学Spring Boot】

    之前在两篇文章中都有简单介绍或者提到过 自定义属性的用法: 25.Spring Boot使用自定义的properties[从零开始学Spring Boot] 51. spring boot属性文件之多 ...

  8. 17、Spring Boot普通类调用bean【从零开始学Spring Boot】

    转载:http://blog.csdn.net/linxingliang/article/details/52013017 我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个 ...

  9. 21. Spring Boot过滤器、监听器【从零开始学Spring Boot】

    转载:http://blog.csdn.net/linxingliang/article/details/52069490 上一篇文章已经对定义Servlet 的方法进行了说明,过滤器(Filter) ...

  10. 78. Spring Boot完美使用FastJson解析JSON数据【从零开始学Spring Boot】

    [原创文章,转载请注明出处] 个人使用比较习惯的json框架是fastjson,所以spring boot默认的json使用起来就很陌生了,所以很自然我就想我能不能使用fastjson进行json解析 ...

随机推荐

  1. tomcat在idea中启动乱码

    server,localhost log,catalina log分别乱码 打开tomcat/conf/目录下修改logging.properties 找到"utf-8"行更改为 ...

  2. Spring相关BUG

    今天从云开发平台上生成的代码报Spring相关的错误. 我找到第一处错误,整理如下: org.springframework.beans.factory.BeanCreationException: ...

  3. 制作 Favicon.ico 图标教程

    摘要:有一些站长认为 favicon.ico 图标对于一个网站没有什么作用.甚至有一些站长认为,少加载一个图片,页面设计展现的速度更快些.的确,理论上是对的,但乐猪认为这种想法是肤浅的!有这种想法的站 ...

  4. VS2010每次编译都重新编译 解决方案

    今天用VS2010的时候遇到这个问题,总搞不定,关掉重启各种尝试都木有用,最后突然发现项目的生成时间总是2009年...好吧,原来刚才笔记本死机了,我把笔记本拆了,拔下电池,擦了擦内存条,导致系统时间 ...

  5. C# 分支语句 练习题

    1.“请输入年份:”(1-9999) “请输入月份:”(1-12) “请输入日期:”(要判断大小月,判断闰年) 判断输入的时间日期是否正确 bool dateISOK = false;//放置日期是否 ...

  6. linux下怎么修改mysql的字符集编码

    安装完的MySQL的默认字符集为 latin1 ,为了要将其字符集改为用户所需要的(比如utf8),就必须改其相关的配置文件:由于linux下MySQL的默认安装目录分布在不同的文件下:不像windo ...

  7. sstable, bigtable,leveldb,cassandra,hbase的lsm基础

    先看懂文献1和2 1. 先了解sstable.SSTable: Sorted String Table [2] [10] WiscKey:  类似myisam, key value分离, 根据ssd优 ...

  8. luoguP1164 小A点菜(背包问题)

    题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:“随便点”. 题目描述 不过uim由于买了一些辅(e ...

  9. [LUOGU] 1892 团伙

    题目描述 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友. 两个强盗是同一团伙的 ...

  10. sql server存储过程修改,存储到mysql笔记

    由于有些项目要迁移到mysql上,数据迁移用MySQLWorkbench就能很好的迁移,最难的是存储过程之类的. 下面是sql server存储过程和mysql存储过程的转化: SQL SERVER: ...