前语
我个人比较不喜爱Mongo的语法,反而比较喜爱SQL语法(或许是先入为主吧,究竟先学习SQL),所以就想着,是否有个东西能够经过写SQL去查询Mongo,很惋惜的是并没有找到好一些的东西(Studio3T 这个东西能够做到,但是貌似不是很好运用,或许是我不会用吧。。。。)。
刚好之前我写入一个经过 原生SQL查询Mongo数据的SDK。
附上 SDK 库房:gitee.com/listen_w/sq…
有爱好的能够合作以下两篇博文看看
撸了几天Mybatis源码,将之前写的中间件重构了
听说你不会Mongo的API?我写个插件用SQL去查Mongo
所以我就想着是不是能够搞一个 web 版的查询东西呢,所以我就仿照 navicat 写了一个简易版本的经过SQL查询mongo的web东西。
上效果
话不多说先看效果,截取了部分图片
全体容貌
创立链接
右键点击连接相关功用
如何运用
- 从库房 :gitee.com/listen_w/mo… 中拉取代码;
- 注意,由于该项目依赖我之前写的
sqltomongo-spring-boot-starter
这个SDK,所以还需要拉取这个SDK代码:gitee.com/listen_w/sq… 并打包到本地maven库房(后面我将这个SDK推送到 Maven 中心库房后这一步就能够省掉了); - 配置 mongo-tool 项目的 yaml 配置文件
- 发动 mongo-tool 项目(springboot项目,发动很简单)
- 发动 mongo-tool-ui 项目,这是一个前端项目(或许你电脑环境需要支撑前端的环境),发动运用命令:
npm run dev
,前端的知识具体百度;
附上SDK 中心库房Maven坐标
<dependency> <groupId>cn.org.wangchangjiu</groupId> <artifactId>sqltomongo-spring-boot-starter</artifactId> <version>1.0.0-RELEASE</version> </dependency>
简单介绍中心功用
东西原理其实很简单,我画一个图表示:
动态切换数据源
其实这个项目代码还是比较简单的,前端页面就不说了,后端的服务主要注意一点的就是如何动态切换数据源,从上面那个图也能够看出,创立的数据库是保存在 mongo 数据库中的,所以当打开数据库时,即
会依据数据库信息,创立一个 MongoDatabaseFactory
目标
而 mongo 切换数据源的方式也很简单,我运用的是 MongoTemplate
,只需要重写 doGetDatabase
方法,从 ThreadLocal 中获取对应的 MongoDatabaseFactory 即可:
那什么时候将数据源设置到 ThreadLocal中呢?
当然是在拦截器中做的,代码很简单,就不过多说明晰
结尾
后面还想着完善这个web东西,现在只能实现查询功用,后面会逐步增加一些 “增删改” 的SQL支撑,并进一步参照 Navicat 做一些有意义的功用!