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时候,就说数据使用频率高,而且还是那种文本型的。

  • 相关阅读:
    cmanformat
    mysql-sql语言参考
    jQuery 判断多个 input checkbox 中至少有一个勾选
    Java实现 蓝桥杯 算法提高 计算行列式
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 算法提高 成绩排序2
    Java实现 蓝桥杯 算法提高 成绩排序2
    Java实现 蓝桥杯 算法提高 成绩排序2
  • 原文地址:https://www.cnblogs.com/cxyxiaobao/p/12409337.html
Copyright © 2011-2022 走看看