Skip to content

Commit 26424cf

Browse files
committed
view query
1 parent ee69b91 commit 26424cf

File tree

8 files changed

+82
-11
lines changed

8 files changed

+82
-11
lines changed

pom.xml

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

66
<groupId>com.codingapi</groupId>
77
<artifactId>simple-mybatis</artifactId>
8-
<version>1.1.0</version>
8+
<version>1.1.1</version>
99
<name>simple-mybatis</name>
1010
<url>https://github.com/codingapi/simple-mybatis</url>
1111
<description>simple mybatis project for Spring Boot</description>
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.codingapi.simplemybatis.mapper;
2+
3+
import com.codingapi.simplemybatis.page.PageList;
4+
import com.codingapi.simplemybatis.page.PageRequest;
5+
import com.codingapi.simplemybatis.provider.QueryProvider;
6+
import com.codingapi.simplemybatis.query.Query;
7+
import com.codingapi.simplemybatis.utils.MapBeanUtils;
8+
import com.codingapi.simplemybatis.utils.MapCamelUtils;
9+
import com.github.pagehelper.PageHelper;
10+
import org.apache.ibatis.annotations.Param;
11+
import org.apache.ibatis.annotations.SelectProvider;
12+
13+
import java.util.List;
14+
import java.util.Map;
15+
import java.util.function.Supplier;
16+
import java.util.stream.Collectors;
17+
18+
/**
19+
* @author lorne
20+
* @date 2020/4/27
21+
* @description
22+
*/
23+
public interface ViewMapper {
24+
25+
@SelectProvider(type = QueryProvider.class, method = "queryView")
26+
List<Map<String, Object>> queryMap(@Param("query") Query query);
27+
28+
default <V> List<V> queryView(Class<V> clazz, Query query) {
29+
List<Map<String, Object>> list = queryMap(query);
30+
return list.stream().map(item -> {
31+
MapCamelUtils.camelMap(item);
32+
return MapBeanUtils.toBean(clazz, item);
33+
}).collect(Collectors.toList());
34+
}
35+
36+
default <T> PageList<T> page(int nowPage, int pageSize, Supplier<List<T>> supplier) {
37+
PageHelper.startPage(nowPage, pageSize);
38+
return new PageList<>(supplier.get());
39+
}
40+
41+
default <T> PageList<T> page(PageRequest request, Supplier<List<T>> supplier) {
42+
return page(request.getNowPage(), request.getPageSize(), supplier);
43+
}
44+
45+
46+
}

src/main/java/com/codingapi/simplemybatis/query/QueryBuilder.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,17 @@ public List<QueryParameter> getParameterList() {
3030
return parameterList;
3131
}
3232

33-
public void column(QueryParameter queryParameter) {
33+
public Condition column(QueryParameter queryParameter) {
3434
parameterList.add(queryParameter);
35+
return condition;
3536
}
3637

37-
public void column(String key, Object val, QueryCondition condition) {
38-
parameterList.add(new QueryParameter(key, val, condition));
38+
public Condition column(String key, Object val,String sql) {
39+
parameterList.add(new QueryParameter(key, val, sql));
40+
return condition;
3941
}
4042

43+
4144
/**
4245
* 完全匹配
4346
*

src/main/java/com/codingapi/simplemybatis/query/QueryConditionParser.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public QueryConditionParser() {
2323
}
2424

2525
public String parserParam(QueryParameter queryParameter) {
26+
queryParameter.getCondition().equals(QueryCondition.SQL);
2627
for (IConditionParser conditionParser : conditionParsers) {
2728
if (conditionParser.type().equals(queryParameter.getCondition())) {
2829
return conditionParser.condition(queryParameter);

src/main/java/com/codingapi/simplemybatis/query/QueryParameter.java

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,30 @@
99
*/
1010
public class QueryParameter {
1111

12+
private String key;
13+
private Object val;
14+
private Object two;
15+
private String sql;
16+
private QueryCondition condition;
17+
18+
1219
public QueryParameter(String key, Object val, QueryCondition condition) {
1320
this.key = key;
1421
this.val = val;
1522
this.condition = condition;
1623
}
1724

18-
private String key;
19-
private Object val;
20-
private Object two;
21-
private QueryCondition condition;
25+
public QueryParameter(String key, Object val, String sql) {
26+
this.key = key;
27+
this.val = val;
28+
this.sql = sql;
29+
this.condition = QueryCondition.SQL;
30+
}
31+
32+
33+
public String getSql() {
34+
return sql;
35+
}
2236

2337
public String getKey() {
2438
return key;

src/main/java/com/codingapi/simplemybatis/query/QuerySqlBuilder.java

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

33

4+
import com.codingapi.simplemybatis.query.parser.QueryCondition;
45
import org.apache.commons.lang3.StringUtils;
56

67
/**
@@ -42,7 +43,11 @@ private boolean hasParameter() {
4243

4344
private void appendParameter() {
4445
for (QueryParameter queryParameter : query.getParameterList()) {
45-
currentSql.append(queryConditionParser.parserParam(queryParameter));
46+
if(queryParameter.getCondition().equals(QueryCondition.SQL)){
47+
currentSql.append(queryParameter.getSql());
48+
}else {
49+
currentSql.append(queryConditionParser.parserParam(queryParameter));
50+
}
4651
currentSql.append(query.getCondition());
4752
}
4853
}

src/main/java/com/codingapi/simplemybatis/query/parser/QueryCondition.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public enum QueryCondition {
1313
BETWEEN,
1414
GREATER,
1515
LESS,
16-
IN
16+
IN,
17+
SQL
1718

1819
}

src/test/java/com/codingapi/simplemybatis/query/QueryTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ void queryView() throws InvocationTargetException, IllegalAccessException {
4848
Query query = QueryBuilder.Build()
4949
.select("select * from t_demo d join t_test t on d.id = t.demo_id ")
5050
.where()
51-
.equal("d.name","hello")
51+
.column("name","234","d.name = #{name}")
52+
// .equal("d.name","hello")
5253
.and()
5354
.date("d.create_time","2020-01-12")
5455
.or()

0 commit comments

Comments
 (0)