SpringBoot 项目配置多数据源

​一件事情,做可能很容易;但坚持一定很难。

 

    之前的Bug分享区,好像每周没那么多可以分享的。那这个模块从这期开始就得“改朝换代”,毕竟物竞天择,适者生存。

    自我怀疑区,也就是一些算法题,看似很简单,实则大家尽情发挥,有些题一定会让你自己怀疑你自己是不是个程序员

    每篇都会以题目开始,个人解答的答案结尾,如果你有更好的方式,在执行效率和性能上更优,跪求指点。

 

自我怀疑区

题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:

输入: 123

输出: 321

 

示例 2:

输入: -123

输出: -321

 

示例 3:

输入: 120

输出: 21

 

注意:

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

 

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/reverse-integer

 

正文

    日常开发中,一个项目需要查询跨库的场景还是很多的,可能基于大数据必须的分库分表,又或者历史遗留问题,数据还无法完全解耦。就需要一个微服务配置多个数据源来进行数据的CRUD。当然使用传统的Connection也可以做这个事。

Connection conn = DriverManager.getConnection(url,username,password);

    但是,既然是基于微服务(SpringBoot)的开发,本篇推荐一种更友好的方式。

 

    新建一个springboot项目

    pom.xml:

    <dependency>      <groupId>mysql</groupId>      <artifactId>mysql-connector-java</artifactId>      <scope>runtime</scope>    </dependency>    <dependency>        <groupId>com.baomidou</groupId>        <artifactId>mybatis-plus-boot-starter</artifactId>        <version>3.3.0</version>    </dependency>    <dependency>      <groupId>com.baomidou</groupId>      <artifactId>dynamic-datasource-spring-boot-starter</artifactId>      <version>2.5.8</version>    </dependency>

application.yml:

#端口server:  port: 1234#=======数据源配置=========spring:  datasource:    dynamic:      primary: master #这里需要配置一个主的数据源      strict: false      datasource:        master: #数据源1  这里名称可以随便定义,上面primary要保持一致          url: jdbc:mysql://localhost:3306/localDB?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8          username: root          password: root          driver-class-name: com.mysql.cj.jdbc.Driver        slave_1: #数据源2          url: jdbc:mysql://localhost:3307/needs_manage?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8          username: root          password: xiaobei@2020          driver-class-name: com.mysql.cj.jdbc.Driver#=======配置sql打印日志==========logging:  level:    org.springframework.jdbc.core.JdbcTemplate: DEBUG

 

通过mybatis-plus自动生成代码,生成所有层,生成完毕,来添加注解。

serviceImpl层:(忽略掉Redis部分,不是本篇内容)

添加:@DS("master"),也就是配置文件中自定义的数据源名称。

 

 

再看一下从数据源(slave):

 

这里有一点,就是我在类和方法上都添加了@DS注释,这里不要产生误解,是不是必须得这么写?

当然不是的,我这么写的目的就是为了讲解而已!!!!

@DS 可以注解在方法上和类上,同时存在方法注解优先于类上注解。

强烈建议只注解在service实现上。

 

所有的CRUD都是通过 JdbcTemplate 来实现

@Autowiredprivate JdbcTemplate jdbcTemplate;

总结:简单、快捷、有效。

 

以上把该写的都写完整就OK了(大家都作为CRUD程序员,其它我就不贴代码了

 

一切就绪,写个Controller简单的测试一下。

 

启动项目,先看下控制台日志,启动成功,同时配置的数据源也打印出来了。

 

接口测试:Everything is ok👌

 

 

参考答案

    public static int reverse(int x){        int res = 0;        while ( 0 != x){            int num = x % 10;            boolean existed = res > Integer.MAX_VALUE / 10 || (res == Integer.MAX_VALUE / 10 && num > 7);            if (existed)            {                return 0;            }            existed = res < Integer.MIN_VALUE / 10 || (res == Integer.MIN_VALUE / 10 && num < -8);            if (existed)            {                return 0;            }            res = res * 10 + num;            x = x / 10;        }        return res;    }

 

我这一定不是最好的,但是我所能够想到的方式,如果你有更好的,欢迎赐教~

 

end

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值