Skip to content

Commit 8abbec8

Browse files
author
litongjava
committed
change to for each
1 parent 46de0d4 commit 8abbec8

File tree

3 files changed

+67
-68
lines changed

3 files changed

+67
-68
lines changed
Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package com.litongjava.tio.http.server.controller;
22

3+
import java.util.ArrayList;
34
import java.util.List;
45
import java.util.Map;
5-
import java.util.Objects;
6-
import java.util.stream.Collectors;
76

87
import com.alibaba.fastjson2.JSON;
98
import com.litongjava.db.activerecord.Db;
109
import com.litongjava.db.activerecord.Row;
10+
import com.litongjava.tio.boot.http.TioRequestContext;
1111
import com.litongjava.tio.http.common.HeaderName;
1212
import com.litongjava.tio.http.common.HeaderValue;
1313
import com.litongjava.tio.http.common.HttpRequest;
@@ -16,26 +16,26 @@
1616

1717
public class CacheHandler {
1818
// private Logger log = LoggerFactory.getLogger(this.getClass());
19+
String sql = "SELECT id, randomNumber FROM world WHERE id = ?";
1920

2021
public HttpResponse cachedQuery(HttpRequest request) {
2122
String queries = request.getParam("queries");
22-
List<Map<String, Object>> recordMaps = RandomUtils.randomWorldNumbers()
23-
// limit
24-
.limit(RandomUtils.parseQueryCount(queries)) // 限制查询数量
25-
.mapToObj(id -> findByIdWithCache("world", id)) // 使用 mapToObj 将 int 映射为对象
26-
.filter(Objects::nonNull) // 过滤掉 null 值
27-
.map(Row::toMap) // 将每个 Record 对象转换为 Map
28-
.collect(Collectors.toList()); // 收集到 List
29-
30-
HttpResponse httpResponse = new HttpResponse(request);
31-
httpResponse.addHeader(HeaderName.Content_Type, HeaderValue.Content_Type.TEXT_PLAIN_JSON);
32-
httpResponse.setBody(JSON.toJSONBytes(recordMaps));
33-
return httpResponse;
3423

35-
}
24+
int queryCount = RandomUtils.parseQueryCount(queries);
25+
26+
List<Map<String, Object>> recordMaps = new ArrayList<>();
27+
28+
int[] randomNumbers = RandomUtils.randomWorldNumbers().limit(queryCount).toArray();
29+
for (int id : randomNumbers) {
30+
Row row = Db.findFirstByCache("world", id, sql, id);
31+
if (row != null) {
32+
recordMaps.add(row.toMap());
33+
}
34+
}
3635

37-
private Row findByIdWithCache(String tableName, int id) {
38-
String sql = "SELECT id, randomNumber FROM world WHERE id = ?";
39-
return Db.findFirstByCache(tableName, id, sql, id);
36+
HttpResponse response = TioRequestContext.getResponse();
37+
response.addHeader(HeaderName.Content_Type, HeaderValue.Content_Type.TEXT_PLAIN_JSON);
38+
response.setBody(JSON.toJSONBytes(recordMaps));
39+
return response;
4040
}
4141
}

frameworks/Java/tio-boot/src/main/java/com/litongjava/tio/http/server/controller/DbHandler.java

Lines changed: 39 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,14 @@
55
import java.util.HashMap;
66
import java.util.List;
77
import java.util.Map;
8-
import java.util.Objects;
9-
import java.util.stream.Collectors;
108

119
import com.alibaba.fastjson2.JSON;
1210
import com.jfinal.template.Engine;
1311
import com.jfinal.template.Template;
1412
import com.litongjava.db.activerecord.Db;
1513
import com.litongjava.db.activerecord.Row;
1614
import com.litongjava.ehcache.EhCacheKit;
15+
import com.litongjava.tio.boot.http.TioRequestContext;
1716
import com.litongjava.tio.http.common.HeaderName;
1817
import com.litongjava.tio.http.common.HeaderValue;
1918
import com.litongjava.tio.http.common.HttpRequest;
@@ -23,6 +22,10 @@
2322
import com.litongjava.tio.http.server.utils.RandomUtils;
2423

