Kaynağa Gözat

固定一个版本

赵冬冬 3 yıl önce
ebeveyn
işleme
bc5a4593ef

+ 6 - 6
src/main/java/com/xin/shardingspherejdbcdemo/config/sharding/TableShardingAlgorithm.java

@@ -17,9 +17,9 @@ import java.util.Date;
  */
 @Slf4j
 @Component
-public class TableShardingAlgorithm implements PreciseShardingAlgorithm<Date> {
+public class TableShardingAlgorithm implements PreciseShardingAlgorithm<Integer> {
     @Override
-    public String doSharding(Collection<String> availableTargetNames, PreciseShardingValue<Date> shardingValue) {
+    public String doSharding(Collection<String> availableTargetNames, PreciseShardingValue<Integer> shardingValue) {
 
         System.out.println("table PreciseShardingAlgorithm ");
         // 真实节点
@@ -37,10 +37,10 @@ public class TableShardingAlgorithm implements PreciseShardingAlgorithm<Date> {
 
 
         // 根据当前日期 来 分库分表
-        Date date = shardingValue.getValue();
-        String year = String.format("%tY", date);
-        String mon =String.valueOf(Integer.parseInt(String.format("%tm", date))); // 去掉前缀0
-        String dat = String.format("%td", date);
+        Integer year = shardingValue.getValue();
+        //String year = String.format("%tY", date);
+        //String mon =String.valueOf(Integer.parseInt(String.format("%tm", date))); // 去掉前缀0
+        //String dat = String.format("%td", date);
 
 
         // 选择表

+ 2 - 2
src/main/java/com/xin/shardingspherejdbcdemo/controller/UserController.java

@@ -47,8 +47,8 @@ public class UserController {
     }
 
     @GetMapping("/list")
-    public AjaxVo listUser(int pageNum, int pageSize, String name, Integer age) {
-        PageVo data = userService.list(pageNum, pageSize, name, age);
+    public AjaxVo listUser(int pageNum, int pageSize, String name, Integer age,Integer year) {
+        PageVo data = userService.list(pageNum, pageSize, name, age,year);
         return AjaxVo.success(data);
     }
 

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

@@ -13,7 +13,7 @@ public interface UserService {
     /**
      * 获取所有用户信息
      */
-    PageVo list(int pageNum, int pageSize, String name, Integer age);
+    PageVo list(int pageNum, int pageSize, String name, Integer age,Integer year);
 
 
     /**

+ 12 - 4
src/main/java/com/xin/shardingspherejdbcdemo/service/impl/UserServiceImpl.java

@@ -11,6 +11,7 @@ import com.xin.shardingspherejdbcdemo.entity.vo.PageVo;
 import com.xin.shardingspherejdbcdemo.mapper.OrderMapper;
 import com.xin.shardingspherejdbcdemo.mapper.UserMapper;
 import com.xin.shardingspherejdbcdemo.service.UserService;
+import com.xin.shardingspherejdbcdemo.utils.EntityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -26,14 +27,17 @@ public class UserServiceImpl implements UserService {
     private UserMapper userMapper;
 
     @Override
-    public PageVo list(int pageNum, int pageSize, String name, Integer age) {
+    public PageVo list(int pageNum, int pageSize, String name, Integer age,Integer year) {
         QueryWrapper queryWrapper = new QueryWrapper();
         queryWrapper.like("name", name);
         queryWrapper.le("age", age);
+        queryWrapper.eq("year", year);
         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);
     }
 
@@ -42,6 +46,8 @@ public class UserServiceImpl implements UserService {
     public User save(User user) {
         SnowFlake snowFlake = new SnowFlake(2, 3);
         user.setId(snowFlake.nextId());
+        int year = EntityUtils.dateTostr(user.getCreateTime());
+        user.setYear(year);
         userMapper.insert(user);
         return user;
     }
@@ -73,6 +79,8 @@ public class UserServiceImpl implements UserService {
     public Object order(Order order) {
         SnowFlake snowFlake = new SnowFlake(2, 3);
         order.setId(snowFlake.nextId());
+        int year = EntityUtils.dateTostr(order.getCreateTime());
+        order.setYear(year);
         orderMapper.insert(order);
         return order;
     }
@@ -80,10 +88,10 @@ public class UserServiceImpl implements UserService {
 
     @Override
     public Object selectOrder(Long userId, int pageNum, int pageSize, String name) {
-        PageHelper.startPage(pageNum, pageSize);
+        //PageHelper.startPage(pageNum, pageSize);
         List<Map<String, String>> list = userMapper.selectOrderByid(userId);
-        long total = new PageInfo(list).getTotal();
-        return PageVo.data(list, total);
+        //long total = new PageInfo(list).getTotal();
+        return list;
     }
 
 

+ 20 - 0
src/main/java/com/xin/shardingspherejdbcdemo/utils/EntityUtils.java

@@ -0,0 +1,20 @@
+package com.xin.shardingspherejdbcdemo.utils;
+
+import java.util.Calendar;
+import java.util.Date;
+
+public class EntityUtils {
+
+    public static int dateTostr(Date date){
+        Calendar ca = Calendar.getInstance();
+        ca.setTime(date);
+        int i = ca.get(Calendar.YEAR);
+        return i;
+    }
+
+    public static void main(String[] args) {
+        Long num=6913698505050151L;
+        long l = num % 2;
+        System.out.println(l);
+    }
+}

+ 2 - 2
src/main/resources/application-dev.yml

@@ -46,13 +46,13 @@ spring:
           actual-data-nodes: sharding-user.t_user_$->{2022}
           table-strategy:
             standard:
-              sharding-column: create_time
+              sharding-column: year
               precise-algorithm-class-name: com.xin.shardingspherejdbcdemo.config.sharding.TableShardingAlgorithm
         t_order_:
           actual-data-nodes: sharding-user.t_order_$->{2022}
           table-strategy:
             standard:
-              sharding-column: create_time
+              sharding-column: year
               precise-algorithm-class-name: com.xin.shardingspherejdbcdemo.config.sharding.TableShardingAlgorithm
     #打印sql
     props:

+ 35 - 26
src/main/resources/db1.sql

@@ -1,38 +1,47 @@
 /*
-Navicat MySQL Data Transfer
+ Navicat Premium Data Transfer
 
-Source Server         : 自己的百度云mysql
-Source Server Version : 50732
-Source Host           : 182.61.59.216:3306
-Source Database       : db1
+ Source Server         : 自己的阿里云3年mysql
+ Source Server Type    : MySQL
+ Source Server Version : 50734
+ Source Host           : 47.108.115.128:3306
+ Source Schema         : sharding
 
-Target Server Type    : MYSQL
-Target Server Version : 50732
-File Encoding         : 65001
+ Target Server Type    : MySQL
+ Target Server Version : 50734
+ File Encoding         : 65001
 
-Date: 2020-12-31 15:35:47
+ Date: 15/02/2022 14:03:40
 */
 
-SET FOREIGN_KEY_CHECKS=0;
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
 
 -- ----------------------------
--- Table structure for user0
+-- Table structure for t_order_2022
 -- ----------------------------
-DROP TABLE IF EXISTS `user_2022`;
-CREATE TABLE `user_2022` (
-  `id` bigint(18) NOT NULL AUTO_INCREMENT,
-  `name` varchar(10) DEFAULT NULL,
-  `age` int(11) DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=126 DEFAULT CHARSET=utf8mb4;
+DROP TABLE IF EXISTS `t_order_2022`;
+CREATE TABLE `t_order_2022`  (
+  `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;
 
 -- ----------------------------
--- Table structure for user1
+-- Table structure for t_user_2022
 -- ----------------------------
-DROP TABLE IF EXISTS `user1`;
-CREATE TABLE `user1` (
-  `id` bigint(11) NOT NULL AUTO_INCREMENT,
-  `name` varchar(10) DEFAULT NULL,
-  `age` int(11) DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=utf8mb4;
+DROP TABLE IF EXISTS `t_user_2022`;
+CREATE TABLE `t_user_2022`  (
+  `id` bigint(18) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `name` varchar(10) 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 = 690656230599045121 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+
+SET FOREIGN_KEY_CHECKS = 1;

+ 1 - 1
src/main/resources/mapper/UserMapper.xml

@@ -12,7 +12,7 @@
             b.create_time
         FROM
             t_user_ a
-            JOIN t_order_ b ON a.id = b.user_id
+            LEFT JOIN t_order_ b ON a.id = b.user_id
         WHERE
             a.id=#{userId} order by b.create_time desc