美文网首页
Spring全家桶学习笔记 05 | 轻松使用MongoDB

Spring全家桶学习笔记 05 | 轻松使用MongoDB

作者: xeathen | 来源:发表于2019-07-17 16:53 被阅读0次

    什么是MongoDB

    MongoDB是一款开源的文档型数据库,官方网站为 www.mongodb.com

    Spring 对MongoDB的支持

    • Spring Data MongoDB

      • MongoTemplate

      • Repository

    安装MongoDB

    可以利用Docker来Pull MongoDB,对于Docker的安装以及会遇到的坑可以借助搜索引擎,windows平台的安装会遇到一些小问题,同时需要注意一下官方国内镜像目前已经失效了,可以使用阿里云的镜像。

    Mongo登陆

    • 登录到 MongoDB 容器中:
    docker exec -it mongo bash
    
    • 通过 Shell 连接 MongoDB:
    mongo -u admin -p admin
    

    创建库

    use mongodemo;
    

    创建用户

    db.createUser(
      {
        user: "springdemo",
        pwd: "springdemopwd",
        roles: [
          { role: "readWrite", db: "mongodemo" }
        ]
      }
    );
    

    创建后可以用 show users 命令验证是否创建成功,当前用户拥有对springbucks库进行读写的权限

    创建工程

    生成骨架

    利用 start.spring.io 生成骨架,引入Lombok与Mongo依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
    

    配置application.properties

    spring.data.mongodb.uri=mongodb://springdemo:springdemopwd@localhost:27017/mongodemo
    

    创建Bean

    Mongo所需的注解为 @Document@Id ,其余注解属于Lombok

    @Document
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public class Car {
        @Id
        private String id;
        private String name;
        private Date createTime;
        private Date updateTime;
    }
    

    创建Repository

    public interface CarRepository extends MongoRepository<Car, String> {
        List<Car> findByName(String name);
    }
    

    继承 MongoReposity<T, ID> 接口需要传入Bean的类与ID的类型

    Application启动类

    @Slf4j
    @SpringBootApplication
    @EnableMongoRepositories
    public class MongoDemoApplication implements CommandLineRunner {
      
        @Autowired
        private CarRepository carRepository;
    
        public static void main(String[] args) {
            SpringApplication.run(MongoDemoApplication.class, args);
        }
        
        @Override
        public void run(String... args) throws Exception {
            Car benz = Car.builder()
                    .name("benz")
                    .createTime(new Date())
                    .updateTime(new Date()).build();
    
            Car audi = Car.builder()
                    .name("audi")
                    .createTime(new Date())
                    .updateTime(new Date()).build();
    
            carRepository.insert(Arrays.asList(benz, audi));
            carRepository.findAll(Sort.by("name"))
                    .forEach(car -> log.info("Saved Car {}", car));
            Thread.sleep(1000);
            
            audi.setUpdateTime(new Date());
            carRepository.save(audi);
            carRepository.findByName("audi")
                    .forEach(car -> log.info("Car {}", car));
            carRepository.deleteAll();
        }
    }
    

    @EnableMongoRepositories 用于开启Repositories的支持

    我们在 run 方法中定义了 benzaudi 两种 Car ,插入Mongo数据库后线程睡眠1秒钟,修改 audi 的update时间,再将其保存,最后删除Mongo中car的所有记录

    数据变化

    运行程序过后可见数据变化,audiupdateTime 得到了更新

    数据变化.png

    可在mongo控制台中输入 db.car.find();db.car.count(); 查看实时数据

    到此,Mongo在Spring中最基础的使用已经完成

    相关文章

      网友评论

          本文标题:Spring全家桶学习笔记 05 | 轻松使用MongoDB

          本文链接:https://www.haomeiwen.com/subject/mmxclctx.html