第四部分:NoSQL实践
通过Docker辅助开发
什么是容器
认识Docker
不同眼人眼中的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 {@Idprivate String id;private String name;private Money price;private Date createTime;private Date updateTime;
}public class MoneyReadConverter implements Converter<Document,Money> {@Overridepublic 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 {@Autowiredprivate MongoTemplate mongoTemplate;public static void main(String[] args) {SpringApplication.run(TestmongodbApplication.class, args);}@Beanpublic MongoCustomConversions mongoCustomConversions() {return new MongoCustomConversions(Arrays.asList(new MoneyReadConverter()));}@Overridepublic 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
第四部分:NoSQL实践相关推荐
- python实训总结报告书_20172304 实验四python综合实践报告
20172304 实验四python综合实践报告 姓名:段志轩 学号:20172304 指导教师:王志强 课程:Python程序设计 实验时间:2020年5月13日至2020年6月14日 实验分析 本 ...
- 《Python程序设计》实验四 Python综合实践实验报告
<Python程序设计>实验四 Python综合实践实验报告 1.实验内容 Python综合应用:爬虫.数据处理.可视化.机器学习.神经网络.游戏.网络安全等. 在华为ECS服务器(Ope ...
- 计算机科学与技术学习路线编程基础四大件应用实践编程(含C++学习路线)
计算机科学与技术学习路线&编程基础四大件&应用实践编程(含C++学习路线) 基本介绍 本人211科班出身,目前大学临近毕业,想给迷茫的同行者或者后来人一些建议和推荐,少走弯路.想想自己 ...
- Python程序设计与算法基础教程(第二版)微课版第四章上机实践答案
Python程序设计与算法基础教程(第二版)微课版第四章上机实践答案 2. def generate(L) : #生成杨辉三角的 一行List = [1]for x in range(1,len(L) ...
- Python 程序设计与算法基础教程(第二版)第四章上机实践
第四章上机实践部分参考答案 2.格式化杨辉三角 3.求直角三角形周长和面积 4.随机数 5.党费 6.袖珍计算器 7.判断三边构成三角形 8.鸡兔 9.计算e的x次方近似值 10.平方根 11.余数 ...
- 章节四:BeautifulSoup实践
章节四:BeautifulSoup实践 目录 章节四:BeautifulSoup实践 1. 复习 2. 项目:解密吴氏私厨 3. 分析过程 4. 代码实现(一) 4.1 获取与解析 4.2 提取最小父 ...
- 数据湖是一种方法 数据湖的四个最佳实践
数据湖听起来很简单:把数据或信息汇集到一个结合处理速度和存储空间的大数据系统――Hadoop集群或内存解决方案,那样业务部门就能访问数据,获取新的洞察力.不过,与IT行业的许多技术一样,现实比梦想困难 ...
- 音视频低延迟应用的四个技术实践
低延时是音视频领域最常遇到的关键诉求,如何设计解决方案以满足低延时的应用场景至关重要,本文将基于低延时的解决方案和实例进行讲解,分享一些应用的实践,帮助开发者更快地将解决方案应用到产品中.内容来自即构 ...
- 视觉SLAM十四讲学习笔记-第四讲-Sophus实践、相似变换群与李代数
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
最新文章
- 慧算账全面升级,V2.2版本带来极致体验
- C++线性序列容器vector简单总结
- [转]SQL语句大全
- Worktile 技术架构概要
- android 从相册或相机获取图片并且裁剪 支持android 7.0
- 简历石沉大海、面试被刷?拒绝你的HR小姐姐,可能只是个AI
- linux之netstat使用--10个常用的命令
- 表单和iframe的使用
- windows多线程详解
- Pc端微信加群的测试用例
- Log4net 配置详解
- php resize函数,Php Image Resize图片大小调整的函数代码
- Atitit.软件仪表盘(0)--软件的子系统体系说明
- 清华 计算机系 赵晟,来看看2010年清华大学自动化系录取名单本科毕业学校
- 用docker跑机器学习环境
- 第一代程序员作家--王小波
- 剑客vs刀客 Java vs .NET
- ctab法提取dna流程图_CTAB法提取DNA原理及步骤、制胶、电泳
- 项目经理版《野狼disco》
- 计算机数值表示Integer
热门文章
- #千峰逆战,205#面向对象2.0
- 如何刷recovery
- root = Tk() 和 root = Tkinter.Tk() 区别
- XENAPP 7.6 和XENDESKTOP 7.6 初体验之一 安装
- [jzoj 5353] 村通网 {kruskal算法}
- 【源码篇】聊聊源码mybatis(更新分析)
- 35-文思海辉公司问题-info
- STEP7编程免驱动方式(METH-MPI-S2)
- 如何把单词批量导入金山词霸生词本?
- Eclipse+Java+Swing+Mysql实现医院挂号系统