前语

我个人比较不喜爱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东西。

上效果

话不多说先看效果,截取了部分图片

全体容貌

仿照navicat整一个mongo数据库查询web工具

创立链接

仿照navicat整一个mongo数据库查询web工具

右键点击连接相关功用

仿照navicat整一个mongo数据库查询web工具

如何运用

  1. 从库房 :gitee.com/listen_w/mo… 中拉取代码;
  2. 注意,由于该项目依赖我之前写的 sqltomongo-spring-boot-starter 这个SDK,所以还需要拉取这个SDK代码:gitee.com/listen_w/sq… 并打包到本地maven库房(后面我将这个SDK推送到 Maven 中心库房后这一步就能够省掉了);
  3. 配置 mongo-tool 项目的 yaml 配置文件
    仿照navicat整一个mongo数据库查询web工具
  4. 发动 mongo-tool 项目(springboot项目,发动很简单)
  5. 发动 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>

简单介绍中心功用

东西原理其实很简单,我画一个图表示:

仿照navicat整一个mongo数据库查询web工具

动态切换数据源

其实这个项目代码还是比较简单的,前端页面就不说了,后端的服务主要注意一点的就是如何动态切换数据源,从上面那个图也能够看出,创立的数据库是保存在 mongo 数据库中的,所以当打开数据库时,即

仿照navicat整一个mongo数据库查询web工具
会依据数据库信息,创立一个 MongoDatabaseFactory 目标
仿照navicat整一个mongo数据库查询web工具

而 mongo 切换数据源的方式也很简单,我运用的是 MongoTemplate,只需要重写 doGetDatabase 方法,从 ThreadLocal 中获取对应的 MongoDatabaseFactory 即可:

仿照navicat整一个mongo数据库查询web工具

那什么时候将数据源设置到 ThreadLocal中呢?

当然是在拦截器中做的,代码很简单,就不过多说明晰

仿照navicat整一个mongo数据库查询web工具

结尾

后面还想着完善这个web东西,现在只能实现查询功用,后面会逐步增加一些 “增删改” 的SQL支撑,并进一步参照 Navicat 做一些有意义的功用!