springboot+mongoDB整合demo

springboot+mongoDB整合

1、安装mongoDB

去MongoDB官网下载一个合适的安装包,下载地址:
https://www.mongodb.com/download-center?jmp=nav#community
完成下载后进行安装,具体安装教程不展开,可参考如下博文:
https://blog.csdn.net/qq_42908549/article/details/81490733

2、安装Studio 3T

为了能够更加方便,我们需要一个可视化的管理工具,我选择的是Studio 3T
下载地址:https://studio3t.com/download/
下载下来完成安装后,如下图:
然后自己摸索摸索如何使用>_<
springboot+mongoDB整合demo_第1张图片

3、创建一个springboot项目

3.1、项目具体结构如下图:
springboot+mongoDB整合demo_第2张图片
3.2、pom文件如下:



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.6.RELEASE
         
    
    com.springboot-mongo
    demo
    0.0.1-SNAPSHOT
    demo
    Demo project for Spring Boot
    
        1.8
    
    
        
            org.springframework.boot
            spring-boot-starter-data-mongodb
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


3.3、application.properties文件:

server.port=8080


##mongo配置
spring.data.mongodb.host=10.10.38.54
spring.data.mongodb.port=27017
spring.data.mongodb.authentication-database=admin  
spring.data.mongodb.database=tao_dev  //数据库名
spring.data.mongodb.username=root      
spring.data.mongodb.password=123456

##spring.data.mongodb.uri=mongodb://root:[email protected]:27017/tao_dev

3.4、刚刚创建的项目结构如第一张图所示,现在在pojo包下新建一个实体类(person):

package com.springbootmongo.demo.pojo;

import org.springframework.data.mongodb.core.mapping.Document;

/**
 * @Name: person实体类
 * @Description:
 * @Author:[email protected]
 * @Date:2019/7/16 15:24
 */
@Document(collection = "person")
public class Person {
    private String id;
    private String name;
    private String 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 String getAge() {
        return age;
    }

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

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

    @Override
    public String toString(){
        return "Person{"+
                 "id='"+id+'\''+
                ", name='" + name +'\''+
                ", age='"+age +'\''+'}';
    }
}

3.5、自定义的数据库的操作,继承MongoRepository

package com.springbootmongo.demo.dao;

import com.springbootmongo.demo.pojo.Person;
import org.springframework.data.mongodb.repository.MongoRepository;

import java.util.List;

/**
 * @Name:
 * @Description: 基本dao层操作
 * @Author:[email protected]
 * @Date:2019/7/16 15:38
 */
public interface PersonRepository extends MongoRepository {
    public Person findByName(String name);
    public List findByAge(String age);
}

3.6、service层
3.6.1、PersonService接口:

package com.springbootmongo.demo.service;

import com.mongodb.bulk.UpdateRequest;
import com.mongodb.client.result.UpdateResult;
import com.springbootmongo.demo.pojo.Person;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Name:
 * @Description:
 * @Author:[email protected]
 * @Date:2019/7/16 15:42
 */
@Service
public interface PersonService {
    public Person add(Person person);
    public UpdateResult update(Person person);
    public void delete(String id);
    public Person findByName(String name);
    public List findByAge(String age);
}

3.6.2、service的实现类:

package com.springbootmongo.demo.service.Impl;

import com.mongodb.client.result.UpdateResult;
import com.springbootmongo.demo.dao.PersonRepository;
import com.springbootmongo.demo.pojo.Person;
import com.springbootmongo.demo.service.PersonService;
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;

/**
 * @Name:
 * @Description:
 * @Author:[email protected]
 * @Date:2019/7/16 15:48
 */
@Service
public class PersonServiceImpl implements PersonService {

    @Autowired
    private PersonRepository personRepository;

    @Autowired
    private MongoTemplate mongoTemplate;

    @Override
    public Person add(Person person) {
        Person person1 = personRepository.save(person);
        return person1;
    }

    @Override
    public UpdateResult update(Person person) {
        Query query = new Query();
        //Criteria criteria = new Criteria();
        query.addCriteria(Criteria.where("_id").is(person.getId()));
        String collectionsName = "person";
        Update update = new Update();
        update.set("_id",person.getId());
        update.set("name",person.getName());
        update.set("age",person.getAge());
        UpdateResult result = mongoTemplate.updateFirst(query,update,collectionsName);
        return result;
    }

    @Override
    public void delete(String id) {
       personRepository.deleteById(id);
    }

    @Override
    public Person findByName(String name) {
        return personRepository.findByName(name);
    }

    @Override
    public List findByAge(String age) {
        return personRepository.findByAge(age);
    }
}

3.7、controller层各操作的接口:

package com.springbootmongo.demo.controller;

import com.mongodb.client.result.UpdateResult;
import com.springbootmongo.demo.pojo.Person;
import com.springbootmongo.demo.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @Name:
 * @Description:
 * @Author:[email protected]
 * @Date:2019/7/16 16:05
 */

@RestController
@RequestMapping("person")
public class PersonController {
   @Autowired
   private PersonService personService;

   @RequestMapping("add")
    public Person add(Person person){
       return personService.add(person);
   }

   @RequestMapping("update")
    public UpdateResult update(Person person){
       return personService.update(person);
   }

   @RequestMapping("findByName")
    public Person findByName(String name){
       return personService.findByName(name);
   }

   @RequestMapping("findByAge")
    public List findByAge(String age){
       return personService.findByAge(age);
   }

   @RequestMapping("delete")
    public String delete(String id){
       personService.delete(id);
       return "success";
   }

}

3.8、实现效果如下图:
springboot+mongoDB整合demo_第3张图片此时使用Studio 3T查看库中信息:
springboot+mongoDB整合demo_第4张图片至此一个小demo算是完成了。

4、说明

以上只是mongoDB的最基本的使用,关于mongoDB的高级操作写法还要更进一步的学习,MongoDB不像Mysql那些关系数据库,使用时还是有很大的不同。

你可能感兴趣的:(java学习之路,Mongo数据库学习,Mongo数据库使用)