springboot集成beetlsql以及支持多数据源

本篇或许是为数不多的展示beetlsql多数据源设计思路,甚至可能是目前网上能找到的唯一一篇介绍beetlsql多数据源的文章。

为什么推荐用beetlsql:目前国内最火的支持数据库持久化的DAO工具应该还是mybatis,因为mybatis出现的时间早,并且提供了比较强大的数据库持久化处理能力,而我本人也是一直在用mybatis。但是mybatis仍有许多不足之处,想必每一位开发者在开发过程中应该也深有体会。而今天的主角,目前在国内是一款还没有那么火的DAO工具,beetlsql的官网介绍是这样说的“ 它是一个超过MyBatis的全功能Java DAO工具,同时具有Hibernate 优点 & Mybatis优点功能,能自动能生成大量常用的SQL的应用。”。该框架与MyBatis以及Hibernate的 网上可以搜索到,在此不在累述,只贴出一张比较的图:

这个比较是否权威,是否全面本人不做说明。在此我结合自己使用的感受来说明beetlsql的优点。

在springboot中如果想使用beetlsql,如果用maven管理jar包,需要按下面引入:

springboot集成beetlsql以及支持多数据源_第1张图片

引入支撑包后,我这里采用yml配置方式,配置如下:

springboot集成beetlsql以及支持多数据源_第2张图片

yml配置方式的好处是结构清晰易懂,书写方便。

通常的我们连接一个数据库都有以下几步:

1、创建一个数据源:

springboot集成beetlsql以及支持多数据源_第3张图片

2、配置参数配置扫描:

springboot集成beetlsql以及支持多数据源_第4张图片

3、创建SqlManager管理器:

springboot集成beetlsql以及支持多数据源_第5张图片

上述过程中采用的使用Repository仓库模式,这种模式映射的DAO工具在使用时非常方便,在配置的包路径下创建一个Repository即可连接上同一层级配置的数据库。如下:

springboot集成beetlsql以及支持多数据源_第6张图片

Repository模块会继承一个BaseMapper,该接口是beetlsql提供的接口支持工具,当然,我们也可以自己创建一个Mapper接口用来替换它。Repository的引用与mybatis中的mapper映射接口是类似的,但是功能却比mybatis强大很多。Repository提供了大量内置sql生成接口,可以根据连接数据的模板自动匹配生成对应的sql:

springboot集成beetlsql以及支持多数据源_第7张图片

BaseMapper源码支持多种接口实现对数据库的原生操作。你再也不用担心sql不会写,写错了。如果这些sql不能满足你的业务,不用担心,你的业务有多复杂由你来定,你可以随心所欲的书写自己的sql。

springboot集成beetlsql以及支持多数据源_第8张图片

这中sql的书写方式是不是让你耳目一新,如果你以前使用mybatis,你一定会为这种格式惊叹。beetlsql中使用md文件格式编辑sql,是的sql书写更加纯净无污染。而且更易阅读和使用。beetlsql同spring-jpa类似都支持了数据与bean对象的模型映射,你可以大大减少对象模型的映射书写。在定义属性时,只需按照驼峰规则进行书写,beetlsql就会自动帮你完成数据结构映射,如果你偏不遵循驼峰书写方式(估计没有公司要你),那也没关系,beetlsql还贴心的提供的了注解映射:

springboot集成beetlsql以及支持多数据源_第9张图片

@Column注解可以帮你对应相关的表字段。想必你应该没有什么接口在写错sql了吧。

接下来就是我们的重点,beetlsql如何实现多数据源连接。

其实从单数据的连接我已埋下了伏笔。该设计的思路是通过配置的路径自动需找相应的数据源,配置不同的Repository,这样不同的Repository包下实现的接口就连接不同的数据源了。关键设计在于

DataSourceBuilderFactory.buildCommonDataSource(id, environment);

创建数据源时根据配置的不同路径去读取数据源:

springboot集成beetlsql以及支持多数据源_第10张图片

id取自我们自定义的多数据源注解接口

springboot集成beetlsql以及支持多数据源_第11张图片

图中标注的Repository包路径就成了我们放置不同数据源的DAO工具位置。这样在不同的Repository路径下创建的接口就会指向不同的数据源,同时同一个数据源又归在同一个路径下,这种方式非常便于管理不同数据源的sql。

我们再来看看使用了beetlsql后的后台日志是如何打印的:

springboot集成beetlsql以及支持多数据源_第12张图片

这么人性化的输出,作为开发者,想必你不会拒绝。同时也可以看出这两条sql是来源与两个数据源,一个mysql一个oracle,完美的将多数据源整合。同时响应时间仅为4-8ms,这些应该足够让我们选择beetlsql了吧。

你可能感兴趣的:(springboot集成beetlsql以及支持多数据源)