Skip to content

Commit cc20d7d

Browse files
committed
fix ScriptRequest
1 parent 1295ad0 commit cc20d7d

File tree

6 files changed

+83
-10
lines changed

6 files changed

+83
-10
lines changed

springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jdbc/JdbcQuery.java

+28-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package com.codingapi.springboot.fast.jdbc;
22

33
import org.apache.commons.text.CaseUtils;
4+
import org.springframework.data.domain.Page;
5+
import org.springframework.data.domain.PageImpl;
6+
import org.springframework.data.domain.PageRequest;
47
import org.springframework.jdbc.core.BeanPropertyRowMapper;
58
import org.springframework.jdbc.core.RowMapper;
69

@@ -28,18 +31,41 @@ public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException
2831
Map<String, Object> map = new HashMap<>(columnCount);
2932
for (int i = 1; i <= columnCount; i++) {
3033
String columnName = metaData.getColumnLabel(i);
31-
map.put(CaseUtils.toCamelCase(columnName,false), rs.getObject(i));
34+
map.put(CaseUtils.toCamelCase(columnName, false), rs.getObject(i));
3235
}
3336
return map;
3437
}
3538
}
3639

37-
public List<Map<String,Object>> queryForList(String sql, Object... params) {
40+
public List<Map<String, Object>> queryForList(String sql, Object... params) {
3841
return jdbcTemplate.query(sql, params, new CamelCaseRowMapper());
3942
}
4043

4144
public <T> List<T> queryForList(String sql, Class<T> clazz, Object... params) {
4245
return jdbcTemplate.query(sql, params, new BeanPropertyRowMapper<>(clazz));
4346
}
4447

48+
public <T> Page<T> queryForPage(String sql, String countSql, Class<T> clazz, PageRequest pageRequest, Object... params) {
49+
List<T> list = jdbcTemplate.query(sql, params, new BeanPropertyRowMapper<>(clazz));
50+
long count = this.countQuery(countSql, params);
51+
return new PageImpl<>(list, pageRequest, count);
52+
}
53+
54+
public Page<Map<String, Object>> queryForPage(String sql, String countSql, PageRequest pageRequest, Object... params) {
55+
List<Map<String, Object>> list = jdbcTemplate.query(sql, params, new CamelCaseRowMapper());
56+
57+
long count = this.countQuery(countSql, params);
58+
return new PageImpl<>(list, pageRequest, count);
59+
}
60+
61+
62+
private long countQuery(String sql, Object... params) {
63+
int paramsLength = params.length;
64+
int countSqlParamsLength = sql.split("\\?").length - 1;
65+
Object[] newParams = new Object[countSqlParamsLength];
66+
if (paramsLength > countSqlParamsLength) {
67+
System.arraycopy(params, 0, newParams, 0, countSqlParamsLength);
68+
}
69+
return jdbcTemplate.queryForObject(sql, newParams, Long.class);
70+
}
4571
}

springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/mapping/BaseMapping.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.codingapi.springboot.fast.mapping;
22

