仿照navicat整一个mongo数据库查询web工具
前言
我个人比较不喜欢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 做一些有意义的功能!
转载自:https://juejin.cn/post/7167608732568780830