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

什么是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依赖


    org.springframework.boot
    spring-boot-starter-data-mongodb

配置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 {
    List findByName(String name);
}

继承 MongoReposity 接口需要传入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)