likes
comments
collection
share

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

作者站长头像
站长
· 阅读数 53

前言

我个人比较不喜欢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 做一些有意义的功能!

转载自:https://juejin.cn/post/7167608732568780830
评论
请登录