Skip to content

Commit 2343dc1

Browse files
committed
dev-1.1.1
1 parent 26424cf commit 2343dc1

20 files changed

+204
-504
lines changed

readme.md

Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -146,32 +146,31 @@ query 通过QueryBuilder来创建,当查询返回的是表的数据,则不
146146
select语句中的字段可以用下划线,也可以直接处理成小驼峰。都可以转成java bean对象。
147147
```java
148148
@Test
149-
void viewList(){
150-
//select d.name,d.super_id from t_demo d join t_test t on t.demo_id = d.id where d.time = STR_TO_DATE('2020-04-12','%Y-$m-%d') or d.id = 31 and d.id in (1,2,3,4,5,6,7,8,9,10) and d.name like '%2%' order by d.name desc
151-
List<DemoView> list =
152-
demoMapper.queryView(
153-
DemoView.class,
154-
QueryBuilder.Build()
155-
.select("select d.name,d.super_id from t_demo d join t_test t on t.demo_id = d.id ")
156-
.where()
157-
.date("d.time","2020-04-12")
158-
.or()
159-
.equal("d.id",31)
160-
.and()
161-
.in("d.id",1,2,3,4,5,6,7,8,9,10)
162-
.and()
163-
.like("d.name","2")
164-
.orderBy("d.name desc")
165-
.builder());
166-
log.info("list:{}",list);
167-
}
168-
169-
@Test
170-
void queryList(){
171-
//select * from t_demo where name = '123'
172-
List<Demo> list = demoMapper.query(QueryBuilder.Build().where().equal("name","123").builder());
173-
log.info("list:{}",list);
174-
}
149+
void viewList(){
150+
List<DemoView> list =
151+
demoMapper.queryView(
152+
DemoView.class,
153+
QueryBuilder.Build()
154+
.select("select * from t_demo d left join t_refrigerator r on d.id = r.ID ")
155+
.where()
156+
.condition("d.id between #{small} and #{larger}", Map.of("small",1,"larger",10))
157+
.or()
158+
.condition("r.state = #{state}",1)
159+
.and()
160+
.condition("d.id in (${ids})",1,2,3,4,5,6,7,8,9,10)
161+
.or()
162+
.condition("d.name like '%${name}%'","2")
163+
.orderBy("d.id desc")
164+
.builder());
165+
log.info("list:{}",list);
166+
}
167+
168+
@Test
169+
void queryList(){
170+
//select * from t_demo where name = '123'
171+
List<Demo> list = demoMapper.query(QueryBuilder.Build().where().condition("name=#{name}","123").builder());
172+
log.info("list:{}",list);
173+
}
175174
```
176175
## 示例
177176

src/main/java/com/codingapi/simplemybatis/parser/SqlParser.java

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

33
import com.codingapi.simplemybatis.query.Query;
4-
import com.codingapi.simplemybatis.query.QuerySqlBuilder;
4+
import com.codingapi.simplemybatis.query.SqlBuilder;
55

66
import java.lang.reflect.InvocationTargetException;
77
import java.util.List;
@@ -37,8 +37,8 @@ public String createSelectAll() {
3737
}
3838

3939
public String createQuery(Query query) {
40-
QuerySqlBuilder querySqlBuilder = new QuerySqlBuilder(tableInfo.columnToFiled(), tableInfo.getTableName(), query);
41-
return querySqlBuilder.getSql();
40+
SqlBuilder sqlBuilder = new SqlBuilder(tableInfo.columnToFiled(), tableInfo.getTableName(), query);
41+
return sqlBuilder.getSql();
4242
}
4343

4444

src/main/java/com/codingapi/simplemybatis/provider/QueryProvider.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.codingapi.simplemybatis.parser.SqlParser;
44
import com.codingapi.simplemybatis.query.Query;
5-
import com.codingapi.simplemybatis.query.QuerySqlBuilder;
5+
import com.codingapi.simplemybatis.query.SqlBuilder;
66
import org.apache.ibatis.annotations.Param;
77
import org.apache.ibatis.builder.annotation.ProviderContext;
88

@@ -29,8 +29,8 @@ public String query(@Param("query") Query query, ProviderContext context) throws
2929

3030

3131
public String queryView(@Param("query") Query query, ProviderContext context) throws IllegalAccessException, InvocationTargetException {
32-
QuerySqlBuilder querySqlBuilder = new QuerySqlBuilder(query.getSelect(), null, query);
33-
return querySqlBuilder.getSql();
32+
SqlBuilder sqlBuilder = new SqlBuilder(query.getSelect(), null, query);
33+
return sqlBuilder.getSql();
3434
}
3535

