55import java .util .HashMap ;
66import java .util .List ;
77import java .util .Map ;
8- import java .util .Objects ;
9- import java .util .stream .Collectors ;
108
119import com .alibaba .fastjson2 .JSON ;
1210import com .jfinal .template .Engine ;
1311import com .jfinal .template .Template ;
1412import com .litongjava .db .activerecord .Db ;
1513import com .litongjava .db .activerecord .Row ;
1614import com .litongjava .ehcache .EhCacheKit ;
15+ import com .litongjava .tio .boot .http .TioRequestContext ;
1716import com .litongjava .tio .http .common .HeaderName ;
1817import com .litongjava .tio .http .common .HeaderValue ;
1918import com .litongjava .tio .http .common .HttpRequest ;
2322import com .litongjava .tio .http .server .utils .RandomUtils ;
2423
2524public 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}
0 commit comments