|
1 | 1 | package com.softdev.system.generator.util;
|
2 | 2 |
|
3 |
| - |
| 3 | +import com.softdev.system.generator.util.mysqlJavaTypeUtil; |
4 | 4 | import com.alibaba.fastjson.JSON;
|
5 | 5 | import com.alibaba.fastjson.JSONArray;
|
6 | 6 | import com.alibaba.fastjson.JSONObject;
|
@@ -196,84 +196,25 @@ public static ClassInfo processTableIntoClassInfo(ParamInfo paramInfo)
|
196 | 196 | fieldName = columnName;
|
197 | 197 | }
|
198 | 198 | columnLine = columnLine.substring(columnLine.indexOf("`") + 1).trim();
|
199 |
| - |
| 199 | + String mysqlType = columnLine.split("\\s+")[1]; |
| 200 | + if(mysqlType.contains("(")){ |
| 201 | + mysqlType = mysqlType.substring(0, mysqlType.indexOf("(")); |
| 202 | + } |
200 | 203 | //swagger class
|
201 | 204 | String swaggerClass = "string" ;
|
202 |
| - if (columnLine.contains(" tinyint")) { |
203 |
| - swaggerClass = "integer"; |
204 |
| - } else if (columnLine.contains(" int") || columnLine.contains(" smallint")) { |
205 |
| - swaggerClass = "integer"; |
206 |
| - } else if (columnLine.contains(" bigint")) { |
207 |
| - swaggerClass = "integer"; |
208 |
| - } else if (columnLine.contains(" float")) { |
209 |
| - swaggerClass = "number"; |
210 |
| - } else if (columnLine.contains(" double")) { |
211 |
| - swaggerClass = "number"; |
212 |
| - } else if (columnLine.contains(" boolean")) { |
213 |
| - swaggerClass = "boolean"; |
| 205 | + if(mysqlJavaTypeUtil.getMysqlSwaggerTypeMap().containsKey(mysqlType)){ |
| 206 | + swaggerClass = mysqlJavaTypeUtil.getMysqlSwaggerTypeMap().get(mysqlType); |
214 | 207 | }
|
215 | 208 | // field class
|
216 | 209 | // int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
|
217 |
| - String fieldClass = Object.class.getSimpleName(); |
| 210 | + String fieldClass = "String"; |
218 | 211 | //2018-9-16 zhengk 补充char/clob/blob/json等类型,如果类型未知,默认为String
|
219 | 212 | //2018-11-22 lshz0088 处理字段类型的时候,不严谨columnLine.contains(" int") 类似这种的,可在前后适当加一些空格之类的加以区分,否则当我的字段包含这些字符的时候,产生类型判断问题。
|
220 | 213 | //2020-05-03 MOSHOW.K.ZHENG 优化对所有类型的处理
|
221 | 214 | //2020-10-20 zhengkai 新增包装类型的转换选择
|
222 |
| - if (columnLine.contains(" tinyint")) { |
223 |
| - //20191115 MOSHOW.K.ZHENG 支持对tinyint的特殊处理 |
224 |
| - fieldClass = MapUtil.getString(paramInfo.getOptions(),"tinyintTransType");; |
225 |
| - } else if (columnLine.contains(" int") || columnLine.contains(" smallint")) { |
226 |
| - fieldClass = (isPackageType)?Integer.class.getSimpleName():"int"; |
227 |
| - } else if (columnLine.contains(" bigint")) { |
228 |
| - fieldClass = (isPackageType)?Long.class.getSimpleName():"long"; |
229 |
| - } else if (columnLine.contains(" float")) { |
230 |
| - fieldClass = (isPackageType)?Float.class.getSimpleName():"float"; |
231 |
| - } else if (columnLine.contains(" double")) { |
232 |
| - fieldClass = (isPackageType)?Double.class.getSimpleName():"double"; |
233 |
| - } else if (columnLine.contains(" time") || columnLine.contains(" date") || columnLine.contains(" datetime") || columnLine.contains(" timestamp")) { |
234 |
| - fieldClass = MapUtil.getString(paramInfo.getOptions(),"timeTransType"); |
235 |
| - } else if (columnLine.contains(" varchar") || columnLine.contains(" text") || columnLine.contains(" char") |
236 |
| - || columnLine.contains(" clob") || columnLine.contains(" blob") || columnLine.contains(" json")) { |
237 |
| - fieldClass = String.class.getSimpleName(); |
238 |
| - } else if (columnLine.contains(" decimal") || columnLine.contains(" number")) { |
239 |
| - //2018-11-22 lshz0088 建议对number类型增加int,long,BigDecimal的区分判断 |
240 |
| - //如果startKh大于等于0,则表示有设置取值范围 |
241 |
| - int startKh = columnLine.indexOf("("); |
242 |
| - if (startKh >= 0) { |
243 |
| - int endKh = columnLine.indexOf(")", startKh); |
244 |
| - String[] fanwei = columnLine.substring(startKh + 1, endKh).split(","); |
245 |
| - //2019-1-5 zhengk 修复@arthaschan反馈的超出范围错误 |
246 |
| - //System.out.println("fanwei"+ JSON.toJSONString(fanwei)); |
247 |
| - // //number(20,6) fanwei["20","6"] |
248 |
| - // //number(0,6) fanwei["0","6"] |
249 |
| - // //number(20,0) fanwei["20","0"] |
250 |
| - // //number(20) fanwei["20"] |
251 |
| - //如果括号里是1位或者2位且第二位为0,则进行特殊处理。只有有小数位,都设置为BigDecimal。 |
252 |
| - if ((fanwei.length > 1 && "0".equals(fanwei[1])) || fanwei.length == 1) { |
253 |
| - int length = Integer.parseInt(fanwei[0]); |
254 |
| - if (fanwei.length > 1) { |
255 |
| - length = Integer.valueOf(fanwei[1]); |
256 |
| - } |
257 |
| - //数字范围9位及一下用Integer,大的用Long |
258 |
| - if (length <= 9) { |
259 |
| - fieldClass = (isPackageType)?Integer.class.getSimpleName():"int"; |
260 |
| - } else { |
261 |
| - fieldClass = (isPackageType)?Long.class.getSimpleName():"long"; |
262 |
| - } |
263 |
| - } else { |
264 |
| - //有小数位数一律使用BigDecimal |
265 |
| - fieldClass = BigDecimal.class.getSimpleName(); |
266 |
| - } |
267 |
| - } else { |
268 |
| - fieldClass = BigDecimal.class.getSimpleName(); |
269 |
| - } |
270 |
| - } else if (columnLine.contains(" boolean")) { |
271 |
| - //20190910 MOSHOW.K.ZHENG 新增对boolean的处理(感谢@violinxsc的反馈)以及修复tinyint类型字段无法生成boolean类型问题(感谢@hahaYhui的反馈) |
272 |
| - fieldClass = (isPackageType)?Boolean.class.getSimpleName():"boolean"; |
273 |
| - } else { |
274 |
| - fieldClass = String.class.getSimpleName(); |
| 215 | + if(mysqlJavaTypeUtil.getMysqlJavaTypeMap().containsKey(mysqlType)){ |
| 216 | + fieldClass = mysqlJavaTypeUtil.getMysqlJavaTypeMap().get(mysqlType); |
275 | 217 | }
|
276 |
| - |
277 | 218 | // field comment,MySQL的一般位于field行,而pgsql和oralce多位于后面。
|
278 | 219 | String fieldComment = null;
|
279 | 220 | if (tableSql.contains("comment on column") && (tableSql.contains("." + columnName + " is ") || tableSql.contains(".`" + columnName + "` is"))) {
|
|
0 commit comments