mirror of
https://github.com/moshowgame/SpringBootCodeGenerator.git
synced 2025-12-26 05:48:33 +08:00
优化正则表达式点号的处理,优化处理字段类型,对number类型增加int,long,BigDecimal的区分判断(感谢@lshz0088的指导)
This commit is contained in:
parent
506c770a5d
commit
09836c1da5
@ -16,6 +16,7 @@ SpringBootCodeGenerator
|
||||
<tr><td>CSDN博客</td> <td>http://blog.csdn.net/moshowgame</td></tr>
|
||||
<tr><td></td> <td></td></tr>
|
||||
<tr><td>更新日期</td> <td>更新内容</td></tr>
|
||||
<tr><td>20181122<td>优化正则表达式点号的处理,优化处理字段类型,对number类型增加int,long,BigDecimal的区分判断(感谢@lshz0088的指导)。</td></tr>
|
||||
<tr><td>20181108<td>修复非字段描述"KEY FK_xxxx (xxxx)"导致生成KEY字段情况(感谢@tornadoorz反馈)。</td></tr>
|
||||
<tr><td>20181018<td>支持double(x,x)的类型,以及comment里面包含一些特殊字符的处理(感谢@tanwubo的反馈)。</td></tr>
|
||||
<tr><td>20181010<td>CDN变更,修复CDN不稳定导致网页js报错问题。</td></tr>
|
||||
|
||||
@ -90,7 +90,8 @@ public class IndexController {
|
||||
}
|
||||
}
|
||||
logger.info("生成代码行数:{}", lineNum);
|
||||
logger.info("生成代码数据:{}", result);
|
||||
//测试环境可自行开启
|
||||
//logger.info("生成代码数据:{}", result);
|
||||
return new ReturnT<Map<String, String>>(result);
|
||||
} catch (IOException | TemplateException e) {
|
||||
logger.error(e.getMessage(), e);
|
||||
|
||||
@ -164,7 +164,8 @@ public class TableParseUtil {
|
||||
columnLine = columnLine.substring(columnLine.indexOf("`")+1).trim(); // int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
|
||||
String fieldClass = Object.class.getSimpleName();
|
||||
//2018-9-16 zhengk 补充char/clob/blob/json等类型,如果类型未知,默认为String
|
||||
if (columnLine.contains("int") || columnLine.contains("tinyint") || columnLine.contains("smallint")) {
|
||||
//2018-11-22 lshz0088 处理字段类型的时候,不严谨columnLine.contains(" int") 类似这种的,可在前后适当加一些空格之类的加以区分,否则当我的字段包含这些字符的时候,产生类型判断问题。
|
||||
if (columnLine.contains(" int") || columnLine.contains("tinyint") || columnLine.contains("smallint")) {
|
||||
fieldClass = Integer.TYPE.getSimpleName();
|
||||
} else if (columnLine.contains("bigint")) {
|
||||
fieldClass = Long.TYPE.getSimpleName();
|
||||
@ -174,12 +175,32 @@ public class TableParseUtil {
|
||||
fieldClass = Double.TYPE.getSimpleName();
|
||||
} else if (columnLine.contains("datetime") || columnLine.contains("timestamp")) {
|
||||
fieldClass = Date.class.getSimpleName();
|
||||
} else if (columnLine.contains("varchar") || columnLine.contains("text")|| columnLine.contains("char")
|
||||
} else if (columnLine.contains("varchar") || columnLine.contains(" text")|| columnLine.contains("char")
|
||||
|| columnLine.contains("clob")||columnLine.contains("blob")||columnLine.contains("json")) {
|
||||
fieldClass = String.class.getSimpleName();
|
||||
} else if (columnLine.contains("decimal")||columnLine.contains("number")) {
|
||||
fieldClass = BigDecimal.class.getSimpleName();
|
||||
} else {
|
||||
} else if (columnLine.contains("decimal")||columnLine.contains(" number")) {
|
||||
//2018-11-22 lshz0088 建议对number类型增加int,long,BigDecimal的区分判断
|
||||
//如果startKh大于等于0,则表示有设置取值范围
|
||||
int startKh=columnLine.indexOf("(");
|
||||
if(startKh>=0){
|
||||
int endKh=columnLine.indexOf(")",startKh);
|
||||
String[] fanwei=columnLine.substring(startKh+1,endKh).split(",");
|
||||
if("0".equals(fanwei[1])){
|
||||
//如果没有小数位数
|
||||
int length=Integer.valueOf(fanwei[0]);
|
||||
if(length<=9){
|
||||
fieldClass = Integer.class.getSimpleName();
|
||||
}else{
|
||||
fieldClass = Long.class.getSimpleName();
|
||||
}
|
||||
}else{
|
||||
//有小数位数一律使用BigDecimal
|
||||
fieldClass = BigDecimal.class.getSimpleName();
|
||||
}
|
||||
}else{
|
||||
fieldClass = BigDecimal.class.getSimpleName();
|
||||
}
|
||||
}else {
|
||||
fieldClass = String.class.getSimpleName();
|
||||
}
|
||||
|
||||
@ -198,7 +219,8 @@ public class TableParseUtil {
|
||||
}else if(tableSql.contains("comment on column")&&tableSql.contains("."+columnName+" is `")){
|
||||
//新增对pgsql/oracle的字段备注支持
|
||||
//COMMENT ON COLUMN public.check_info.check_name IS '检查者名称';
|
||||
Matcher columnCommentMatcher = Pattern.compile("."+columnName+" is `").matcher(tableSql); // "\\{(.*?)\\}"
|
||||
//2018-11-22 lshz0088 正则表达式的点号前面应该加上两个反斜杠,否则会认为是任意字符
|
||||
Matcher columnCommentMatcher = Pattern.compile("\\."+columnName+" is `").matcher(tableSql); // "\\{(.*?)\\}"
|
||||
while(columnCommentMatcher.find()){
|
||||
String columnCommentTmp = columnCommentMatcher.group();
|
||||
System.out.println(columnCommentTmp);
|
||||
|
||||
@ -28,32 +28,5 @@ spring:
|
||||
expose-session-attributes: true
|
||||
expose-spring-macro-helpers: true
|
||||
#template-loader-path: classpath:/templates/
|
||||
jpa:
|
||||
show-sql: true
|
||||
naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy
|
||||
dialect: org.hibernate.dialect.MySQL5Dialect
|
||||
properties:
|
||||
hibernate:
|
||||
hbm2ddl:
|
||||
auto: update
|
||||
datasource:
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: com.mysql.jdbc.Driver
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
platform: mysql
|
||||
url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
|
||||
username: root
|
||||
password: root
|
||||
initialSize: 5
|
||||
minIdle: 5
|
||||
maxActive: 20
|
||||
maxWait: 60000
|
||||
timeBetweenEvictionRunsMillis: 60000
|
||||
minEvictableIdleTimeMillis: 300000
|
||||
validationQuery: SELECT 1
|
||||
testWhileIdle: true
|
||||
testOnBorrow: false
|
||||
testOnReturn: false
|
||||
filters: stat,wall,log4j
|
||||
mvc:
|
||||
static-path-pattern: /static/**
|
||||
Loading…
x
Reference in New Issue
Block a user