Skip to content

Commit 9289000

Browse files
committed
add test
1 parent cee260b commit 9289000

File tree

5 files changed

+85
-54
lines changed

5 files changed

+85
-54
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.codingapi.springboot.fast.jdbc;
2+
3+
import org.apache.commons.text.CaseUtils;
4+
import org.springframework.jdbc.core.BeanPropertyRowMapper;
5+
import org.springframework.jdbc.core.RowMapper;
6+
7+
import java.sql.ResultSet;
8+
import java.sql.ResultSetMetaData;
9+
import java.sql.SQLException;
10+
import java.util.HashMap;
11+
import java.util.List;
12+
import java.util.Map;
13+
14+
public class JdbcQuery {
15+
16+
private final org.springframework.jdbc.core.JdbcTemplate jdbcTemplate;
17+
18+
public JdbcQuery(org.springframework.jdbc.core.JdbcTemplate jdbcTemplate) {
19+
this.jdbcTemplate = jdbcTemplate;
20+
}
21+
22+
private static class CamelCaseRowMapper implements RowMapper<Map<String, Object>> {
23+
24+
@Override
25+
public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
26+
ResultSetMetaData metaData = rs.getMetaData();
27+
int columnCount = metaData.getColumnCount();
28+
Map<String, Object> map = new HashMap<>(columnCount);
29+
for (int i = 1; i <= columnCount; i++) {
30+
String columnName = metaData.getColumnLabel(i);
31+
map.put(CaseUtils.toCamelCase(columnName,false), rs.getObject(i));
32+
}
33+
return map;
34+
}
35+
}
36+
37+
public List<Map<String,Object>> queryForList(String sql, Object... params) {
38+
return jdbcTemplate.query(sql, params, new CamelCaseRowMapper());
39+
}
40+
41+
public <T> List<T> queryForList(String sql, Class<T> clazz, Object... params) {
42+
return jdbcTemplate.query(sql, params, new BeanPropertyRowMapper<>(clazz));
43+
}
44+
45+
}
Lines changed: 33 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,48 @@
11
package com.codingapi.springboot.fast.mapping;
22

33
import com.codingapi.springboot.fast.dynamic.DynamicQuery;
4+
import com.codingapi.springboot.fast.jdbc.JdbcQuery;
45
import lombok.AllArgsConstructor;
56
import lombok.SneakyThrows;
6-
import org.apache.commons.text.CaseUtils;
7-
import org.springframework.jdbc.core.BeanPropertyRowMapper;
87
import org.springframework.jdbc.core.JdbcTemplate;
9-
import org.springframework.jdbc.core.RowMapper;
108
import org.springframework.web.bind.annotation.RequestMethod;
119
import org.springframework.web.bind.annotation.ResponseBody;
1210

1311
import java.lang.reflect.Method;
14-
import java.sql.ResultSet;
15-
import java.sql.ResultSetMetaData;
16-
import java.sql.SQLException;
17-
import java.util.HashMap;
1812
import java.util.List;
1913
import java.util.Map;
2014

