Skip to content

Commit bb754dd

Browse files
committed
support SQLBuilder<T>
1 parent 7ea56d8 commit bb754dd

File tree

12 files changed

+69
-66
lines changed

12 files changed

+69
-66
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
<groupId>com.codingapi.springboot</groupId>
1717
<artifactId>springboot-parent</artifactId>
18-
<version>2.10.9</version>
18+
<version>2.10.10</version>
1919

2020
<url>https://github.com/codingapi/springboot-framewrok</url>
2121
<name>springboot-parent</name>

springboot-starter-data-authorization/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<artifactId>springboot-parent</artifactId>
88
<groupId>com.codingapi.springboot</groupId>
9-
<version>2.10.9</version>
9+
<version>2.10.10</version>
1010
</parent>
1111

1212
<name>springboot-starter-data-authorization</name>

springboot-starter-data-fast/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>springboot-parent</artifactId>
77
<groupId>com.codingapi.springboot</groupId>
8-
<version>2.10.9</version>
8+
<version>2.10.10</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

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

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,49 +38,49 @@ public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException
3838
}
3939
}
4040

41-
public List<Map<String, Object>> queryForMapList(SQLBuilder builder) {
41+
public List<Map<String, Object>> queryForMapList(SQLBuilder<?> builder) {
4242
return queryForMapList(builder.getSQL(), builder.getParams());
4343
}
4444

4545
public List<Map<String, Object>> queryForMapList(String sql, Object... params) {
46-
return jdbcTemplate.query(sql, params, new CamelCaseRowMapper());
46+
return jdbcTemplate.query(sql, new CamelCaseRowMapper(), params);
4747
}
4848

49-
public <T> List<T> queryForList(SQLBuilder builder) {
50-
return (List<T>) queryForList(builder.getSQL(), builder.getClazz(), builder.getParams());
49+
public <T> List<T> queryForList(SQLBuilder<T> builder) {
50+
return queryForList(builder.getSQL(), builder.getClazz(), builder.getParams());
5151
}
5252

5353
public <T> List<T> queryForList(String sql, Class<T> clazz, Object... params) {
54-
return jdbcTemplate.query(sql, params, new BeanPropertyRowMapper<>(clazz));
54+
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(clazz), params);
5555
}
5656

57-
public <T> Page<T> queryForPage(SQLBuilder builder, PageRequest pageRequest) {
58-
return (Page<T>)queryForPage(builder.getSQL(), builder.getCountSQL(), builder.getClazz(), pageRequest, builder.getParams());
57+
public <T> Page<T> queryForPage(SQLBuilder<T> builder, PageRequest pageRequest) {
58+
return queryForPage(builder.getSQL(), builder.getCountSQL(), builder.getClazz(), pageRequest, builder.getParams());
5959
}
6060

6161
public <T> Page<T> queryForPage(String sql, String countSql, Class<T> clazz, PageRequest pageRequest, Object... params) {
62-
List<T> list = jdbcTemplate.query(sql, params, new BeanPropertyRowMapper<>(clazz));
62+
List<T> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(clazz), params);
6363
long count = this.countQuery(countSql, params);
6464
return new PageImpl<>(list, pageRequest, count);
6565
}
6666

6767
public <T> Page<T> queryForPage(String sql, Class<T> clazz, PageRequest pageRequest, Object... params) {
68-
String countSql = "select count(1) " + sql;
68+
String countSql = "SELECT COUNT(1) " + sql;
6969
return this.queryForPage(sql, countSql, clazz, pageRequest, params);
7070
}
7171

72-
public Page<Map<String, Object>> queryForMapPage(SQLBuilder builder, PageRequest pageRequest) {
72+
public Page<Map<String, Object>> queryForMapPage(SQLBuilder<?> builder, PageRequest pageRequest) {
7373
return queryForMapPage(builder.getSQL(), builder.getCountSQL(), pageRequest, builder.getParams());
7474
}
7575

7676
public Page<Map<String, Object>> queryForMapPage(String sql, String countSql, PageRequest pageRequest, Object... params) {
77-
List<Map<String, Object>> list = jdbcTemplate.query(sql, params, new CamelCaseRowMapper());
77+
List<Map<String, Object>> list = jdbcTemplate.query(sql, new CamelCaseRowMapper(), params);
7878
long count = this.countQuery(countSql, params);
7979
return new PageImpl<>(list, pageRequest, count);
8080
}
8181

8282
public Page<Map<String, Object>> queryForMapPage(String sql, PageRequest pageRequest, Object... params) {
83-
String countSql = "select count(1) " + sql;
83+
String countSql = "SELECT COUNT(1) " + sql;
8484
return this.queryForMapPage(sql, countSql, pageRequest, params);
8585
}
8686

@@ -92,6 +92,6 @@ private long countQuery(String sql, Object... params) {
9292
if (paramsLength > countSqlParamsLength) {
9393
System.arraycopy(params, 0, newParams, 0, countSqlParamsLength);
9494
}
95-
return jdbcTemplate.queryForObject(sql, newParams, Long.class);
95+
return jdbcTemplate.queryForObject(sql, Long.class, newParams);
9696
}
9797
}
Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.codingapi.springboot.fast.jpa;
22

3-
import com.codingapi.springboot.fast.jpa.map.MapViewResult;
4-
import com.codingapi.springboot.fast.jpa.map.QueryColumns;
53
import com.codingapi.springboot.fast.jpa.map.QueryColumnsContext;
4+
import com.codingapi.springboot.fast.jpa.map.QueryColumns;
5+
import com.codingapi.springboot.fast.jpa.map.MapViewResult;
66
import lombok.AllArgsConstructor;
77
import org.springframework.data.domain.Page;
88
import org.springframework.data.domain.PageImpl;
@@ -17,12 +17,12 @@ public class JPAQuery {
1717

1818
private final EntityManager entityManager;
1919

20-
public List<?> listQuery(SQLBuilder builder) {
20+
public <T> List<T> listQuery(SQLBuilder<T> builder) {
2121
return listQuery(builder.getClazz(),builder.getSQL(),builder.getParams());
2222
}
2323

24-
public List<?> listQuery(Class<?> clazz, String sql, Object... params) {
25-
TypedQuery<?> query = entityManager.createQuery(sql, clazz);
24+
public <T> List<T> listQuery(Class<T> clazz, String sql, Object... params) {
25+
TypedQuery<T> query = entityManager.createQuery(sql, clazz);
2626
if (params != null) {
2727
for (int i = 0; i < params.length; i++) {
2828
query.setParameter(i + 1, params[i]);
@@ -31,25 +31,25 @@ public List<?> listQuery(Class<?> clazz, String sql, Object... params) {
3131
return query.getResultList();
3232
}
3333

34-
public Page<?> pageQuery(SQLBuilder builder,PageRequest pageRequest) {
34+
public <T> Page<T> pageQuery(SQLBuilder<T> builder,PageRequest pageRequest) {
3535
return pageQuery(builder.getClazz(), builder.getSQL(), builder.getCountSQL(),pageRequest,builder.getParams());
3636
}
3737

3838

39-
public Page<?> pageQuery(Class<?> clazz, String sql, PageRequest pageRequest, Object... params) {
40-
return pageQuery(clazz,sql,"select count(1) " + sql,pageRequest,params);
39+
public <T> Page<T> pageQuery(Class<T> clazz, String sql, PageRequest pageRequest, Object... params) {
40+
return pageQuery(clazz,sql,"SELECT COUNT(1) " + sql,pageRequest,params);
4141
}
4242

43-
public Page<?> pageQuery(Class<?> clazz, String sql, String countSql, PageRequest pageRequest, Object... params) {
44-
TypedQuery<?> query = entityManager.createQuery(sql, clazz);
43+
public <T> Page<T> pageQuery(Class<T> clazz, String sql, String countSql, PageRequest pageRequest, Object... params) {
44+
TypedQuery<T> query = entityManager.createQuery(sql, clazz);
4545
if (params != null) {
4646
for (int i = 0; i < params.length; i++) {
4747
query.setParameter(i + 1, params[i]);
4848
}
4949
}
5050
query.setFirstResult(pageRequest.getPageNumber() * pageRequest.getPageSize());
5151
query.setMaxResults(pageRequest.getPageSize());
52-
return new PageImpl<>(query.getResultList(), pageRequest, countQuery(countSql, params));
52+
return new PageImpl<T>(query.getResultList(), pageRequest, countQuery(countSql, params));
5353
}
5454

5555

@@ -64,18 +64,17 @@ private long countQuery(String sql, Object... params) {
6464
}
6565

6666
public Page<MapViewResult> pageMapQuery(QueryColumns columns, String sql, String countSql, PageRequest pageRequest, Object... params) {
67-
String querySql = "select new com.codingapi.springboot.fast.jpa.map.MapViewResult('"+columns.getKey()+"',"+ String.join(",", columns.getColumnSql()) + ") " + sql;
68-
String countQuerySql = "select count(1) " + countSql;
69-
Page<MapViewResult> result = (Page<MapViewResult>) pageQuery(MapViewResult.class,querySql,countQuerySql,pageRequest,params);
67+
String querySql = "SELECT new com.codingapi.springboot.fast.jpa.map.MapViewResult('"+columns.getKey()+"',"+ String.join(",", columns.getColumnSql()) + ") " + sql;
68+
String countQuerySql = "SELECT COUNT(1) " + countSql;
69+
Page<MapViewResult> result = pageQuery(MapViewResult.class,querySql,countQuerySql,pageRequest,params);
7070
QueryColumnsContext.getInstance().clearCache(columns.getKey());
7171
return result;
7272
}
7373

74-
public List<?> listMapQuery(QueryColumns columns, String sql, Object... params) {
75-
String querySql = "select new com.codingapi.springboot.fast.jpa.map.MapViewResult('"+columns.getKey()+"',"+ String.join(",", columns.getColumnSql()) + ") " + sql;
76-
List<?> result = listQuery(MapViewResult.class,querySql,params);
74+
public List<MapViewResult> listMapQuery(QueryColumns columns, String sql, Object... params) {
75+
String querySql = "SELECT new com.codingapi.springboot.fast.jpa.map.MapViewResult('"+columns.getKey()+"',"+ String.join(",", columns.getColumnSql()) + ") " + sql;
76+
List<MapViewResult> result = listQuery(MapViewResult.class,querySql,params);
7777
QueryColumnsContext.getInstance().clearCache(columns.getKey());
7878
return result;
7979
}
80-
8180
}

springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/SQLBuilder.java

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,39 +5,44 @@
55
import java.util.ArrayList;
66
import java.util.List;
77

8-
public class SQLBuilder {
8+
public class SQLBuilder<T> {
99

10-
private final StringBuilder sqlBuilder;
10+
private final StringBuilder querySqlBuilder;
1111
private final StringBuilder countSQLBuilder;
1212
@Getter
1313
private int index;
1414
private final List<Object> params;
1515
@Getter
16-
private final Class<?> clazz;
16+
private final Class<T> clazz;
1717

1818
public SQLBuilder(String sql) {
1919
this(null, sql, "select count(1) from " + sql);
2020
}
2121

22-
public SQLBuilder(Class<?> clazz, String sql) {
23-
this(clazz, sql, "select count(1) from " + sql);
24-
}
25-
2622
public SQLBuilder(String sql,String countSql) {
2723
this(null, sql, countSql);
2824
}
2925

30-
public SQLBuilder(Class<?> clazz, String sql, String countSQL) {
26+
public SQLBuilder(Class<T> clazz, String sql) {
27+
this(clazz, sql, "select count(1) from " + sql);
28+
}
29+
30+
public SQLBuilder(Class<T> clazz, String sql, String countSQL) {
3131
this.countSQLBuilder = new StringBuilder(countSQL);
32-
this.sqlBuilder = new StringBuilder(sql);
32+
this.querySqlBuilder = new StringBuilder(sql);
3333
this.index = 1;
3434
this.params = new ArrayList<>();
3535
this.clazz = clazz;
3636
}
3737

38+
/**
39+
* Append SQL condition with a value.sql end value must be a placeholder (e.g., "?").
40+
* @param sql the SQL condition to append, e.g., "where id = ?"
41+
* @param value the value to bind to the SQL condition
42+
*/
3843
public void append(String sql, Object value) {
3944
if (value != null) {
40-
sqlBuilder.append(" ").append(sql).append(index).append(" ");
45+
querySqlBuilder.append(" ").append(sql).append(index).append(" ");
4146
countSQLBuilder.append(" ").append(sql).append(index).append(" ");
4247
params.add(value);
4348
index++;
@@ -55,12 +60,12 @@ public void addParam(Object value,int index){
5560
}
5661

5762
public void appendSql(String sql){
58-
sqlBuilder.append(" ").append(sql).append(" ");
63+
querySqlBuilder.append(" ").append(sql).append(" ");
5964
countSQLBuilder.append(" ").append(sql).append(" ");
6065
}
6166

6267
public String getSQL() {
63-
return sqlBuilder.toString();
68+
return querySqlBuilder.toString();
6469
}
6570

6671
public String getCountSQL() {

springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/DynamicNativeRepository.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
@NoRepositoryBean
1313
public interface DynamicNativeRepository<T, ID> extends BaseRepository<T, ID> {
1414

15-
default List<Map<String, Object>> dynamicNativeListMapQuery(SQLBuilder builder) {
15+
default List<Map<String, Object>> dynamicNativeListMapQuery(SQLBuilder<?> builder) {
1616
return JdbcQueryContext.getInstance().getJdbcQuery().queryForMapList(builder);
1717
}
1818

@@ -28,7 +28,7 @@ default <V> List<V> dynamicNativeListQuery(Class<V> clazz, String sql, Object...
2828
return JdbcQueryContext.getInstance().getJdbcQuery().queryForList(sql, clazz, params);
2929
}
3030

31-
default <V> List<V> dynamicNativeListQuery(SQLBuilder sqlBuilder) {
31+
default <V> List<V> dynamicNativeListQuery(SQLBuilder<V> sqlBuilder) {
3232
return JdbcQueryContext.getInstance().getJdbcQuery().queryForList(sqlBuilder);
3333
}
3434

@@ -48,11 +48,11 @@ default <V> Page<V> dynamicNativePageQuery(Class<V> clazz, String sql, PageReque
4848
return JdbcQueryContext.getInstance().getJdbcQuery().queryForPage(sql, clazz, request, params);
4949
}
5050

51-
default <V> Page<V> dynamicNativePageQuery(SQLBuilder sqlBuilder, PageRequest request) {
51+
default <V> Page<V> dynamicNativePageQuery(SQLBuilder<V> sqlBuilder, PageRequest request) {
5252
return JdbcQueryContext.getInstance().getJdbcQuery().queryForPage(sqlBuilder, request);
5353
}
5454

55-
default Page<Map<String, Object>> dynamicNativeMapPageMapQuery(SQLBuilder sqlBuilder,PageRequest request) {
55+
default Page<Map<String, Object>> dynamicNativeMapPageMapQuery(SQLBuilder<?> sqlBuilder,PageRequest request) {
5656
return JdbcQueryContext.getInstance().getJdbcQuery().queryForMapPage(sqlBuilder,request);
5757
}
5858

springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/DynamicRepository.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,43 +11,42 @@
1111
import java.util.List;
1212

1313
@NoRepositoryBean
14-
@SuppressWarnings("unchecked")
1514
public interface DynamicRepository<T, ID> extends BaseRepository<T, ID> {
1615

17-
default List<T> dynamicListQuery(SQLBuilder builder) {
18-
return (List<T>) JpaQueryContext.getInstance().getJPAQuery().listQuery(builder);
16+
default <V> List<V> dynamicListQuery(SQLBuilder<V> builder) {
17+
return JpaQueryContext.getInstance().getJPAQuery().listQuery(builder);
1918
}
2019

2120
default List<T> dynamicListQuery(String sql, Object... params) {
22-
return (List<T>) JpaQueryContext.getInstance().getJPAQuery().listQuery(getEntityClass(), sql, params);
21+
return JpaQueryContext.getInstance().getJPAQuery().listQuery(getEntityClass(), sql, params);
2322
}
2423

2524
default <V> List<V> dynamicListQuery(Class<V> clazz, String sql, Object... params) {
26-
return (List<V>) JpaQueryContext.getInstance().getJPAQuery().listQuery(clazz, sql, params);
25+
return JpaQueryContext.getInstance().getJPAQuery().listQuery(clazz, sql, params);
2726
}
2827

29-
default Page<T> dynamicPageQuery(SQLBuilder builder, PageRequest request) {
30-
return (Page<T>) JpaQueryContext.getInstance().getJPAQuery().pageQuery(builder, request);
28+
default <V> Page<V> dynamicPageQuery(SQLBuilder<V> builder, PageRequest request) {
29+
return JpaQueryContext.getInstance().getJPAQuery().pageQuery(builder, request);
3130
}
3231

3332
default Page<T> dynamicPageQuery(String sql, String countSql, PageRequest request, Object... params) {
34-
return (Page<T>) JpaQueryContext.getInstance().getJPAQuery().pageQuery(getEntityClass(), sql, countSql, request, params);
33+
return JpaQueryContext.getInstance().getJPAQuery().pageQuery(getEntityClass(), sql, countSql, request, params);
3534
}
3635

3736
default Page<T> dynamicPageQuery(String sql, PageRequest request, Object... params) {
38-
return (Page<T>) JpaQueryContext.getInstance().getJPAQuery().pageQuery(getEntityClass(), sql, request, params);
37+
return JpaQueryContext.getInstance().getJPAQuery().pageQuery(getEntityClass(), sql, request, params);
3938
}
4039

4140
default <V> Page<V> dynamicPageQuery(Class<V> clazz, String sql, String countSql, PageRequest request, Object... params) {
42-
return (Page<V>) JpaQueryContext.getInstance().getJPAQuery().pageQuery(clazz, sql, countSql, request, params);
41+
return JpaQueryContext.getInstance().getJPAQuery().pageQuery(clazz, sql, countSql, request, params);
4342
}
4443

4544
default Page<MapViewResult> dynamicMapPageQuery(QueryColumns columns, String sql, String countSql, PageRequest request, Object... params) {
4645
return JpaQueryContext.getInstance().getJPAQuery().pageMapQuery(columns, sql, countSql, request, params);
4746
}
4847

49-
default List<MapViewResult> dynamicMapListQuery(QueryColumns columns, String sql, Object... params) {
50-
return (List<MapViewResult>) JpaQueryContext.getInstance().getJPAQuery().listMapQuery(columns, sql, params);
48+
default List<MapViewResult> dynamicMapListQuery(QueryColumns columns, String sql, Object... params) {
49+
return JpaQueryContext.getInstance().getJPAQuery().listMapQuery(columns, sql, params);
5150
}
5251

5352
}

springboot-starter-flow/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<artifactId>springboot-parent</artifactId>
88
<groupId>com.codingapi.springboot</groupId>
9-
<version>2.10.9</version>
9+
<version>2.10.10</version>
1010
</parent>
1111

1212
<name>springboot-starter-flow</name>

springboot-starter-security/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<artifactId>springboot-parent</artifactId>
88
<groupId>com.codingapi.springboot</groupId>
9-
<version>2.10.9</version>
9+
<version>2.10.10</version>
1010
</parent>
1111

1212
<artifactId>springboot-starter-security</artifactId>

0 commit comments

Comments
 (0)