第四部分:NoSQL实践

通过Docker辅助开发
什么是容器

在这里插入图片描述

认识Docker

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YqH6cnKF-1630909869376)(https://note.youdao.com/yws/api/personal/file/353F7571E6F849EB976BDA21A9426ADB?method=download&shareKey=379e5fe069a225fa5d71ae8769264d9b)]

不同眼人眼中的Docker
开发眼中的Dorcker
  • 简化了重复搭建开发环境的工作
运维眼中的Docker
  • 交付系统更为流程
  • 伸缩性更好
Docker常用命令
镜像生成
  • docker pull
  • docker search
容器相关
  • docker run
  • docker start/stop <容器名>
  • docker ps <容器名>
  • docker logs <容器名>
docker run的常用选项
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
选项说明
  • -d,后台运行容器
  • -e,设置环境变量
  • –expose / -p 宿主端口:容器端口
  • –name,指定容器名称
  • –link,链接不同容器
  • -v 宿主目录:容器目录,挂载磁盘卷
国内Docker 镜像配置
官方Docker Hub
  • https://hub.docker.com
官方镜像
  • 镜像 https://www.docker-cn.com/registry-mirror
  • 下载 https://www.docker-cn.com/get-docker
阿里云镜像
  • https://dev.aliyun.com
通过 Docker 启动 MongoDB
官方指引
  • https://hub.docker.com/_/mongo
获取镜像
  • docker pull mongo
    运行MongoDB镜像
  • docker run --name mongo -p 27017:27017 -v ~/docker-data/mongo:/data/db -e MONGO_INITDB_USERNAME=admin
  • -e MONGO_INITDB_ROOT_PASSWORD=admin -d mongo
通过Docker启动 MongoDB
登录到MongoDB 容器中
  • docker exec -it mongo bash
通过Shell 连接MongoDB
  • mongo -u admin -p admin
在 Spring 中访问 MongoDB
Spring 对 MongoDB 的⽀持
MongoDB是一款开源的文档型数据库
  • https://www.monoggodb.com
Spring对MongoDB的支持
  • Spring Data MongoDB
  • MongoTemplate
  • Repository 支持
Spring Data MongoDB的基本用法
注解
  • @Document
  • @Id
MongoTemplate
  • save / remove
  • Criteria / Query / Updte
初始化MongoDB的库及权限
创建库

use springbucks

创建用户
db.createUser(
    {
        user: "springbucks",
        pws: "springbucks",
        roles: [
            { role:"readWrite",db: "springbucks"}
        ]
    }
)
Spring Data MongoDB的Repository
@EnableMongoRepository
对应接口
  • MongoRepository<T,ID>
  • PagingAndSorting<T,ID>
  • CrudRepository<T,ID>
实例代码
@Document
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@Setter
public class Coffee {
    @Id
    private String id;
    private String  name;
    private Money price;
    private Date createTime;
    private Date updateTime;
}

public class MoneyReadConverter implements Converter<Document,Money> {

    @Override
    public Money convert(Document source) {
        Document money = (Document) source.get("money");
        double amount = Double.parseDouble(money.getString("amount"));
        String currency = ((Document)money.get("currency")).getString("code");
        return Money.of(CurrencyUnit.of(currency),amount);
    }
}


@SpringBootApplication
@Slf4j
@EnableMongoRepositories
public class TestmongodbApplication implements ApplicationRunner {

    @Autowired
    private MongoTemplate mongoTemplate;

    public static void main(String[] args) {
        SpringApplication.run(TestmongodbApplication.class, args);
    }

    @Bean
    public MongoCustomConversions mongoCustomConversions() {
        return new MongoCustomConversions(Arrays.asList(new MoneyReadConverter()));
    }

    @Override
    public void run(ApplicationArguments args) throws Exception {
        Coffee espresso = Coffee.builder()
                .name("espresso")
                .price(Money.of(CurrencyUnit.of("CNY"), 20.0))
                .createTime(new Date())
                .updateTime(new Date()).build();
        Coffee saved = mongoTemplate.save(espresso);
        log.info("Coffee{}", saved);
        List<Coffee> list = mongoTemplate.find(
                Query.query(Criteria.where("name").is("espresso")), Coffee.class
        );
        list.forEach(c -> log.info("Coffee {}", c));

        Thread.sleep(1000);
        UpdateResult result = mongoTemplate.updateFirst(
                Query.query(Criteria.where("name").is("espre    sso")),
                new Update().set("price", Money.ofMajor(CurrencyUnit.of("CNY"), 30)).currentDate("updateTime"),
                Coffee.class);
        log.info("Update Result:{}",result.getModifiedCount());
        Coffee updateOne = mongoTemplate.findById(saved.getId(), Coffee.class);
        log.info("Update Result: {}", updateOne);
        mongoTemplate.remove(updateOne);

    }
}

连接数据库地址
spring.data.mongodb.uri=mongodb://springbucks:springbucks@localhost:27017/springbucks

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值