• 84. Spring Boot集成MongoDB【从零开始学Spring Boot】


    至于MongoDB网上有很多相关的资料,所以在这里不进行过多的介绍,我们在这里主要是介绍下如何将mongodbspring 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实体类,需要创建一个操作MongoDBrepository类,再者就是一个控制类DemoController。具体看如下代码:

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

    package com.kfit.demo;

     

    import org.springframework.data.annotation.Id;

     

    /**

     * 实体类.

     * @author Angel --守护天使

     * @version v.0.1

     * @date 2016818下午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使用的。

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

    com.kfit.demo.DemoInfoRepository

     

    package com.kfit.demo;

     

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

     

    /**

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

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

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

     * @author Angel --守护天使

     * @version v.0.1

     * @date 2016818下午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 2016818下午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 2016818下午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默认的端口号27017Spring 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一样的数据,恭喜你你成功了。好了暂时就介绍到这里。

  • 相关阅读:
    pagination分页插件使用
    ajax实现图片文件上传和图片预览
    屏幕护眼色调调节
    css画三角形以及实现带三角的阴影效果
    软件测试homework3
    使用Junit包进行单元测试并导入eclemma包。
    软件测试homework2
    软件测试homework1 编程过程的一个小错误
    ReentrantLock
    Elasticsearch-基本概念
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6147052.html
Copyright © 2020-2023  润新知