3636

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package com.codingapi.simplemybatis.query;
2+
3+
import com.codingapi.simplemybatis.utils.PatternMatcherHelper;
4+
5+
import java.util.HashMap;
6+
import java.util.Map;
7+
import java.util.Set;
8+
9+
/**
10+
* @author lorne
11+
* @date 2020/4/15
12+
* @description
13+
*/
14+
public class ConditionParameter {
15+
16+
private String sql;
17+
private Map<String,Object> map;
18+
19+
public ConditionParameter(String sql) {
20+
this.map = new HashMap<>();
21+
this.sql = sql;
22+
}
23+
24+
public ConditionParameter(String key, Object val, String sql) {
25+
this.map = new HashMap<>();
26+
this.sql = sql;
27+
map.put(key,val);
28+
}
29+
30+
public ConditionParameter(Map<String,Object> map, String sql) {
31+
this.map = map;
32+
this.sql = sql;
33+
}
34+
35+
36+
public ConditionParameter(Object val, String sql) {
37+
this.map = new HashMap<>();
38+
String key = new PatternMatcherHelper(PatternMatcherHelper.BRACE_MATCHER).matcher(sql);
39+
map.put(key,val);
40+
this.sql = sql;
41+
}
42+
43+
44+
public String getSql() {
45+
for(String key:keys()) {
46+
sql = sql.replace(String.format("{%s}", key), String.format("{%s}", getQueryParamKey(key)));
47+
}
48+
return sql;
49+
}
50+
51+
public Object getVal(String key) {
52+
return map.get(key);
53+
}
54+
55+
public Set<String> keys() {
56+
return map.keySet();
57+
}
58+
59+
private String getQueryParamKey(String key) {
60+
return String.format("query.data.%s", key);
61+
}
62+
63+
64+
}

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

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
package com.codingapi.simplemybatis.query;
22

3-
import com.codingapi.simplemybatis.query.parser.QueryCondition;
4-
53
import java.util.HashMap;
64
import java.util.List;
75
import java.util.Map;
6+
import java.util.Set;
87

98
/**
109
* @author lorne
@@ -14,24 +13,24 @@
1413

1514
public class Query {
1615

17-
private List<QueryParameter> parameterList;
16+
private List<ConditionParameter> parameterList;
1817

1918
private List<String> conditions;
2019

2120
private int index = 0;
2221

2322
private String select;
2423

25-
private String orderBy;
24+
private String bySql;
2625

2726
public Map<String, Object> data;
2827

2928

30-
protected Query(String select, List<QueryParameter> parameterList, List<String> conditions, String orderBy) {
29+
protected Query(String select, List<ConditionParameter> parameterList, List<String> conditions, String bySql) {
3130
this.select = select;
3231
this.parameterList = parameterList;
3332
this.conditions = conditions;
34-
this.orderBy = orderBy;
33+
this.bySql = bySql;
3534
this.data = new HashMap<>();
3635
pushData();
3736
}
@@ -40,15 +39,15 @@ public String getSelect() {
4039
return select;
4140
}
4241

43-
public String getOrderBy() {
44-
return orderBy;
42+
public String getBySql() {
43+
return bySql;
4544
}
4645

4746
public Map<String, Object> getData() {
4847
return data;
4948
}
5049

51-
public List<QueryParameter> getParameterList() {
50+
public List<ConditionParameter> getParameterList() {
5251
return parameterList;
5352
}
5453

@@ -61,12 +60,10 @@ public String getCondition() {
6160
}
6261

6362
private void pushData() {
64-
for (QueryParameter queryParameter : parameterList) {
65-
if (queryParameter.getCondition().equals(QueryCondition.BETWEEN)) {
66-
data.put(queryParameter.getKey(), queryParameter.getVal());
67-
data.put(queryParameter.getTwoKey(), queryParameter.getTwo());
68-
} else {
69-
data.put(queryParameter.getKey(), queryParameter.getVal());
63+
for (ConditionParameter parameter : parameterList) {
64+
Set<String> keys = parameter.keys();
65+
for (String key : keys) {
66+
data.put(key, parameter.getVal(key));
7067
}
7168
}
7269
}

0 commit comments

Comments
 (0)