Commit 2cedf979c3ebe692bc0446a16ceff26d48cfb74a
1 parent
b9c0240c
JeecgBoot3.2.0 版本发布 [优化微服务模块]
Showing
35 changed files
with
103 additions
and
41 deletions
jeecg-boot/jeecg-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/config/GatewayRoutersConfiguration.java
... | ... | @@ -2,6 +2,7 @@ package org.jeecg.config; |
2 | 2 | |
3 | 3 | import lombok.extern.slf4j.Slf4j; |
4 | 4 | import org.springframework.beans.factory.annotation.Value; |
5 | +import org.springframework.cloud.context.config.annotation.RefreshScope; | |
5 | 6 | import org.springframework.context.annotation.Bean; |
6 | 7 | import org.springframework.context.annotation.Configuration; |
7 | 8 | import org.springframework.http.MediaType; |
... | ... | @@ -19,11 +20,9 @@ import static org.springframework.web.reactive.function.server.ServerResponse.ok |
19 | 20 | */ |
20 | 21 | @Slf4j |
21 | 22 | @Configuration |
23 | +@RefreshScope | |
22 | 24 | public class GatewayRoutersConfiguration { |
23 | - /** | |
24 | - * 路由配置方式:database,yml,nacos | |
25 | - */ | |
26 | - public static String DATA_TYPE; | |
25 | + | |
27 | 26 | public static final long DEFAULT_TIMEOUT = 30000; |
28 | 27 | public static String SERVER_ADDR; |
29 | 28 | public static String NAMESPACE; |
... | ... | @@ -52,10 +51,6 @@ public class GatewayRoutersConfiguration { |
52 | 51 | ROUTE_GROUP = routeGroup; |
53 | 52 | } |
54 | 53 | |
55 | - @Value("${jeecg.route.config.data-type:#{null}}") | |
56 | - public void setDataType(String dataType) { | |
57 | - DATA_TYPE = dataType; | |
58 | - } | |
59 | 54 | |
60 | 55 | @Value("${spring.cloud.nacos.config.username}") |
61 | 56 | public void setUsername(String username) { |
... | ... |
jeecg-boot/jeecg-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/config/RouterDataType.java
jeecg-boot/jeecg-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/fallback/sentinel/GatewaySentinelExceptionConfig.java
... | ... | @@ -33,7 +33,7 @@ public class GatewaySentinelExceptionConfig { |
33 | 33 | } else { |
34 | 34 | msg = "未知限流降级"; |
35 | 35 | } |
36 | - HashMap<String, String> map = new HashMap(); | |
36 | + HashMap<String, String> map = new HashMap(5); | |
37 | 37 | map.put("code", HttpStatus.TOO_MANY_REQUESTS.toString()); |
38 | 38 | map.put("message", msg); |
39 | 39 | //自定义异常处理 |
... | ... |
jeecg-boot/jeecg-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/filter/GlobalAccessTokenFilter.java
... | ... | @@ -30,22 +30,17 @@ public class GlobalAccessTokenFilter implements GlobalFilter, Ordered { |
30 | 30 | |
31 | 31 | @Override |
32 | 32 | public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { |
33 | - String url = exchange.getRequest().getURI().getPath(); | |
34 | -// log.info(" access url : "+ url); | |
35 | 33 | |
36 | 34 | String scheme = exchange.getRequest().getURI().getScheme(); |
37 | 35 | String host = exchange.getRequest().getURI().getHost(); |
38 | 36 | int port = exchange.getRequest().getURI().getPort(); |
39 | 37 | String basePath = scheme + "://" + host + ":" + port; |
40 | -// log.info(" base path : "+ basePath); | |
41 | - | |
42 | 38 | // 1. 重写StripPrefix(获取真实的URL) |
43 | 39 | addOriginalRequestUrl(exchange, exchange.getRequest().getURI()); |
44 | 40 | String rawPath = exchange.getRequest().getURI().getRawPath(); |
45 | 41 | String newPath = "/" + Arrays.stream(StringUtils.tokenizeToStringArray(rawPath, "/")).skip(1L).collect(Collectors.joining("/")); |
46 | 42 | ServerHttpRequest newRequest = exchange.getRequest().mutate().path(newPath).build(); |
47 | 43 | exchange.getAttributes().put(GATEWAY_REQUEST_URL_ATTR, newRequest.getURI()); |
48 | - | |
49 | 44 | //2.将现在的request,添加当前身份 |
50 | 45 | ServerHttpRequest mutableReq = exchange.getRequest().mutate().header("Authorization-UserName", "").header(X_GATEWAY_BASE_PATH,basePath).build(); |
51 | 46 | ServerWebExchange mutableExchange = exchange.mutate().request(mutableReq).build(); |
... | ... |
jeecg-boot/jeecg-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/LoderRouderHandler.java
jeecg-boot/jeecg-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/swagger/MySwaggerResourceProvider.java
1 | 1 | package org.jeecg.handler.swagger; |
2 | 2 | |
3 | +import cn.hutool.core.util.ArrayUtil; | |
3 | 4 | import cn.hutool.core.util.ObjectUtil; |
4 | 5 | import com.alibaba.nacos.api.naming.NamingFactory; |
5 | 6 | import com.alibaba.nacos.api.naming.NamingService; |
... | ... | @@ -21,6 +22,8 @@ import java.util.Set; |
21 | 22 | |
22 | 23 | /** |
23 | 24 | * 聚合各个服务的swagger接口 |
25 | + * @author zyf | |
26 | + * @date: 2022/4/21 10:55 | |
24 | 27 | */ |
25 | 28 | @Component |
26 | 29 | @Slf4j |
... | ... | @@ -42,6 +45,11 @@ public class MySwaggerResourceProvider implements SwaggerResourcesProvider { |
42 | 45 | @Value("${spring.cloud.nacos.discovery.server-addr}") |
43 | 46 | private String serverAddr; |
44 | 47 | |
48 | + /** | |
49 | + * Swagger中需要排除的服务 | |
50 | + */ | |
51 | + private String[] excludeServiceIds=new String[]{"jeecg-cloud-monitor"}; | |
52 | + | |
45 | 53 | |
46 | 54 | /** |
47 | 55 | * 网关应用名称 |
... | ... | @@ -82,8 +90,8 @@ public class MySwaggerResourceProvider implements SwaggerResourcesProvider { |
82 | 90 | swaggerResource.setUrl(url); |
83 | 91 | swaggerResource.setSwaggerVersion("2.0"); |
84 | 92 | swaggerResource.setName(instance); |
85 | - //Swagger排除监控 | |
86 | - if(instance.indexOf("jeecg-cloud-monitor")==-1){ | |
93 | + //Swagger排除不展示的服务 | |
94 | + if(!ArrayUtil.contains(excludeServiceIds,instance)){ | |
87 | 95 | resources.add(swaggerResource); |
88 | 96 | } |
89 | 97 | } |
... | ... |
jeecg-boot/jeecg-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/swagger/SwaggerResourceController.java
jeecg-boot/jeecg-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/loader/DynamicRouteLoader.java
... | ... | @@ -21,6 +21,8 @@ import org.jeecg.config.RouterDataType; |
21 | 21 | import org.jeecg.loader.repository.DynamicRouteService; |
22 | 22 | import org.jeecg.loader.repository.MyInMemoryRouteDefinitionRepository; |
23 | 23 | import org.jeecg.loader.vo.MyRouteDefinition; |
24 | +import org.springframework.beans.factory.annotation.Value; | |
25 | +import org.springframework.cloud.context.config.annotation.RefreshScope; | |
24 | 26 | import org.springframework.cloud.gateway.event.RefreshRoutesEvent; |
25 | 27 | import org.springframework.cloud.gateway.filter.FilterDefinition; |
26 | 28 | import org.springframework.cloud.gateway.handler.predicate.PredicateDefinition; |
... | ... | @@ -49,6 +51,7 @@ import java.util.concurrent.Executor; |
49 | 51 | @Slf4j |
50 | 52 | @Component |
51 | 53 | @DependsOn({"gatewayRoutersConfiguration"}) |
54 | +@RefreshScope | |
52 | 55 | public class DynamicRouteLoader implements ApplicationEventPublisherAware { |
53 | 56 | |
54 | 57 | |
... | ... | @@ -57,6 +60,12 @@ public class DynamicRouteLoader implements ApplicationEventPublisherAware { |
57 | 60 | private DynamicRouteService dynamicRouteService; |
58 | 61 | private ConfigService configService; |
59 | 62 | private RedisUtil redisUtil; |
63 | + | |
64 | + /** | |
65 | + * 路由配置方式:database(数据库),yml(配置文件),nacos | |
66 | + */ | |
67 | + @Value("${jeecg.route.config.data-type:database}") | |
68 | + public String dataType; | |
60 | 69 | /** |
61 | 70 | * 需要拼接key的路由条件 |
62 | 71 | */ |
... | ... | @@ -76,7 +85,6 @@ public class DynamicRouteLoader implements ApplicationEventPublisherAware { |
76 | 85 | |
77 | 86 | |
78 | 87 | public void init(BaseMap baseMap) { |
79 | - String dataType = GatewayRoutersConfiguration.DATA_TYPE; | |
80 | 88 | log.info("初始化路由,dataType:"+ dataType); |
81 | 89 | if (RouterDataType.nacos.toString().endsWith(dataType)) { |
82 | 90 | loadRoutesByNacos(); |
... | ... | @@ -92,7 +100,6 @@ public class DynamicRouteLoader implements ApplicationEventPublisherAware { |
92 | 100 | * @return |
93 | 101 | */ |
94 | 102 | public Mono<Void> refresh(BaseMap baseMap) { |
95 | - String dataType = GatewayRoutersConfiguration.DATA_TYPE; | |
96 | 103 | if (!RouterDataType.yml.toString().endsWith(dataType)) { |
97 | 104 | this.init(baseMap); |
98 | 105 | } |
... | ... |
jeecg-boot/jeecg-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/loader/repository/DynamicRouteService.java
... | ... | @@ -59,7 +59,6 @@ public class DynamicRouteService implements ApplicationEventPublisherAware { |
59 | 59 | public synchronized String update(RouteDefinition definition) { |
60 | 60 | try { |
61 | 61 | log.info("gateway update route {}", definition); |
62 | - //delete(definition.getId()); | |
63 | 62 | } catch (Exception e) { |
64 | 63 | return "update fail,not find route routeId: " + definition.getId(); |
65 | 64 | } |
... | ... |
jeecg-boot/jeecg-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/loader/vo/GatewayRouteVo.java
jeecg-boot/jeecg-cloud-module/jeecg-cloud-monitor/src/main/java/org/jeecg/monitor/JeecgMonitorApplication.java
jeecg-boot/jeecg-cloud-module/jeecg-cloud-nacos/src/main/java/com/alibaba/nacos/JeecgNacosApplication.java
jeecg-boot/jeecg-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/JeecgSystemCloudApplication.java
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-more/src/main/java/org/jeecg/modules/test/constant/CloudConstant.java
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-more/src/main/java/org/jeecg/modules/test/feign/client/JeecgTestClient.java
... | ... | @@ -9,17 +9,22 @@ import org.jeecg.modules.test.feign.factory.JeecgTestClientFactory; |
9 | 9 | import org.springframework.cloud.openfeign.FeignClient; |
10 | 10 | import org.springframework.stereotype.Component; |
11 | 11 | import org.springframework.web.bind.annotation.GetMapping; |
12 | -import org.springframework.web.bind.annotation.Mapping; | |
13 | -import org.springframework.web.bind.annotation.PostMapping; | |
14 | 12 | import org.springframework.web.bind.annotation.RequestParam; |
15 | 13 | |
16 | 14 | /** |
17 | 15 | * 常规feign接口定义 |
16 | + * @author: zyf | |
17 | + * @date: 2022/04/21 | |
18 | 18 | */ |
19 | 19 | @FeignClient(value = ServiceNameConstants.SERVICE_DEMO, configuration = FeignConfig.class,fallbackFactory = JeecgTestClientFactory.class) |
20 | 20 | @Component |
21 | 21 | public interface JeecgTestClient { |
22 | 22 | |
23 | + /** | |
24 | + * feign测试方法 | |
25 | + * @param name | |
26 | + * @return | |
27 | + */ | |
23 | 28 | @GetMapping(value = "/test/getMessage") |
24 | 29 | String getMessage(@RequestParam(value = "name",required = false) String name); |
25 | 30 | } |
... | ... |
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-more/src/main/java/org/jeecg/modules/test/feign/controller/JeecgTestFeignController.java
... | ... | @@ -12,7 +12,11 @@ import com.alibaba.csp.sentinel.annotation.SentinelResource; |
12 | 12 | import io.swagger.annotations.Api; |
13 | 13 | import io.swagger.annotations.ApiOperation; |
14 | 14 | |
15 | - | |
15 | +/** | |
16 | + * 微服务单元测试 | |
17 | + * @author: zyf | |
18 | + * @date: 2022/04/21 | |
19 | + */ | |
16 | 20 | @Slf4j |
17 | 21 | @RestController |
18 | 22 | @RequestMapping("/sys/test") |
... | ... |
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-more/src/main/java/org/jeecg/modules/test/lock/DemoLockTest.java
... | ... | @@ -14,6 +14,8 @@ import java.util.Map; |
14 | 14 | |
15 | 15 | /** |
16 | 16 | * 分布式锁测试demo |
17 | + * @author: zyf | |
18 | + * @date: 2022/04/21 | |
17 | 19 | */ |
18 | 20 | @Slf4j |
19 | 21 | @Component |
... | ... | @@ -50,10 +52,11 @@ public class DemoLockTest { |
50 | 52 | |
51 | 53 | /** |
52 | 54 | * 测试分布式锁【编码方式】 |
55 | + * @Scheduled(cron = "0/5 * * * * ?") | |
53 | 56 | */ |
54 | - //@Scheduled(cron = "0/5 * * * * ?") | |
55 | 57 | public void execute2() throws InterruptedException { |
56 | - if (redissonLock.tryLock(CloudConstant.REDISSON_DEMO_LOCK_KEY2, -1, 6000)) { | |
58 | + int expireSeconds=6000; | |
59 | + if (redissonLock.tryLock(CloudConstant.REDISSON_DEMO_LOCK_KEY2, -1, expireSeconds)) { | |
57 | 60 | log.info("执行任务execute2开始,休眠十秒"); |
58 | 61 | Thread.sleep(10000); |
59 | 62 | log.info("=============业务逻辑2==================="); |
... | ... |
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-more/src/main/java/org/jeecg/modules/test/xxljob/DemoJobHandler.java
... | ... | @@ -20,6 +20,8 @@ import java.util.Arrays; |
20 | 20 | |
21 | 21 | /** |
22 | 22 | * xxl-job定时任务测试 |
23 | + * @author: zyf | |
24 | + * @date: 2022/04/21 | |
23 | 25 | */ |
24 | 26 | @Component |
25 | 27 | @Slf4j |
... | ... | @@ -113,7 +115,8 @@ public class DemoJobHandler { |
113 | 115 | */ |
114 | 116 | @XxlJob("httpJobHandler") |
115 | 117 | public ReturnT<String> httpJobHandler(String param) throws Exception { |
116 | - | |
118 | + String[] methodArray=new String[]{"GET","POST"}; | |
119 | + int okState=200; | |
117 | 120 | // param parse |
118 | 121 | if (param == null || param.trim().length() == 0) { |
119 | 122 | log.info("param[" + param + "] invalid."); |
... | ... | @@ -140,7 +143,7 @@ public class DemoJobHandler { |
140 | 143 | log.info("url[" + url + "] invalid."); |
141 | 144 | return ReturnT.FAIL; |
142 | 145 | } |
143 | - if (method == null || !Arrays.asList("GET", "POST").contains(method)) { | |
146 | + if (method == null || !Arrays.asList(methodArray).contains(method)) { | |
144 | 147 | log.info("method[" + method + "] invalid."); |
145 | 148 | return ReturnT.FAIL; |
146 | 149 | } |
... | ... | @@ -177,7 +180,7 @@ public class DemoJobHandler { |
177 | 180 | |
178 | 181 | // valid StatusCode |
179 | 182 | int statusCode = connection.getResponseCode(); |
180 | - if (statusCode != 200) { | |
183 | + if (statusCode != okState) { | |
181 | 184 | throw new RuntimeException("Http Request StatusCode(" + statusCode + ") Invalid."); |
182 | 185 | } |
183 | 186 | |
... | ... |
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-more/src/main/java/org/jeecg/modules/test/xxljob/XxclJobTest.java
... | ... | @@ -6,9 +6,10 @@ import com.xxl.job.core.handler.annotation.XxlJob; |
6 | 6 | import lombok.extern.slf4j.Slf4j; |
7 | 7 | import org.springframework.stereotype.Component; |
8 | 8 | |
9 | - | |
10 | 9 | /** |
11 | - * xxl-job定时任务测试 | |
10 | + * xxl-job定时任务测试 | |
11 | + * @author: zyf | |
12 | + * @date: 2022/04/21 | |
12 | 13 | */ |
13 | 14 | @Component |
14 | 15 | @Slf4j |
... | ... |
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-rabbitmq/src/main/java/org/jeecg/modules/test/rabbitmq/constant/CloudConstant.java
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-rabbitmq/src/main/java/org/jeecg/modules/test/rabbitmq/controller/JeecgMqTestController.java
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-rabbitmq/src/main/java/org/jeecg/modules/test/rabbitmq/event/DemoBusEvent.java
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-rabbitmq/src/main/java/org/jeecg/modules/test/rabbitmq/listener/HelloReceiver1.java
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-rabbitmq/src/main/java/org/jeecg/modules/test/rabbitmq/listener/HelloReceiver2.java
... | ... | @@ -17,6 +17,8 @@ import org.springframework.messaging.handler.annotation.Header; |
17 | 17 | * |
18 | 18 | * RabbitMq接受者2 |
19 | 19 | * (@RabbitListener声明类上,一个类只能监听一个队列) |
20 | + * @author: zyf | |
21 | + * @date: 2022/04/21 | |
20 | 22 | */ |
21 | 23 | @Slf4j |
22 | 24 | @RabbitListener(queues = CloudConstant.MQ_JEECG_PLACE_ORDER) |
... | ... |
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-rabbitmq/src/main/java/org/jeecg/modules/test/rabbitmq/listener/HelloReceiver3.java
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-rabbitmq/src/main/java/org/jeecg/modules/test/rabbitmq/listener/HelloTimeReceiver.java
... | ... | @@ -14,6 +14,11 @@ import com.rabbitmq.client.Channel; |
14 | 14 | |
15 | 15 | import lombok.extern.slf4j.Slf4j; |
16 | 16 | |
17 | +/** | |
18 | + * 定义接收者(可以定义N个接受者,消息会均匀的发送到N个接收者中) | |
19 | + * @author: zyf | |
20 | + * @date: 2022/04/21 | |
21 | + */ | |
17 | 22 | @Slf4j |
18 | 23 | @RabbitListener(queues = CloudConstant.MQ_JEECG_PLACE_ORDER_TIME) |
19 | 24 | @RabbitComponent(value = "helloTimeReceiver") |
... | ... |
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-account/src/main/java/org/jeecg/modules/test/seata/account/service/SeataAccountService.java
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-account/src/main/java/org/jeecg/modules/test/seata/account/service/impl/SeataAccountServiceImpl.java
... | ... | @@ -32,7 +32,7 @@ public class SeataAccountServiceImpl implements SeataAccountService { |
32 | 32 | */ |
33 | 33 | @DS("account") |
34 | 34 | @Override |
35 | - @Transactional(propagation = Propagation.REQUIRES_NEW) | |
35 | + @Transactional(propagation = Propagation.REQUIRES_NEW,rollbackFor = Exception.class) | |
36 | 36 | public void reduceBalance(Long userId, BigDecimal amount) { |
37 | 37 | log.info("=============ACCOUNT START================="); |
38 | 38 | SeataAccount account = accountMapper.selectById(userId); |
... | ... |
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-order/src/main/java/org/jeecg/modules/test/seata/order/feign/ProductClient.java
... | ... | @@ -6,6 +6,11 @@ import org.springframework.web.bind.annotation.RequestParam; |
6 | 6 | |
7 | 7 | import java.math.BigDecimal; |
8 | 8 | |
9 | +/** | |
10 | + * 分布式事务产品feign客户端 | |
11 | + * @author: zyf | |
12 | + * @date: 2022/04/21 | |
13 | + */ | |
9 | 14 | @FeignClient(value ="seata-product") |
10 | 15 | public interface ProductClient { |
11 | 16 | /** |
... | ... |
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-order/src/main/java/org/jeecg/modules/test/seata/order/service/impl/SeataOrderServiceImpl.java
... | ... | @@ -36,7 +36,7 @@ public class SeataOrderServiceImpl implements SeataOrderService { |
36 | 36 | |
37 | 37 | @DS("order") |
38 | 38 | @Override |
39 | - @Transactional | |
39 | + @Transactional(rollbackFor = Exception.class) | |
40 | 40 | @GlobalTransactional |
41 | 41 | public void placeOrder(PlaceOrderRequest request) { |
42 | 42 | log.info("=============ORDER START================="); |
... | ... |
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-product/src/main/java/org/jeecg/modules/test/seata/product/service/impl/SeataProductServiceImpl.java
... | ... | @@ -32,7 +32,7 @@ public class SeataProductServiceImpl implements SeataProductService { |
32 | 32 | * 事务传播特性设置为 REQUIRES_NEW 开启新的事务 |
33 | 33 | */ |
34 | 34 | @DS("product") |
35 | - @Transactional(propagation = Propagation.REQUIRES_NEW) | |
35 | + @Transactional(propagation = Propagation.REQUIRES_NEW,rollbackFor = Exception.class) | |
36 | 36 | @Override |
37 | 37 | public BigDecimal reduceStock(Long productId, Integer count) { |
38 | 38 | log.info("=============PRODUCT START================="); |
... | ... |
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-shardingsphere/src/main/java/org/jeecg/modules/test/sharding/controller/JeecgShardingDemoController.java
... | ... | @@ -35,7 +35,8 @@ public class JeecgShardingDemoController extends JeecgController<ShardingSysLog, |
35 | 35 | @PostMapping(value = "/test1") |
36 | 36 | @ApiOperation(value = "单库分表插入", notes = "单库分表") |
37 | 37 | public Result<?> add() { |
38 | - for (int i = 0; i < 10; i++) { | |
38 | + int size=10; | |
39 | + for (int i = 0; i < size; i++) { | |
39 | 40 | ShardingSysLog shardingSysLog = new ShardingSysLog(); |
40 | 41 | shardingSysLog.setLogContent("jeecg"); |
41 | 42 | shardingSysLog.setLogType(i); |
... | ... | @@ -62,7 +63,9 @@ public class JeecgShardingDemoController extends JeecgController<ShardingSysLog, |
62 | 63 | @PostMapping(value = "/test2") |
63 | 64 | @ApiOperation(value = "双库分表插入", notes = "双库分表") |
64 | 65 | public Result<?> test2() { |
65 | - for (int i = 20; i <= 30; i++) { | |
66 | + int start=20; | |
67 | + int size=30; | |
68 | + for (int i = start; i <= size; i++) { | |
66 | 69 | ShardingSysLog shardingSysLog = new ShardingSysLog(); |
67 | 70 | shardingSysLog.setLogContent("双库分表测试"); |
68 | 71 | shardingSysLog.setLogType(i); |
... | ... |
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-shardingsphere/src/main/java/org/jeecg/modules/test/sharding/entity/ShardingSysLog.java
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-shardingsphere/src/main/java/org/jeecg/modules/test/sharding/mapper/xml/ShardingSysLogMapper.xml
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | 2 | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
3 | -<mapper namespace="org.jeecg.modules.demo.sharding.mapper.ShardingSysLogMapper"> | |
3 | +<mapper namespace="org.jeecg.modules.test.sharding.mapper.ShardingSysLogMapper"> | |
4 | 4 | |
5 | 5 | </mapper> |
... | ... |
jeecg-boot/jeecg-cloud-module/jeecg-cloud-test/jeecg-cloud-test-shardingsphere/src/main/java/org/jeecg/modules/test/sharding/service/impl/ShardingSysLogServiceImpl.java
... | ... | @@ -8,9 +8,9 @@ import org.jeecg.modules.test.sharding.service.IShardingSysLogService; |
8 | 8 | import org.springframework.stereotype.Service; |
9 | 9 | |
10 | 10 | /** |
11 | - * <p> | |
12 | 11 | * 系统日志表 服务实现类 |
13 | - * </p> | |
12 | + * @author: zyf | |
13 | + * @date: 2022/04/21 | |
14 | 14 | */ |
15 | 15 | @Service |
16 | 16 | @DS("sharding") |
... | ... |