Procedure.java
3.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
package io.mycat.route;
import com.google.common.base.*;
import java.io.Serializable;
import java.sql.Types;
import java.util.*;
/**
* Created by magicdoom on 2016/3/24.
*
*
* 1.no return
ok
2.simple
ok
row
eof
3.list
row
row
row
row
eof
ok
*/
public class Procedure implements Serializable
{
private String originSql;
private String name;
private String callSql;
private String setSql ;
private String selectSql;
private Set<String> selectColumns=new LinkedHashSet<>();
private Set<String> listFields=new LinkedHashSet<>();
private boolean isResultList=false;
public boolean isResultList()
{
return isResultList;
}
public boolean isResultSimpleValue()
{
return selectSql!=null&&!isResultList;
}
public boolean isResultNothing()
{
return selectSql==null&&!isResultList;
}
public void setResultList(boolean resultList)
{
isResultList = resultList;
}
public String toPreCallSql(String dbType)
{
StringBuilder sb=new StringBuilder();
sb.append("{ call ") ;
sb.append(this.getName()).append("(") ;
Collection<ProcedureParameter> paramters= this.getParamterMap().values();
int j=0;
for (ProcedureParameter paramter : paramters)
{
String name="?";
String joinStr= j==this.getParamterMap().size()-1?name:name+"," ;
sb.append(joinStr);
j++;
}
sb.append(")}") ;
return sb.toString();
}
public String toChangeCallSql(String dbType)
{
StringBuilder sb=new StringBuilder();
sb.append("call ") ;
sb.append(this.getName()).append("(") ;
Collection<ProcedureParameter> paramters= this.getParamterMap().values();
int j=0;
for (ProcedureParameter paramter : paramters)
{
Object value=paramter.getValue()!=null&& Types.VARCHAR==paramter.getJdbcType() ?"'"+paramter.getValue()+"'":paramter.getValue();
String name=paramter.getValue()==null?paramter.getName():String.valueOf(value);
String joinStr= j==this.getParamterMap().size()-1?name:name+"," ;
sb.append(joinStr);
j++;
}
sb.append(")") ;
if(isResultSimpleValue())
{
sb.append(";select ");
sb.append( Joiner.on(",").join(selectColumns) );
}
return sb.toString();
}
public Set<String> getListFields()
{
return listFields;
}
public void setListFields(Set<String> listFields)
{
this.listFields = listFields;
}
public Set<String> getSelectColumns()
{
return selectColumns;
}
public String getSetSql()
{
return setSql;
}
public void setSetSql(String setSql)
{
this.setSql = setSql;
}
public String getSelectSql()
{
return selectSql;
}
public void setSelectSql(String selectSql)
{
this.selectSql = selectSql;
}
private Map<String,ProcedureParameter> paramterMap=new LinkedHashMap<>();
public String getOriginSql()
{
return originSql;
}
public void setOriginSql(String originSql)
{
this.originSql = originSql;
}
public Map<String, ProcedureParameter> getParamterMap()
{
return paramterMap;
}
public void setParamterMap(Map<String, ProcedureParameter> paramterMap)
{
this.paramterMap = paramterMap;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getCallSql()
{
return callSql;
}
public void setCallSql(String callSql)
{
this.callSql = callSql;
}
}