springboot整合mongdb

相信很多人知道mongdb也是一种数据库。那么跟mysql的对应关系是怎么样的呢:

 

 相信大家明白,那么mysql可以使用sqlyog也还可以使用navicat进行操作,那么mongdb呢:

 

 也是可以添加索引的,mongdb是一个文本数据库。

那么开发怎么使用呢:

我在项目里面使用了两种方法,同时也做了测试,平时我们写的类,在mongdb可以是一张表,来存取数据

pom。xml

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/cms?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=UTC
    username: root
    password: 1234
    filters: stat
    initialSize: 100
    maxActive: 1000
    maxOpenPreparedStatements: 20
    maxWait: 60000
    minEvictableIdleTimeMillis: 300000
    minIdle: 500
    poolPreparedStatements: true
    testOnBorrow: false
    testOnReturn: false
    testWhileIdle: true
    timeBetweenEvictionRunsMillis: 60000
    type: com.alibaba.druid.pool.DruidDataSource
    validationQuery: select 'x'
  data:
    mongodb:
      uri: mongodb://127.0.0.1:27017/person

此处需要注意遵守yml规范,同一个开头的放在一起,不然报错

本次测试用了三张表:


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Address {
    private String street;
    private String city;
    private String zip;
}
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.util.Date;

@Document(collection="book")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Book {
    @Id
    private String id;
    private Integer price;
    private String name;
    private String info;
    private String publish;
    private Date createTime;
    private Date updateTime;
}
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.bson.types.ObjectId;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {

    private ObjectId id;
    private String name;
    private int age;
    private Address address;
}

dao类是关键,看两种方法:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;

@Component
public class AddressDao {
    @Autowired
    private MongoTemplate mongoTemplate;

    public Address savePerson(Address address){

        return this.mongoTemplate.save(address);
    }
}
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
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.Component;

import java.util.List;

@Component
public class PersonDAO {

    @Autowired
    private MongoTemplate mongoTemplate;

    public Person savePerson(Person person){
        return this.mongoTemplate.save(person);
    }

    public List<Person> queryPersonListByName(String name) {
        Query query = Query.query(Criteria.where("name").is(name));
        return this.mongoTemplate.find(query, Person.class);
    }

    public List<Person> queryPagePersonList(Integer page, Integer rows) {
        Query query = new Query().limit(rows).skip((page - 1) * rows);
        return this.mongoTemplate.find(query, Person.class);
    }

    public UpdateResult update(Person person) {
        Query query = Query.query(Criteria.where("id").is(person.getId()));
        Update update = Update.update("age", person.getAge());
        return this.mongoTemplate.updateFirst(query, update, Person.class);
    }

    public DeleteResult deleteById(String id) {
        Query query = Query.query(Criteria.where("id").is(id));
        return this.mongoTemplate.remove(query, Person.class);
    }

}
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface BookDao extends MongoRepository<Book,String> {
}

调用:

import com.jds.common.result.Result;
import org.bson.types.ObjectId;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.management.StringValueExp;
import java.util.Date;

@RestController
public class PersonController {
    @Autowired
    private PersonDAO personDAO;
    @Autowired
    private
    AddressDao addressDao;
    @Autowired
    BookDao bookDao;

    @RequestMapping(value = "/mp", method = RequestMethod.GET)
    public Result g() {
        Person person = new Person(ObjectId.get(), "张三", 20,
                new Address("人民路", "上海市", "666666"));
        Person person1 = personDAO.savePerson(person);
        return Result.success(person1);
    }

    @RequestMapping(value = "/mpp", method = RequestMethod.GET)
    public Result g1() {

        Address address = new Address("人民路", "上海市", "666666");
        Address address1 = addressDao.savePerson(address);

        return Result.success(address1);
    }
    @RequestMapping(value = "/mppp", method = RequestMethod.GET)
    public Result g2() {

        Book book = new Book();
        book.setCreateTime(new Date());
        book.setInfo("zhongg");
        book.setName("laow");
        book.setPrice(6000);
        book.setPublish("wosh");
        book.setUpdateTime(new Date());
        Book save = bookDao.save(book);

        return Result.success(save);
    }
}

最后结果:

 

 通常用到mongdb时候,就说数据使用频率高,而且还是那种文本型的。

posted @ 2020-03-04 14:30  菩提树下的韦小宝  阅读(267)  评论(0编辑  收藏  举报