Răsfoiți Sursa

新增分库分表 以及 广播表 单表

赵冬冬 3 ani în urmă
părinte
comite
e6c50f5ace

+ 11 - 55
db/sharding0.sql

@@ -11,80 +11,36 @@
  Target Server Version : 50734
  File Encoding         : 65001
 
- Date: 17/02/2022 15:13:14
+ Date: 18/02/2022 17:08:45
 */
 
 SET NAMES utf8mb4;
 SET FOREIGN_KEY_CHECKS = 0;
 
 -- ----------------------------
--- Table structure for t_order_2022
+-- Table structure for t_dict
 -- ----------------------------
-DROP TABLE IF EXISTS `t_order_2022`;
-CREATE TABLE `t_order_2022`  (
+DROP TABLE IF EXISTS `t_dict`;
+CREATE TABLE `t_dict`  (
   `id` bigint(18) NOT NULL COMMENT '主键',
-  `user_id` bigint(18) NOT NULL COMMENT '用户id',
-  `order_num` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单编号',
-  `money` decimal(20, 0) NULL DEFAULT NULL COMMENT '订单金额',
-  `year` int(10) NULL DEFAULT NULL COMMENT '新增年份',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '新增时间',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Records of t_order_2022
--- ----------------------------
-INSERT INTO `t_order_2022` VALUES (1494203246671671298, 1, '935', 438, 2022, '2022-01-03 00:00:00');
-INSERT INTO `t_order_2022` VALUES (1494203265957081090, 2, '669', 354, 2022, '2022-01-03 00:00:00');
-
--- ----------------------------
--- Table structure for t_order_2023
--- ----------------------------
-DROP TABLE IF EXISTS `t_order_2023`;
-CREATE TABLE `t_order_2023`  (
-  `id` bigint(18) NOT NULL COMMENT '主键',
-  `user_id` bigint(18) NOT NULL COMMENT '用户id',
-  `order_num` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单编号',
-  `money` decimal(20, 0) NULL DEFAULT NULL COMMENT '订单金额',
-  `year` int(10) NULL DEFAULT NULL COMMENT '新增年份',
+  `t_name` varchar(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
+  `t_key` varchar(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'key',
+  `t_value` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'value',
   `create_time` datetime(0) NULL DEFAULT NULL COMMENT '新增时间',
   PRIMARY KEY (`id`) USING BTREE
 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
 
 -- ----------------------------
--- Table structure for t_user_2022
+-- Table structure for t_user
 -- ----------------------------
-DROP TABLE IF EXISTS `t_user_2022`;
-CREATE TABLE `t_user_2022`  (
+DROP TABLE IF EXISTS `t_user`;
+CREATE TABLE `t_user`  (
   `id` bigint(18) NOT NULL AUTO_INCREMENT COMMENT '主键',
   `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名',
   `age` int(11) NULL DEFAULT NULL COMMENT '年龄',
   `year` int(10) NULL DEFAULT NULL COMMENT '新增年份',
   `create_time` datetime(0) NULL DEFAULT NULL COMMENT '新增时间',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Records of t_user_2022
--- ----------------------------
-INSERT INTO `t_user_2022` VALUES (4, 'Rubenmouth', 824, 2022, '2022-02-03 00:00:00');
-
--- ----------------------------
--- Table structure for t_user_2023
--- ----------------------------
-DROP TABLE IF EXISTS `t_user_2023`;
-CREATE TABLE `t_user_2023`  (
-  `id` bigint(18) NOT NULL AUTO_INCREMENT COMMENT '主键',
-  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名',
-  `age` int(11) NULL DEFAULT NULL COMMENT '年龄',
-  `year` int(10) NULL DEFAULT NULL COMMENT '新增年份',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '新增时间',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Records of t_user_2023
--- ----------------------------
-INSERT INTO `t_user_2023` VALUES (2, 'Carlsbad', 829, 2023, '2023-02-03 00:00:00');
+) ENGINE = InnoDB AUTO_INCREMENT = 773 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
 
 SET FOREIGN_KEY_CHECKS = 1;

+ 16 - 47
db/sharding1.sql

@@ -11,12 +11,25 @@
  Target Server Version : 50734
  File Encoding         : 65001
 
- Date: 17/02/2022 15:13:24
+ Date: 18/02/2022 17:08:55
 */
 
 SET NAMES utf8mb4;
 SET FOREIGN_KEY_CHECKS = 0;
 
+-- ----------------------------
+-- Table structure for t_dict
+-- ----------------------------
+DROP TABLE IF EXISTS `t_dict`;
+CREATE TABLE `t_dict`  (
+  `id` bigint(18) NOT NULL COMMENT '主键',
+  `t_name` varchar(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
+  `t_key` varchar(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'key',
+  `t_value` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'value',
+  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '新增时间',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+
 -- ----------------------------
 -- Table structure for t_order_2022
 -- ----------------------------
@@ -26,16 +39,12 @@ CREATE TABLE `t_order_2022`  (
   `user_id` bigint(18) NOT NULL COMMENT '用户id',
   `order_num` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单编号',
   `money` decimal(20, 0) NULL DEFAULT NULL COMMENT '订单金额',
+  `dict_key` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '数据字典表',
   `year` int(10) NULL DEFAULT NULL COMMENT '新增年份',
   `create_time` datetime(0) NULL DEFAULT NULL COMMENT '新增时间',
   PRIMARY KEY (`id`) USING BTREE
 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
 
--- ----------------------------
--- Records of t_order_2022
--- ----------------------------
-INSERT INTO `t_order_2022` VALUES (1494203283296333825, 3, '555', 289, 2022, '2022-01-03 00:00:00');
-
 -- ----------------------------
 -- Table structure for t_order_2023
 -- ----------------------------
@@ -45,50 +54,10 @@ CREATE TABLE `t_order_2023`  (
   `user_id` bigint(18) NOT NULL COMMENT '用户id',
   `order_num` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单编号',
   `money` decimal(20, 0) NULL DEFAULT NULL COMMENT '订单金额',
+  `dict_key` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '数据字典表',
   `year` int(10) NULL DEFAULT NULL COMMENT '新增年份',
   `create_time` datetime(0) NULL DEFAULT NULL COMMENT '新增时间',
   PRIMARY KEY (`id`) USING BTREE
 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
 
--- ----------------------------
--- Records of t_order_2023
--- ----------------------------
-INSERT INTO `t_order_2023` VALUES (1494203317718986753, 4, '907', 341, 2023, '2023-01-03 00:00:00');
-
--- ----------------------------
--- Table structure for t_user_2022
--- ----------------------------
-DROP TABLE IF EXISTS `t_user_2022`;
-CREATE TABLE `t_user_2022`  (
-  `id` bigint(18) NOT NULL AUTO_INCREMENT COMMENT '主键',
-  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名',
-  `age` int(11) NULL DEFAULT NULL COMMENT '年龄',
-  `year` int(10) NULL DEFAULT NULL COMMENT '新增年份',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '新增时间',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Records of t_user_2022
--- ----------------------------
-INSERT INTO `t_user_2022` VALUES (3, 'Elisabethfurt', 900, 2022, '2022-02-03 00:00:00');
-
--- ----------------------------
--- Table structure for t_user_2023
--- ----------------------------
-DROP TABLE IF EXISTS `t_user_2023`;
-CREATE TABLE `t_user_2023`  (
-  `id` bigint(18) NOT NULL AUTO_INCREMENT COMMENT '主键',
-  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名',
-  `age` int(11) NULL DEFAULT NULL COMMENT '年龄',
-  `year` int(10) NULL DEFAULT NULL COMMENT '新增年份',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '新增时间',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Records of t_user_2023
--- ----------------------------
-INSERT INTO `t_user_2023` VALUES (1, 'Steuberhaven', 148, 2023, '2023-02-03 00:00:00');
-
 SET FOREIGN_KEY_CHECKS = 1;

+ 3 - 3
pom.xml

@@ -16,8 +16,8 @@
 
     <properties>
         <java.version>1.8</java.version>
-        <shardingsphere.version>4.0.0</shardingsphere.version>
-        <shardingsphere.spi.impl.version>4.0.0</shardingsphere.spi.impl.version>
+        <shardingsphere.version>4.1.1</shardingsphere.version>
+        <pagehelper.version>1.3.0</pagehelper.version>
         <jxls.version>2.3.0</jxls.version>
         <jxls-poi.version>1.0.11</jxls-poi.version>
         <jxls-jexcel.version>1.0.6</jxls-jexcel.version>
@@ -123,7 +123,7 @@
         <dependency>
             <groupId>com.github.pagehelper</groupId>
             <artifactId>pagehelper-spring-boot-starter</artifactId>
-            <version>1.2.10</version>
+            <version>${pagehelper.version}</version>
         </dependency>
         <dependency>
             <groupId>junit</groupId>

+ 2 - 0
src/main/java/com/xin/shardingspherejdbcdemo/mapper/OrderMapper.java

@@ -3,10 +3,12 @@ package com.xin.shardingspherejdbcdemo.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xin.shardingspherejdbcdemo.entity.Order;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
 
 @Mapper
 public interface OrderMapper extends BaseMapper<Order> {
+    List<Map<String, String>> selectOrderByid(@Param("userId") Long userId);
 }

+ 0 - 1
src/main/java/com/xin/shardingspherejdbcdemo/mapper/UserMapper.java

@@ -11,5 +11,4 @@ import java.util.Map;
 @Mapper
 public interface UserMapper extends BaseMapper<User> {
 
-    List<Map<String, String>> selectOrderByid(@Param("userId") Long userId);
 }

+ 1 - 1
src/main/java/com/xin/shardingspherejdbcdemo/service/impl/JdbcServiceImpl.java

@@ -8,10 +8,10 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.compress.utils.Sets;
 import org.apache.ibatis.javassist.Modifier;
 
-import org.apache.shardingsphere.core.rule.DataNode;
 import org.apache.shardingsphere.core.rule.ShardingRule;
 import org.apache.shardingsphere.core.rule.TableRule;
 import org.apache.shardingsphere.shardingjdbc.jdbc.core.datasource.ShardingDataSource;
+import org.apache.shardingsphere.underlying.common.rule.DataNode;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;

+ 15 - 6
src/main/java/com/xin/shardingspherejdbcdemo/service/impl/UserServiceImpl.java

@@ -17,6 +17,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 
+import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -39,13 +41,13 @@ public class UserServiceImpl implements UserService {
         if(!StringUtils.isEmpty(year)){
             queryWrapper.eq("year", year);
         }
-        int count = userMapper.selectCount(queryWrapper);
+        //int count = userMapper.selectCount(queryWrapper);
         queryWrapper.orderByDesc("create_time");
         queryWrapper.orderByAsc("age");
         PageHelper.startPage(pageNum, pageSize);
         List<User> list = userMapper.selectList(queryWrapper);
-
-        return PageVo.data(list, count);
+        long total = new PageInfo(list).getTotal();
+        return PageVo.data(list, total);
     }
 
 
@@ -91,11 +93,18 @@ public class UserServiceImpl implements UserService {
 
     @Override
     public Object selectOrder(Long userId, int pageNum, int pageSize, String name) {
+        Map<String,Object> map=new LinkedHashMap<>();
+        User user = userMapper.selectById(userId);
+
+        List<Map<String, String>> list = list(userId, pageNum, pageSize);
+        map.put("user",user);
+        map.put("orders",list);
+        return map;
+    }
+    public List<Map<String, String>> list(Long userId,int pageNum, int pageSize){
         //PageHelper.startPage(pageNum, pageSize);
-        List<Map<String, String>> list = userMapper.selectOrderByid(userId);
-        //long total = new PageInfo(list).getTotal();
+        List<Map<String, String>> list = orderMapper.selectOrderByid(userId);
         return list;
     }
 
-
 }

+ 17 - 0
src/main/resources/mapper/OrderMapper.xml

@@ -0,0 +1,17 @@
+<?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.xin.shardingspherejdbcdemo.mapper.OrderMapper" >
+
+
+    <select id="selectOrderByid" resultType="java.util.Map">
+        SELECT distinct
+            b.order_num,
+            b.money,
+            b.create_time
+        FROM
+            t_order_ b
+        WHERE
+            b.user_id=#{userId}  order by b.create_time desc limit 1,10
+
+    </select>
+</mapper>

+ 0 - 11
src/main/resources/mapper/UserMapper.xml

@@ -3,15 +3,4 @@
 <mapper namespace="com.xin.shardingspherejdbcdemo.mapper.UserMapper" >
 
 
-    <select id="selectOrderByid" resultType="java.util.Map">
-        SELECT distinct
-            b.order_num,
-            b.money,
-            b.create_time
-        FROM
-            t_order_ b
-        WHERE
-            b.user_id=#{userId} order by b.create_time desc
-
-    </select>
 </mapper>