2524
public class DbHandler {
25+
private Engine engine = Engine.use();
26+
private String filename = "fortunes.html";
27+
private Template template = engine.getTemplate(filename);
28+
private static final byte[] bytes = "{}".getBytes();
2629

2730
public HttpResponse db(HttpRequest request) {
2831
Integer id = request.getInt("id");
@@ -31,7 +34,7 @@ public HttpResponse db(HttpRequest request) {
3134
}
3235

3336
//System.out.println("id:" + id);
34-
HttpResponse httpResponse = new HttpResponse(request);
37+
HttpResponse httpResponse = TioRequestContext.getResponse();
3538

3639
// int id = 11;
3740
// String sql="SELECT id, randomNumber FROM world WHERE id = ?";
@@ -40,7 +43,7 @@ public HttpResponse db(HttpRequest request) {
4043
if (recored != null) {
4144
httpResponse.setBody(JSON.toJSONBytes(recored.toMap()));
4245
} else {
43-
httpResponse.setBody("{}".getBytes());
46+
httpResponse.setBody(bytes);
4447
}
4548

4649
httpResponse.addHeader(HeaderName.Content_Type, HeaderValue.Content_Type.TEXT_PLAIN_JSON);
@@ -51,15 +54,19 @@ public HttpResponse db(HttpRequest request) {
5154
// @GetMapping("/queries")
5255
public HttpResponse queries(HttpRequest request) {
5356
String queries = request.getParam("queries");
54-
List<Map<String, Object>> recordMaps = RandomUtils.randomWorldNumbers()
55-
// limit
56-
.limit(RandomUtils.parseQueryCount(queries)) // 限制查询数量
57-
.mapToObj(id -> Db.findById("world", id)) // 使用 mapToObj 将 int 映射为对象
58-
.filter(Objects::nonNull) // 过滤掉 null 值
59-
.map(Row::toMap) // 将每个 Record 对象转换为 Map
60-
.collect(Collectors.toList()); // 收集到 List
57+
int queryCount = RandomUtils.parseQueryCount(queries);
58+
int[] randomNumbers = RandomUtils.randomWorldNumbers().limit(queryCount).toArray();
6159

62-
HttpResponse httpResponse = new HttpResponse(request);
60+
List<Map<String, Object>> recordMaps = new ArrayList<>();
61+
62+
for (int id : randomNumbers) {
63+
Row row = Db.findById("world", id);
64+
if (row != null) {
65+
recordMaps.add(row.toMap());
66+
}
67+
}
68+
69+
HttpResponse httpResponse = TioRequestContext.getResponse();
6370
httpResponse.addHeader(HeaderName.Content_Type, HeaderValue.Content_Type.TEXT_PLAIN_JSON);
6471
httpResponse.setBody(JSON.toJSONBytes(recordMaps));
6572
return httpResponse;
@@ -71,27 +78,24 @@ public HttpResponse updates(HttpRequest request) {
7178

7279
EhCacheKit.removeAll("world");
7380

74-
List<Map<String, Object>> updatedRecords = RandomUtils.randomWorldNumbers()// random numbers
75-
// limit
76-
.limit(RandomUtils.parseQueryCount(queries))
77-
// map
78-
.mapToObj(id -> Db.findById("world", id))
79-
// not null
80-
.filter(Objects::nonNull).map(record -> {
81-
int currentRandomNumber = record.getInt("randomNumber"); // "randomnumber"
82-
int newRandomNumber;
83-
do {
84-
newRandomNumber = RandomUtils.randomWorldNumber();
85-
} while (newRandomNumber == currentRandomNumber);
86-
87-
record.set("randomnumber", newRandomNumber);
88-
Db.update("world", "id", record); // update
89-
return record;
90-
})
91-
// tomap
92-
.map(Row::toMap)
93-
// to List
94-
.collect(Collectors.toList());
81+
int queryCount = RandomUtils.parseQueryCount(queries);
82+
int[] randomNumbers = RandomUtils.randomWorldNumbers().limit(queryCount).toArray();
83+
List<Map<String, Object>> updatedRecords = new ArrayList<>();
84+
85+
for (int id : randomNumbers) {
86+
Row row = Db.findById("world", id);
87+
if (row != null) {
88+
int currentRandomNumber = row.getInt("randomNumber"); // "randomnumber"
89+
int newRandomNumber;
90+
do {
91+
newRandomNumber = RandomUtils.randomWorldNumber();
92+
} while (newRandomNumber == currentRandomNumber);
93+
94+
row.set("randomnumber", newRandomNumber);
95+
Db.update("world", "id", row); // update
96+
updatedRecords.add(row.toMap());
97+
}
98+
}
9599

96100
HttpResponse httpResponse = new HttpResponse(request);
97101
httpResponse.addHeader(HeaderName.Content_Type, HeaderValue.Content_Type.TEXT_PLAIN_JSON);
@@ -116,11 +120,8 @@ public HttpResponse fortunes(HttpRequest request) throws IllegalAccessException,
116120
viewData.put("fortunes", fortunes);
117121

118122
// 转换为 HTML
119-
Engine engine = Engine.use();
120-
String filename = "fortunes.html";
121-
Template template = engine.getTemplate(filename);
122123
String html = template.renderToString(viewData);
123-
124-
return Resps.html(request, html);
124+
HttpResponse httpResponse = TioRequestContext.getResponse();
125+
return Resps.html(httpResponse, html);
125126
}
126127
}

frameworks/Java/tio-boot/src/main/java/com/litongjava/tio/http/server/controller/IndexHandler.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.litongjava.tio.http.server.controller;
22

33
import com.alibaba.fastjson2.JSON;
4+
import com.litongjava.tio.boot.http.TioRequestContext;
45
import com.litongjava.tio.http.common.HeaderName;
56
import com.litongjava.tio.http.common.HeaderValue;
67
import com.litongjava.tio.http.common.HttpRequest;
@@ -22,19 +23,16 @@ public HttpResponse index(HttpRequest request) {
2223
}
2324

2425
public HttpResponse plaintext(HttpRequest request) {
25-
// 更高性能的写法
26-
HttpResponse ret = new HttpResponse(request);
27-
ret.setBody(HELLO_WORLD_BYTES);
28-
ret.addHeader(HeaderName.Content_Type, HeaderValue.Content_Type.TEXT_PLAIN_TXT);
29-
return ret;
26+
HttpResponse response = TioRequestContext.getResponse();
27+
response.setBody(HELLO_WORLD_BYTES);
28+
response.addHeader(HeaderName.Content_Type, HeaderValue.Content_Type.TEXT_PLAIN_TXT);
29+
return response;
3030
}
3131

32-
// 在IndexController中添加
3332
public HttpResponse json(HttpRequest request) {
34-
// 更高性能的写法
35-
HttpResponse ret = new HttpResponse(request);
36-
ret.setBody(JSON.toJSONString(new Message(HELLO_WORLD)).getBytes());
37-
ret.addHeader(HeaderName.Content_Type, HeaderValue.Content_Type.TEXT_PLAIN_JSON);
38-
return ret;
33+
HttpResponse response = TioRequestContext.getResponse();
34+
response.setBody(JSON.toJSONBytes(new Message(HELLO_WORLD)));
35+
response.addHeader(HeaderName.Content_Type, HeaderValue.Content_Type.TEXT_PLAIN_JSON);
36+
return response;
3937
}
40-
}
38+
}

0 commit comments

Comments
 (0)