首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

实测有用,配置spring boot+mybatis-plus多数据源

人人都是程序员,希望在零碎的阅读时间里,给您一些技术提升。

1 读写分离及多数据源

在我们开发的大多数业务中,往往读多写少,数据库的读会首先变成数据库使用的瓶颈。此时,我们必须能够提升数据库的读性能。

一般写1万条数据的时间比读1万条的数据时间大很多。读写锁冲突从会限制数据库读的性能,读写分离来保证数据使用性能。用一句话概括,读写分离可以很好地解决数据库的读性能瓶颈的。一般都是一个主服务器负责写入,多个从服务器负责查询。

读写分离的关键是一个项目同时访问多个数据源,也就是可以将数据存储的不同服务器的不同数据库上。下面介绍spring boot+mybat-plus如何配置多个数据源,并实现数据操作测试。

2 项目配置

不多说,项目代码直接搞起来。先创建一个集成了mybatis-plus的spring boot的项目,关于如何创建,及mybatis-plus的更多使用,请关注小编其他的文章。

先在pom.xml导入项目依赖,如下图。

需要注意的是,这里用了druid和aop两个依赖。

然后在配置文件配置主从数据源,实际项目可以让master用来写,slave用来读。

3 数据源配置

创建一个multiple包,新建DataSourceContextHolder类,配置数据源的上下文,如下图。

在同包下创建MultipleDataSource类,继承AbstractRoutingDataSource,如下图。

再创建一个config包,添加druid配置文件类,如下图。这里请注意,在pom.xml引入druid的版本必须是1.1.9,否则会出错。

创建数据源枚举,如下图。

创建数据源注解,用于设置接口所用哪个数据源。创建一个annotation包,包下创建注解接口,如下图。

对数据源选择进行切面处理,创建AOP,在数据源切换时进行日志输出。

最后的配置,在config包下,创建MyBatiesPlusConfiguration,进行如下配置。

4 创建实体类,dao层,service层

在entity包下创建一个Goods实体类,添加@Data注解;在mapper包下创建GoodsMapper接口,添加@Mapper注解;在service包下创建GoodServcie注解,添加@Service注解,在service里面分别创建两对添加商品和查询商品的接口,分别加上@DataSource注解,分别对应DataSourceEnum.db1和DataSourceEnum.db2的数据源注解,分别对两个不同的数据源进行操作。

5 测试效果

在测试用例添加一个测试方法,分别给db1,db2插入一条商品数据,然后在分别将两个不同的数据库数据查询出来。测试项目是否正常切换表操作两个数据库的数据。

通过测试。

6 结束语

人人都是程序员,感谢您的阅读,欢迎关注。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200226A08K9B00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券