# 创建分库与分表
创建两个数据库【order_db_1、order_db_2】。
 然后在两个数据库下分别创建三个表【orders_1、orders_2、orders_3】。
 建表sql请参考:
CREATE TABLE `orders_1`  (
  `id` bigint NOT NULL,
  `order_type` varchar(255) NULL DEFAULT NULL,
  `customer_id` bigint NULL DEFAULT NULL,
  `amount` double NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) 
ENGINE = InnoDB

# 下面开始写测试代码:
【pom.xml】
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.3.12.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <version>2.3.12.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.0</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3.1</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-core</artifactId>
    <version>3.4.3.1</version>
</dependency>
<dependency>
    <groupId>org.apache.shardingsphere</groupId>
    <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
    <version>4.1.1</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.22</version>
</dependency>
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.3.0</version>
</dependency>
<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.0.49</version>
</dependency>
【application.properties】
server.port=8080
spring.application.name=myShardingSphere
management.server.port=8080
management.endpoints.web.exposure.include=*
########################################
management.health.db.enabled=false
management.health.elasticsearch.enabled=false
mybatis-plus.mapper-locations=classpath:mapper/*.xml
mybatis-plus.type-aliases-package=test/persistence/mapper
##########################################################
spring.shardingsphere.datasource.names=ds-order-db-1, ds-order-db-2
######################################################
# 数据源
spring.shardingsphere.datasource.ds-order-db-1.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.ds-order-db-1.driver-class-name=com.mysql.jdbc.Driver
spring.shardingsphere.datasource.ds-order-db-1.url=jdbc:mysql://192.168.44.228:3306/order_db_1
spring.shardingsphere.datasource.ds-order-db-1.username=root
spring.shardingsphere.datasource.ds-order-db-1.password=root
spring.shardingsphere.datasource.ds-order-db-2.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.ds-order-db-2.driver-class-name=com.mysql.jdbc.Driver
spring.shardingsphere.datasource.ds-order-db-2.url=jdbc:mysql://192.168.44.228:3306/order_db_2
spring.shardingsphere.datasource.ds-order-db-2.username=root
spring.shardingsphere.datasource.ds-order-db-2.password=root
#################################################
# table
spring.shardingsphere.sharding.tables.orders.actual-data-nodes=ds-order-db-${1..2}.orders_${1..3}
spring.shardingsphere.sharding.tables.orders.database-strategy.inline.sharding-column=customer_id
spring.shardingsphere.sharding.tables.orders.database-strategy.inline.algorithm-expression=ds-order-db-$->{customer_id % 2 + 1}
spring.shardingsphere.sharding.tables.orders.table-strategy.inline.sharding-column=customer_id
spring.shardingsphere.sharding.tables.orders.table-strategy.inline.algorithm-expression=orders_${customer_id % 3 + 1}
##################################################
spring.shardingsphere.props.sql.show=true
################################################
【mapper/OrdersMapper.xml】
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.chz.myShardingSphere.persistence.mapper.OrdersMapper">
    <resultMap id="orders" type="com.chz.myShardingSphere.persistence.po.Orders">
        <id column="id" property="id" />
        <result column="orderType" property="order_type" />
        <result column="customerId" property="customer_id" />
        <result column="amount" property="amount" />
    </resultMap>
    <select id="testSelectOrder" parameterType="long" resultMap="orders">
        SELECT *
        FROM orders
        <where>
            <if test="customerId!=null">
                and customer_id = #{customerId}
            </if>
        </where>
        order by id
        LIMIT 10 OFFSET 0
    </select>
</mapper>
【TestController.java】
package com.chz.myShardingSphere.controller;
@Slf4j
@RestController
@RequestMapping("/test")
public class TestController {
    @Value("${spring.application.name}")
    private String applicationName;
    @Autowired
    private TestService testService;
    @GetMapping("/testAddOrder")
    public String testAddOrder(
            @RequestParam(value = "id", defaultValue = "1") Long id
    ) {
        testService.testAddOrder(id);
        return "testAddOrder";
    }
    @GetMapping("/testSelectOrder")
    public String testSelectOrder(
            @RequestParam(value = "customerId", required = false) Long customerId
    ) {
        List<Orders> orders = testService.testSelectOrder(customerId);
        return JSON.toJSONString(orders);
    }
    @GetMapping("/testDeleteOrder")
    public String testDeleteOrder() {
        testService.testDeleteOrder();
        return "success";
    }
}
【OrdersMapper.java】
package com.chz.myShardingSphere.persistence.mapper;
@Repository
@Mapper
public interface OrdersMapper extends BaseMapper<Orders>
{
    List<Orders> testSelectOrder(@Param("customerId") Long customerId);
}
【Orders.java】
package com.chz.myShardingSphere.persistence.po;
@Getter
@Setter
public class Orders {
    private Long id;
    private Long orderType;
    private Long customerId;
    private Double amount;
    @Override
    public String toString() {
        return "Orders{" +
                "id=" + id +
                ", orderType=" + orderType +
                ", customerId=" + customerId +
                ", amount=" + amount +
                '}';
    }
}
【TestService.java】
package com.chz.myShardingSphere.server;
@Service
public class TestService {
    @Autowired
    private OrdersMapper ordersMapper;
    @Transactional
    public void testAddOrder(long id)
    {
        Orders orders = new Orders();
        orders.setId(id);
        orders.setCustomerId(id);
        orders.setOrderType(id);
        orders.setAmount((double)id);
        ordersMapper.insert(orders);
    }
    @Transactional
    public List<Orders> testSelectOrder(Long customerId)
    {
        List<Orders> orders = ordersMapper.testSelectOrder(customerId);
        return orders;
    }
    @Transactional
    public void testDeleteOrder()
    {
        LambdaQueryWrapper<Orders> queryWrapper = new LambdaQueryWrapper<>();
        ordersMapper.delete(queryWrapper);
    }
}
【MyShardingSphereTest.java】
package com.chz.myShardingSphere;
@SpringBootApplication
public class MyShardingSphereTest {
    public static void main(String[] args) {
        SpringApplication.run(MyShardingSphereTest.class, args);
    }
}
启动【MyShardingSphereTest】
# 下面进行测试:
访问以下url创建6条数据:
http://localhost:8080/test/testAddOrder?id=1
http://localhost:8080/test/testAddOrder?id=2
http://localhost:8080/test/testAddOrder?id=3
http://localhost:8080/test/testAddOrder?id=4
http://localhost:8080/test/testAddOrder?id=5
http://localhost:8080/test/testAddOrder?id=6
然后访问【http://localhost:8080/test/testSelectOrder】看下数据能不能查出来:
 
 可以看到数据都查出来了。
增加个条件试试,访问【http://localhost:8080/test/testSelectOrder?customerId=1】
 
 也运行正常














![[数据集][目标检测]攀墙攀越墙壁数据集VOC格式-701张](https://img-blog.csdnimg.cn/direct/83cc19079f2b41fc9bfe810f0dd961c6.png)