3-
import com.codingapi.springboot.framework.dto.response.SingleResponse;
3+
import com.codingapi.springboot.framework.dto.response.Response;
44
import lombok.Getter;
55
import org.springframework.web.bind.annotation.RequestMethod;
66
import org.springframework.web.bind.annotation.ResponseBody;
@@ -20,7 +20,7 @@ public BaseMapping(String mapping, RequestMethod requestMethod) {
2020

2121

2222
@ResponseBody
23-
public abstract SingleResponse<Object> execute();
23+
public abstract Response execute();
2424

2525
public Method getExecuteMethod() {
2626
try {

springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/mapping/MvcMappingRegister.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.codingapi.springboot.fast.dynamic.DynamicQuery;
44
import com.codingapi.springboot.fast.jdbc.JdbcQuery;
5-
import com.codingapi.springboot.framework.dto.response.SingleResponse;
5+
import com.codingapi.springboot.framework.dto.response.Response;
66
import org.springframework.jdbc.core.JdbcTemplate;
77
import org.springframework.web.bind.annotation.RequestMethod;
88

@@ -22,7 +22,7 @@ public MvcMappingRegister(MvcEndpointMapping mvcEndpointMapping, DynamicQuery dy
2222
* @param SQLMapping dynamic mapping
2323
* @return result
2424
*/
25-
public SingleResponse<Object> test(SQLMapping sqlMapping) {
25+
public Response test(SQLMapping sqlMapping) {
2626
return sqlMapping.execute();
2727
}
2828

@@ -50,7 +50,7 @@ public void addMapping(ScriptMapping scriptMapping) {
5050
* @param scriptMapping dynamic mapping
5151
* @return result
5252
*/
53-
public SingleResponse<Object> test(ScriptMapping scriptMapping) {
53+
public Response test(ScriptMapping scriptMapping) {
5454
return scriptMapping.execute();
5555
}
5656

springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/mapping/SQLMapping.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.codingapi.springboot.fast.mapping;
22

3+
import com.codingapi.springboot.framework.dto.response.Response;
34
import com.codingapi.springboot.framework.dto.response.SingleResponse;
45
import lombok.Getter;
56
import lombok.Setter;
@@ -43,7 +44,7 @@ enum Type {
4344

4445

4546
@ResponseBody
46-
public SingleResponse<Object> execute() {
47+
public Response execute() {
4748
return switch (type) {
4849
case JDBC -> SingleResponse.of(MvcRunningContext.getInstance().getJdbcQuery().queryForList(sql, clazz, params));
4950
case HQL -> SingleResponse.of(MvcRunningContext.getInstance().getDynamicQuery().listQuery(clazz, sql, params));

springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/mapping/ScriptMapping.java

+18-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
package com.codingapi.springboot.fast.mapping;
22

33
import com.codingapi.springboot.fast.script.ScriptRuntime;
4+
import com.codingapi.springboot.framework.dto.response.MultiResponse;
5+
import com.codingapi.springboot.framework.dto.response.Response;
46
import com.codingapi.springboot.framework.dto.response.SingleResponse;
57
import lombok.Getter;
68
import lombok.Setter;
9+
import org.springframework.data.domain.Page;
710
import org.springframework.web.bind.annotation.RequestMethod;
811
import org.springframework.web.bind.annotation.ResponseBody;
912

13+
import java.util.List;
14+
1015

1116
@Setter
1217
@Getter
@@ -20,9 +25,20 @@ public ScriptMapping(String mapping, RequestMethod requestMethod, String script)
2025
}
2126

2227
@ResponseBody
23-
public SingleResponse<Object> execute() {
28+
public Response execute() {
2429
MvcRunningContext context = MvcRunningContext.getInstance();
25-
return SingleResponse.of(ScriptRuntime.running(script,context));
30+
Object result = ScriptRuntime.running(script,context);
31+
if(result instanceof List || result.getClass().isArray()){
32+
return SingleResponse.of(result);
33+
}else{
34+
if(result instanceof MultiResponse){
35+
return (MultiResponse<?>)result;
36+
}
37+
if(result instanceof Page<?>){
38+
return MultiResponse.of((Page<?>) result);
39+
}
40+
return SingleResponse.of(result);
41+
}
2642
}
2743

2844

springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/script/ScriptRequest.java

+30
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.codingapi.springboot.fast.script;
22

3+
import com.codingapi.springboot.framework.dto.request.PageRequest;
34
import jakarta.servlet.http.HttpServletRequest;
45
import lombok.AllArgsConstructor;
56

@@ -13,4 +14,33 @@ public String getParameter(String key, String defaultValue) {
1314
return result == null ? defaultValue : result;
1415
}
1516

17+
public int getParameter(String key, int defaultValue) {
18+
String result = request.getParameter(key);
19+
return result == null ? defaultValue : Integer.parseInt(result);
20+
}
21+
22+
public float getParameter(String key, float defaultValue) {
23+
String result = request.getParameter(key);
24+
return result == null ? defaultValue : Float.parseFloat(result);
25+
}
26+
27+
public double getParameter(String key, double defaultValue) {
28+
String result = request.getParameter(key);
29+
return result == null ? defaultValue : Double.parseDouble(result);
30+
}
31+
32+
public long getParameter(String key, long defaultValue) {
33+
String result = request.getParameter(key);
34+
return result == null ? defaultValue : Long.parseLong(result);
35+
}
36+
37+
public boolean getParameter(String key, boolean defaultValue) {
38+
String result = request.getParameter(key);
39+
return result == null ? defaultValue : Boolean.parseBoolean(result);
40+
}
41+
42+
public PageRequest pageRequest(int pageNumber, int pageSize) {
43+
return PageRequest.of(pageNumber, pageSize);
44+
}
45+
1646
}

0 commit comments

Comments
 (0)