zoukankan      html  css  js  c++  java
  • 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时候,就说数据使用频率高,而且还是那种文本型的。

  • 相关阅读:
    Java泛型
    Java多态
    Anaconda+pycharm配置pytorch1.1.0+cuda 9.0+python3.7环境
    anaconda+fbprophet安装
    pycharm显示所有的tabs
    联想拯救者15-isk安装固态硬盘与系统迁移教程
    VS2017 C++操作mysql数据库
    mfc动态演示排序算法
    模拟处理机作业调度---短作业优先调度算法
    P3327 [SDOI2015]约数个数和
  • 原文地址:https://www.cnblogs.com/cxyxiaobao/p/12409337.html
Copyright © 2011-2022 走看看