美文网首页spring boot
sharding jdbc + mybatis +spring

sharding jdbc + mybatis +spring

作者: 带着二娃去遛弯 | 来源:发表于2019-10-08 17:41 被阅读0次

    1.我们先建立数据库和表(分别建了两个库两张表):

    CREATE DATABASE `user_0` /*!40100 DEFAULT CHARACTER SET utf8 */;
    
    CREATE TABLE `user_info_1` (
      `user_id` bigint(19) NOT NULL,
      `user_name` varchar(45) DEFAULT NULL,
      `account` varchar(45) NOT NULL,
      `password` varchar(45) DEFAULT NULL,
      PRIMARY KEY (`user_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    CREATE TABLE `user_info_0` (
      `user_id` bigint(19) NOT NULL,
      `user_name` varchar(45) DEFAULT NULL,
      `account` varchar(45) NOT NULL,
      `password` varchar(45) DEFAULT NULL,
      PRIMARY KEY (`user_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    CREATE DATABASE `user_1` /*!40100 DEFAULT CHARACTER SET utf8 */;
    
    CREATE TABLE `user_info_1` (
      `user_id` bigint(19) NOT NULL,
      `user_name` varchar(45) DEFAULT NULL,
      `account` varchar(45) NOT NULL,
      `password` varchar(45) DEFAULT NULL,
      PRIMARY KEY (`user_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    CREATE TABLE `user_info_0` (
      `user_id` bigint(19) NOT NULL,
      `user_name` varchar(45) DEFAULT NULL,
      `account` varchar(45) NOT NULL,
      `password` varchar(45) DEFAULT NULL,
      PRIMARY KEY (`user_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    

    2.开始我们项目的建立,首先明确一点的,我们添加配置的顺序要有先后,思路要清晰,不然在你出错的时候,你都不知道朝哪个方向去思考,我们是spring boot+mybatis+sharding jdbc,我们首先是一个spring boot的项目,所以我们首先建立一个spring boot项目,你可以从https://start.spring.io这个网址去创建一个spring boot项目
    这个时候,你可以测试一下,你的spring boot项目能否正常启动,可以,你就进入到下一步的配置当中。
    3.mybatis的配置
    首先,看看我的源码的目录结构:

    image

    4.sharding jdbc的配置
    当你mybatis调整好了的时候,这个时候就该加sharding jdbc的配置了,接下如果出问题,应该先朝sharding jdbc的方向去考虑.
    从目录结构中我们可以看到,我有一个config包,我把我的配置都写在这里面的,首先,我们先实现我们的分库分表的策略
    分库策略的类,DemoDatabaseShardingAlgorithm


    image.png

    使用io.shardingjdbc,就应该实现PreciseShardingAlgorithm接口,然后实现doSharding方法,对应SQL中的=, IN,还有RangeShardingAlgorithm接口中,对应SQL中的BETWEEN AND,因为我只需要=,in操作,所以只实现了PreciseShardingAlgorithm接口,你如果都需要,你可以都实现。

    分表策略的类,DemoTableShardingAlgorithm


    image.png

    剩下的就是最重要的部分,sharding jdbc的配置:
    DataSourceConfig:

    image.png
    image.png
    image.png

    当你遇到一个问题:意思差不多是,需要一个数据源,但是发现好几个,你可以在
    getShardingDataSource()这个方法上添加注解:@Primary,设置默认数据源
    还有一个重中之重的部分,在Applicatian这个启动类中:加上注解
    @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
    @EnableTransactionManagement(proxyTargetClass = true)
    主要是为了防止代码的自动配置


    image.png

    5.测试
    我写了一个测试服务和一个测试类
    测试服务:DemoService


    image.png

    测试类DemoApplicationTests


    image.png

    源码地址:
    https://github.com/TheWays/sharding-jdbc

    相关文章

      网友评论

        本文标题:sharding jdbc + mybatis +spring

        本文链接:https://www.haomeiwen.com/subject/dqmbpctx.html