21-
@AllArgsConstructor
2215
public class DynamicMappingRegister {
2316

2417
private final MvcEndpointMapping mvcEndpointMapping;
2518

2619
private final DynamicQuery dynamicQuery;
2720

28-
private final JdbcTemplate jdbcTemplate;
21+
private final JdbcQuery jdbcQuery;
2922

23+
public DynamicMappingRegister(MvcEndpointMapping mvcEndpointMapping, DynamicQuery dynamicQuery, JdbcTemplate jdbcTemplate) {
24+
this.mvcEndpointMapping = mvcEndpointMapping;
25+
this.dynamicQuery = dynamicQuery;
26+
this.jdbcQuery = new JdbcQuery(jdbcTemplate);
27+
}
3028

31-
private void addJdbcMapping(String mapping, RequestMethod requestMethod,String sql,Class<?> clazz, Object ... params) {
32-
Object handler = new JdbcMapping( jdbcTemplate,sql,clazz,params);
33-
Method method = getJdbcMethod();
29+
private void addJdbcMapping(String mapping, RequestMethod requestMethod, String sql, Class<?> clazz, Object ... params) {
30+
JdbcMapping handler = new JdbcMapping(jdbcQuery,sql,clazz,params);
31+
Method method = handler.getJdbcMethod();
3432
mvcEndpointMapping.addMapping(mapping, requestMethod, handler, method);
3533
}
3634

3735

3836
private void addJdbcMapping(String mapping, RequestMethod requestMethod,String sql, Object ... params) {
39-
Object handler = new JdbcMapMapping( jdbcTemplate,sql,params);
40-
Method method = getJdbcMapMethod();
37+
JdbcMapMapping handler = new JdbcMapMapping(jdbcQuery,sql,params);
38+
Method method = handler.getJdbcMapMethod();
4139
mvcEndpointMapping.addMapping(mapping, requestMethod, handler, method);
4240
}
4341

4442

4543
private void addHqlMapping(String mapping, RequestMethod requestMethod,String hql,Class<?> clazz, Object ... params) {
46-
Object handler = new HqlMapping(dynamicQuery,hql,clazz,params);
47-
Method method = getHqlMethod();
44+
HqlMapping handler = new HqlMapping(dynamicQuery,hql,clazz,params);
45+
Method method = handler.getHqlMethod();
4846
mvcEndpointMapping.addMapping(mapping, requestMethod, handler, method);
4947
}
5048

@@ -57,11 +55,11 @@ private void addHqlMapping(String mapping, RequestMethod requestMethod,String hq
5755
public Object test(DynamicMapping dynamicMapping) {
5856
return switch (dynamicMapping.getType()) {
5957
case JDBC ->
60-
new JdbcMapping(jdbcTemplate, dynamicMapping.getSql(), dynamicMapping.getClazz(), dynamicMapping.getParams()).execute();
58+
new JdbcMapping(jdbcQuery, dynamicMapping.getSql(), dynamicMapping.getClazz(), dynamicMapping.getParams()).execute();
6159
case HQL ->
6260
new HqlMapping(dynamicQuery, dynamicMapping.getSql(), dynamicMapping.getClazz(), dynamicMapping.getParams()).execute();
6361
case JDBC_MAP ->
64-
new JdbcMapMapping(jdbcTemplate, dynamicMapping.getSql(), dynamicMapping.getParams()).execute();
62+
new JdbcMapMapping(jdbcQuery, dynamicMapping.getSql(), dynamicMapping.getParams()).execute();
6563
};
6664
}
6765

@@ -95,64 +93,46 @@ public void removeMapping(String mapping,RequestMethod requestMethod) {
9593
}
9694

9795

98-
@SneakyThrows
99-
private Method getJdbcMethod(){
100-
return JdbcMapping.class.getDeclaredMethod("execute");
101-
}
10296

103-
@SneakyThrows
104-
private Method getJdbcMapMethod(){
105-
return JdbcMapMapping.class.getDeclaredMethod("execute");
106-
}
107-
108-
@SneakyThrows
109-
private Method getHqlMethod(){
110-
return HqlMapping.class.getDeclaredMethod("execute");
111-
}
11297

11398

11499
@AllArgsConstructor
115100
public static class JdbcMapMapping{
116101

117-
private final JdbcTemplate jdbcTemplate;
102+
private final JdbcQuery jdbcQuery;
118103
private final String sql;
119104
private final Object[] params;
120105

121106
@ResponseBody
122107
public List<Map<String,Object>> execute() {
123-
return jdbcTemplate.query(sql, params, new CamelCaseRowMapper());
108+
return jdbcQuery.queryForList(sql, params);
124109
}
125110

126-
private static class CamelCaseRowMapper implements RowMapper<Map<String, Object>> {
127-
128-
@Override
129-
public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
130-
ResultSetMetaData metaData = rs.getMetaData();
131-
int columnCount = metaData.getColumnCount();
132-
Map<String, Object> map = new HashMap<>(columnCount);
133-
for (int i = 1; i <= columnCount; i++) {
134-
String columnName = metaData.getColumnLabel(i);
135-
map.put(CaseUtils.toCamelCase(columnName,false), rs.getObject(i));
136-
}
137-
return map;
138-
}
111+
@SneakyThrows
112+
private Method getJdbcMapMethod(){
113+
return this.getClass().getDeclaredMethod("execute");
139114
}
115+
140116
}
141117

142118

143119
@AllArgsConstructor
144120
public static class JdbcMapping{
145121

146-
private final JdbcTemplate jdbcTemplate;
122+
private final JdbcQuery jdbcQuery;
147123
private final String sql;
148124
private final Class<?> clazz;
149125
private final Object[] params;
150126

151127
@ResponseBody
152128
public List<?> execute() {
153-
return jdbcTemplate.query(sql, params, new BeanPropertyRowMapper<>(clazz));
129+
return jdbcQuery.queryForList(sql, clazz, params);
154130
}
155131

132+
@SneakyThrows
133+
private Method getJdbcMethod(){
134+
return this.getClass().getDeclaredMethod("execute");
135+
}
156136

157137

158138
}
@@ -170,6 +150,11 @@ public static class HqlMapping{
170150
public List<?> execute() {
171151
return dynamicQuery.listQuery(clazz,hql, params);
172152
}
153+
154+
@SneakyThrows
155+
private Method getHqlMethod(){
156+
return this.getClass().getDeclaredMethod("execute");
157+
}
173158
}
174159

175160
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.codingapi.springboot.fast.mapping;
22

33
import com.codingapi.springboot.fast.dynamic.DynamicQuery;
4+
import com.codingapi.springboot.fast.jdbc.JdbcQuery;
45
import com.codingapi.springboot.fast.script.DynamicScript;
56
import com.codingapi.springboot.fast.script.ScriptContext;
67
import org.springframework.jdbc.core.JdbcTemplate;
@@ -14,7 +15,7 @@ public class DynamicScriptRegister {
1415

1516
public DynamicScriptRegister(MvcEndpointMapping mvcEndpointMapping, DynamicQuery dynamicQuery, JdbcTemplate jdbcTemplate) {
1617
this.mvcEndpointMapping = mvcEndpointMapping;
17-
ScriptContext.getInstance().init(dynamicQuery, jdbcTemplate);
18+
ScriptContext.getInstance().init(dynamicQuery, new JdbcQuery(jdbcTemplate));
1819
}
1920

2021

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.codingapi.springboot.fast.script;
22

33
import com.codingapi.springboot.fast.dynamic.DynamicQuery;
4+
import com.codingapi.springboot.fast.jdbc.JdbcQuery;
45
import lombok.Getter;
5-
import org.springframework.jdbc.core.JdbcTemplate;
66

77
public class ScriptContext {
88

@@ -18,12 +18,12 @@ private ScriptContext() {
1818
@Getter
1919
private DynamicQuery dynamicQuery;
2020
@Getter
21-
private JdbcTemplate jdbcTemplate;
21+
private JdbcQuery jdbcQuery;
2222

2323

24-
public void init(DynamicQuery dynamicQuery, JdbcTemplate jdbcTemplate) {
24+
public void init(DynamicQuery dynamicQuery, JdbcQuery jdbcQuery) {
2525
this.dynamicQuery = dynamicQuery;
26-
this.jdbcTemplate = jdbcTemplate;
26+
this.jdbcQuery = jdbcQuery;
2727
}
2828

2929
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public class ScriptRuntime {
1010
public static Object running(String script, ScriptContext context) {
1111
Binding binding = new Binding();
1212
binding.setVariable("$hql", context.getDynamicQuery());
13-
binding.setVariable("$jdbc", context.getJdbcTemplate());
13+
binding.setVariable("$jdbc", context.getJdbcQuery());
1414
GroovyShell groovyShell = new GroovyShell(binding);
1515
Script userScript = groovyShell.parse(script);
1616
return userScript.run();

0 commit comments

Comments
 (0)