11package com .codingapi .springboot .fast .mapping ;
22
33import com .codingapi .springboot .fast .dynamic .DynamicQuery ;
4+ import com .codingapi .springboot .fast .jdbc .JdbcQuery ;
45import lombok .AllArgsConstructor ;
56import lombok .SneakyThrows ;
6- import org .apache .commons .text .CaseUtils ;
7- import org .springframework .jdbc .core .BeanPropertyRowMapper ;
87import org .springframework .jdbc .core .JdbcTemplate ;
9- import org .springframework .jdbc .core .RowMapper ;
108import org .springframework .web .bind .annotation .RequestMethod ;
119import org .springframework .web .bind .annotation .ResponseBody ;
1210
1311import java .lang .reflect .Method ;
14- import java .sql .ResultSet ;
15- import java .sql .ResultSetMetaData ;
16- import java .sql .SQLException ;
17- import java .util .HashMap ;
1812import java .util .List ;
1913import java .util .Map ;
2014
21- @ AllArgsConstructor
2215public 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}
0 commit comments