ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

sharding+mybatisplus单库分表部署

2021-09-23 18:35:10  阅读:192  来源: 互联网

标签:mybatisplus testPojo jsctest test 单库 mysql sharding com


sharding+mybatisplus单库分表部署

sharding和Mybatisplus对版本兼容问题非常敏感,以下版本是在冲浪中得知,测试无错,若还有报错,请降低springboot版本,本次springboot测试为 2.4.3版本

  1. pom.xml

    <!-- 这个druid连接池非常重要,自己测试时候 ,这是必须品 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.21</version>
    </dependency>
    <!-- springboot sharding start -->
    <dependency>
        <groupId>org.apache.shardingsphere</groupId>
        <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
        <version>4.0.0-RC2</version>
    </dependency>
    <!-- for spring namespace -->
    <dependency>
        <groupId>org.apache.shardingsphere</groupId>
        <artifactId>sharding-jdbc-spring-namespace</artifactId>
        <version>4.0.0-RC2</version>
    </dependency>
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.3.1.tmp</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    
  2. application.yml

    spring:
      shardingsphere:
        props:
          sql.show: true
        datasource:
          #指定库
          names: jsctest
          #设置数据库信息
          jsctest:
            type: com.alibaba.druid.pool.DruidDataSource
            url: jdbc:mysql://localhost:3306/jsctest?useJDBCCompliantTimezoneShift=true&serverTimezone=UTC&useUncode=true&characterEncoding=UTF-8
            driver-class-name: com.mysql.cj.jdbc.Driver
            username: root
            password: 123
        sharding:
        #表
          tables:
          #虚拟表名test
            test:
            #真实表名逻辑,此处为test0,test1,test2
              actual-data-nodes: jsctest.test$->{0..2}
              #指定分表策略
              table-strategy:
                inline:
                #指定策略字段
                  sharding-column: id
                  #test+字段Id%3是真实表名,假如字段Id为2,则插入test1表
                  algorithm-expression: test$->{id % 3}
    
    #指定mapper,pojo包
    mybatis-plus:
      mapper-locations: classpath:mapper/*.xml
      type-aliases-package: com.example.test.test.Pojo
    
  3. Pojo实体类

    /**
     * @Author: 王居三木超
     * @Description: TODO
     * @DateTime: 2021/9/23 17:02
     **/
    @Data
    @TableName("test")//虚拟表名
    public class testPojo implements Serializable {
        //雪花Id
        @TableId(type = IdType.ASSIGN_ID)
        @JsonFormat(shape = JsonFormat.Shape.STRING)
        private Long id;
        private String name;
    }
    
  4. Dao

    /**
     * @Author: 王居三木超
     * @Description: TODO
     * @DateTime: 2021/9/23 17:01
     **/
    @Mapper
    @Repository
    public interface test extends BaseMapper<testPojo> {
    }
    
  5. Test测试类

    @SpringBootTest
    class TestApplicationTests {
    
        @Autowired
        test test;
    
        @Test
        void contextLoads() {
            for (int i = 0; i < 100; i++) {
                testPojo testPojo = new testPojo();
                testPojo.setName(i + "");
                test.insert(testPojo);
            }
        }
    }
    
  6. 表test0

    image-20210923181013876

    表test1

    表test2

    image-20210923181027662

    成功!~~

标签:mybatisplus,testPojo,jsctest,test,单库,mysql,sharding,com
来源: https://www.cnblogs.com/hmcjsc/p/15325448.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有