6 Commits

Author SHA1 Message Date
Moshow郑锴
bc123b8f27 | 2023.01.01 | 新增GCP BigQuery/Dataflow JJS/QlikSense BI模板。 2023-01-01 16:26:10 +08:00
Moshow郑锴
107c1035e5 Merge pull request #136 from jadelike-wine/master
MySQL to Java type conversion @jadelike-wine
2022-10-29 10:28:17 +08:00
jadelike
37e83ef76c jadelike
MySQL to Java type conversion
2022-09-28 18:40:59 +08:00
Moshow郑锴
781a7ff4ca script to install and run 2022-07-02 17:54:12 +08:00
Moshow郑锴
a658ff5a0b Merge pull request #135 from moshowgame/dependabot/maven/com.alibaba-fastjson-1.2.83
Bump fastjson from 1.2.79 to 1.2.83
2022-07-02 10:21:40 +08:00
dependabot[bot]
aac82f2109 Bump fastjson from 1.2.79 to 1.2.83
Bumps [fastjson](https://github.com/alibaba/fastjson) from 1.2.79 to 1.2.83.
- [Release notes](https://github.com/alibaba/fastjson/releases)
- [Commits](https://github.com/alibaba/fastjson/compare/1.2.79...1.2.83)

---
updated-dependencies:
- dependency-name: com.alibaba:fastjson
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-17 03:37:13 +00:00
13 changed files with 314 additions and 131 deletions

5
@install.cmd Normal file
View File

@@ -0,0 +1,5 @@
REM JDK must equal or more than : 11
java -version
REM maven installing libraries
mvn clean compile
pause

4
@run.cmd Normal file
View File

@@ -0,0 +1,4 @@
java -jar "./generator-web/target/generator-web-3.0.jar"
pause
mvn clean compile package
pause

115
README.md
View File

@@ -29,7 +29,7 @@
> 愿大家可以维持生活和工作平衡,保持健康和安全,祝大家工作顺利!
# Tips or Features
- 支持DDL SQL/INSERT SQL/SIMPLE JSON三种生成模式
- 支持`DDL SQL`/`INSERT SQL`/`SIMPLE JSON`三种生成模式
- `自动记忆`最近生成的内容最多保留9个
- 提供众多`通用模板`易于使用复制粘贴加简单修改即可完成CRUD操作
- 支持`特殊字符`模板(`#`请用`井`代替;`$`请用`¥`代替)
@@ -58,61 +58,64 @@ Thanks for `JetBrains` providing us the `Licenses for Open Source Development`
# Update Logs
| 更新日期 | 更新内容 |
|:------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 2022.02.10 | 更新springboot、fastjson、lombok依赖感谢@Abbykawai的建议)。 |
| 2022.02.09 | 新增JPA-STARP模板感谢@starplatinum3的贡献)。 |
| 2022.01.11 | 优化mybatis的mapper文件生成感谢@chendong的贡献)。 |
| 2021.10.31 | 优化当有索引和额外的换行时的解析逻辑(感谢@feitian124的贡献)。<br>修复部分模板参数不对应(感谢@Thixiaoxiao的贡献)。<br>新增cookie记录所需配置字段逻辑,避免重复配置(感谢@Thixiaoxiao的贡献)。 |
| 2021.08.07 | 新增当前模板保持功能,重新生成代码后依然会保持在当前选择模板。<br>新增renren-fast模板。 |
| 2021.08.05 | 解决 update 方法语法错误调整部分语句避免sonarLint告警(感谢@Henry586的PR);<br>add swagger-yml.ftl(感谢@fuuqiu的PR);<br>支持common-mapper&修复entity和plusentity的swagger引包错误(感谢@chentianming11的PR) |
| 2021.03.24 | 修复Mybatis.XML中缺失test=关键字问题。(感谢@BWHN/YUEHUI的反馈)。 |
| 2021.01.18 | OEM信息优化支持多配置文件模式支持在application*.yml自定义信息以及切换local/cdn模式。 |
| 2021.01.17 | 生成后自动trim掉前后空格输出。<br>完善ReadMe文档。<br>优化云CDN引入部分。<br>优化returnUtil部分。<br>表明前缀选项(感谢@wwlg的建议)。 <br>是否带字段注释设置(感谢@fengpojian的建议)<br>优化Mybatis的''!=判断(感谢@zhongsb的建议)。<br>Mybatis-Plus增加Service层(感谢@yf466532479的建议)。 |
| 2021.01.16 | 全新3.0版本:<br>一、前端半vue半js化更多动态加载项。<br>二、支持更多生成设置,优化生成场景。<br>三、js导入支持本地/CDN模式支持断网环境轻松使用。 |
| 2020.10.22 | 1.tinyint多加一个Short类型转换感谢@wttHero的建议 |
| 2020.10.20 | 1.修复mapper2 insert代码问题感谢@mXiaoWan的PR<br>2.优化对fulltext/index关键字的处理感谢@WEGFan的反馈)。<br>3.新增日期类型的转换选择(感谢@qingkediguo的建议。<br>4.新增是否包装类型的转换选择(感谢@gzlicanyi的建议)。 |
| 2020.06.28 | 优化Util下的BeanUtil支持更多map.put的操作。整合CRUD模板到SQL(CRUD)模板。 |
| 2020.06.21 | 修复FreemarkerUtil的Path问题导致JAR包运行时无法获取template的问题。 |
| 2020.05.25 | 1.一些fix,关于封装工具类以及layui模板优化等.<br> 2.优化表备注的获取逻辑.<br> 3.生成时间格式改为yyyy-MM-dd,移除具体的时间,只保留日期 |
| 2020.05.22 | 1.新增insert-sql模式,支持对"insert into table (xxx) values (xxx)"语句进行处理,生成java代码(感谢三叔的建议). |
| 2020.05.17 | 1.代码重构!异常处理优化,Freemarker相关工具类优化,简化模板生成部分,通过template.json来配置需要生成的模板,不需要配置java文件.<br> 2.修复包含comment关键字时注释无法识别的问题.(感谢@1nchaos的反馈).<br> 3.赞赏优化,感谢大家的赞赏.<br> 4.新增mapper2(Mybatis-Annotation模板)(感谢@baisi525和@CHKEGit的建议). |
| 2020.05.03 | 1.优化对特殊字符的处理,对于包含#和$等特殊字符的,在模板使用井和¥代替便可,escapeString方法会自动处理.<br> 2.优化mybatisplus实体类相关(感谢@chunchengmeigui的反馈).<br> 3.修优化对所有类型的判断(感谢@cnlw的反馈).<br> 4.移除swagger-entity,该功能已经包含在swagger-ui的下拉选项中 <br> 5.升级hutool和lombok版本 |
| 2020.03.06 | 1.提交一套layuimini+mybatisplus的模板.<br> 2.修复mybatisplus一些相关问题. |
| 2020.02.06 | 1.新增历史记录功能,自动保存最近生成的对象.<br> 2.新增swagger开关选项和修复@Column带name参数(感谢@liuyu-struggle的建议).<br> 3.去除mybatis模板中的方括号[]和修改模板里的类注释样式(感谢@gaohanghang的PR) |
| 2019.12.29 | 1.修复bejson安全防护策略拦截问题(感谢@liangbintao和@1808083642的反馈).<br> 2.优化字段名含date字符串的处理(感谢@smilexzh的反馈).<br> 3.控制台动态输出项目访问地址(感谢@gaohanghang的提交) |
| 2019.11.28 | 1.修复支持string-copy导致的以n结尾的字母不显示问题.<br> 2.jpa-entity新增swagger@ApiModel@ApiModelProperty注解和SQL字段@Column注解(感谢@yjq907的建议) |
| 2019.11.26 | 1.springboot2内置tomcat更换为性能更强大的undertow.<br> 2.修复tinyintTransType参数丢失问题 |
| 2019.11.24 | 1.java代码结构优化.<br> 2.新增简单的json生成模式.<br> 3.新增简单的正则表达式匹配模式(感谢@ydq的贡献).<br> 4.新增对复制String代码中的乱SQL代码的支持 5.优化对JSON的父子节点/处理,JSONObject和JSONArray节点处理,子节点缺失'{'头处理 |
| 2019.11.23 | 1.移除频繁出错和被过滤的layer,改为jquery-toast.<br> 2.Util功能优化,新增json和xml. |
| 2019.11.16 | 优化对primary关键字的处理(感谢@liujiansgit的反馈). |
| 2019.11.15 | 1.添加tinyint类型转换(感谢@lixiliang&@liujiansgit的Suggestion).<br> 2.添加一键复制功能(感谢@gaohanghang的Suggestion).<br> 3.Mybatis的insert增加keyProperty="id"用于返回自增id(感谢@88888888888888888888的Suggestion).<br> 4.优化date类型的支持(感谢@SteveLsf的反馈).<br> 5.其他一些优化. |
| 2019.10.15 | 修复jdbcTemplates中insert语句第一个字段丢失的问题. |
| 2019.09.15 | 1.添加对象getset模板.<br> 2.添加sql模板.<br> 3.启动类添加日志输出,方便项目使用(感谢@gaohanghang 的pull request) |
| 2019.09.10 | 优化以及更新Maven依赖,减少打包体积.<br> 1.修复mapper接口load方法,但是xml中方法不匹配问题.<br> 2.移除mapper中CRUD时的@param 注解,会影响xml的解析(感谢@caojiantao的反馈).<br> 3.优化MyBatis的xml文件对Oracle的支持.(感谢@wylove1992的反馈).<br> 4.新增对boolean的处理(感谢@violinxsc的反馈)以及优化tinyint类型生成boolean类型问题(感谢@hahaYhui的反馈) |
| 2019.09.09 | 添加是否下划线转换为驼峰的选择(感谢@youngking28 的pull request). |
| 2019.05.18 | 1.优化注释.<br> 2.修改 mybatis模板中 controller注解.<br> 3.修改 mybatis模板中 dao文件使用为 mapper文件.<br> 4.修改 mybatis模板中 service实现类中的一个 bug.<br> 5.修改 index.ftl文件中 mybatis模板的 dao -> mapper(感谢@unqin的pull request) |
| 2019.05.11 | 优化mybatis模块的dao和xml模板,修改dao接口注解为@Repository,所有dao参数改为包装类,删除update语句最后的UpdateTime = NOW(),修改dao接口文件的方法注释使其更符合javaDoc的标准,修改insert语句增加插入行主键的返回,修改load的方法名为selectByPrimaryKey,修改xml的update语句新增动态if判空,修改xml的insert语句新增动态插入判空,更符合mybatisGenerator标准(感谢@Archer-Wen的贡献 ). |
| 2019.04.29 | 新增返回封装工具类设置.<br> 优化对oracle注释comment on column的支持(感谢@liukex反馈).<br> 优化对普通和特殊storage关键字的判断(感谢@AhHeadFloating的反馈 ). |
| 2019.02.11 | 提交gitignore,解决StringUtils.lowerCaseFirst潜在的NPE异常,校验修改为@RequestParam参数校验,lombok之@Data和@Slf4j优化,fix JdbcDAO模板类名显示为中文问题,WebMvcConfig整合MessageConverter,模板代码分类(感谢@liutf和@tfgzs的pull request). |
| 2019.02.10 | 实体生成规则切换为包装类型,不再采用基本数据类型,为实体类生成添加显示的默认构造方法(感谢@h2so的pull request). |
| 2019.01.06 | 修复处理number/decimal(x,x)类型的逻辑(感谢@arthaschan的反馈).<br> 修复JdbcTemplates模板两处错误(感谢@everflourish的反馈). |
| 2018.12.12 | 首页UI优化.<br> 新增MybatisPlus模块(感谢@三叔同事的建议).<br> 修复作者名和包名获取失败问题(感谢@Yanch1994的反馈). |
| 2018.11.22 | 优化正则表达式点号的处理,优化处理字段类型,对number类型增加int,long,BigDecimal的区分判断(感谢@lshz0088的指导). |
| 2018.11.08 | 修复非字段描述"KEY FK_xxxx (xxxx)"导致生成KEY字段情况(感谢@tornadoorz反馈). |
| 2018.10.18 | 支持double(x,x)的类型,以及comment里面包含一些特殊字符的处理(感谢@tanwubo的反馈). |
| 2018.10.10 | CDN变更,修复CDN不稳定导致网页js报错问题. |
| 2018.10.03 | 新增element-ui/bootstrap生成. |
| 2018.10.02 | 修复公共CDN之Layer.js404问题,导致项目无法生成. |
| 2018.09.27 | 优化COMMENT提取逻辑,支持多种复杂情况的注释(感谢@raodeming的反馈). |
| 2018.09.26 | 全新BeetlSQL模块,以及一些小细节优化(感谢@三叔同事的建议). |
| 2018.09.25 | 优化SQL表和字段备注的推断,包括pgsql/oralce的comment on column/table情况处理等. |
| 2018.09.18 | 优化SQL类型推断.<br> 优化PrimaryKey判断.<br> 修复jpacontroller中Repository拼写错误问题. |
| 2018.09.17 | 全新首页,静态文件全部采用CDN.新增jdbcTemplate模块. |
| 2018.09.16 | 1.优化oracle支持,优化DDL语句中"或者'或者空格的支持.<br> 2.补充char/clob/blob/json等类型,如果类型未知,默认为String. |
| 2018.09.15 | 新增Swagger-UI模板.修复一些命名和导入问题.JPA的Entity默认第一个字段为Id,如果不是请手工修改. |
| 2018.09.13 | 修复字段没有描述以及类型为DATE型导致的问题.新增JPA的Controller模板. |
| 2018.08.31 | 初始化项目.新增JPA系列Entity+Repository模板. |
| 更新日期 | 更新内容 |
|:-----------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 2023.01.01 | 新增GCP BigQuery/Dataflow JJS/QlikSense BI模板。 |
| 2022.09.28 | MySQL to Java type conversion 数据库类型转换优化(感谢@jadelike得贡献 |
| 2022.07.02 | add the script to install and run添加批处理以便直接构建或运行项目。 |
| 2022.02.10 | 更新springboot、fastjson、lombok依赖感谢@Abbykawai的建议)。 |
| 2022.02.09 | 新增JPA-STARP模板感谢@starplatinum3的贡献)。 |
| 2022.01.11 | 优化mybatis的mapper文件生成感谢@chendong的贡献)。 |
| 2021.10.31 | 优化当有索引和额外的换行时的解析逻辑(感谢@feitian124的贡献)。<br>修复部分模板参数不对应(感谢@Thixiaoxiao的贡献)。<br>新增cookie记录所需配置字段逻辑,避免重复配置(感谢@Thixiaoxiao的贡献)。 |
| 2021.08.07 | 新增当前模板保持功能,重新生成代码后依然会保持在当前选择模板。<br>新增renren-fast模板。 |
| 2021.08.05 | 解决 update 方法语法错误调整部分语句避免sonarLint告警(感谢@Henry586的PR);<br>add swagger-yml.ftl(感谢@fuuqiu的PR);<br>支持common-mapper&修复entity和plusentity的swagger引包错误(感谢@chentianming11的PR) |
| 2021.03.24 | 修复Mybatis.XML中缺失test=关键字问题。(感谢@BWHN/YUEHUI的反馈)。 |
| 2021.01.18 | OEM信息优化支持多配置文件模式支持在application*.yml自定义信息以及切换local/cdn模式。 |
| 2021.01.17 | 生成后自动trim掉前后空格输出。<br>完善ReadMe文档。<br>优化云CDN引入部分。<br>优化returnUtil部分。<br>表明前缀选项(感谢@wwlg的建议)。 <br>是否带字段注释设置(感谢@fengpojian的建议)。<br>优化Mybatis的''!=判断(感谢@zhongsb的建议)。<br>Mybatis-Plus增加Service层(感谢@yf466532479的建议)。 |
| 2021.01.16 | 全新3.0版本:<br>一、前端半vue半js化更多动态加载项。<br>二、支持更多生成设置,优化生成场景。<br>三、js导入支持本地/CDN模式支持断网环境轻松使用。 |
| 2020.10.22 | 1.tinyint多加一个Short类型转换感谢@wttHero的建议 |
| 2020.10.20 | 1.修复mapper2 insert代码问题感谢@mXiaoWan的PR<br>2.优化对fulltext/index关键字的处理感谢@WEGFan的反馈)。<br>3.新增日期类型的转换选择(感谢@qingkediguo的建议)。<br>4.新增是否包装类型的转换选择(感谢@gzlicanyi的建议)。 |
| 2020.06.28 | 优化Util下的BeanUtil支持更多map.put的操作。整合CRUD模板到SQL(CRUD)模板。 |
| 2020.06.21 | 修复FreemarkerUtil的Path问题导致JAR包运行时无法获取template的问题。 |
| 2020.05.25 | 1.一些fix,关于封装工具类以及layui模板优化等.<br> 2.优化表备注的获取逻辑.<br> 3.生成时间格式改为yyyy-MM-dd,移除具体的时间,只保留日期 |
| 2020.05.22 | 1.新增insert-sql模式,支持对"insert into table (xxx) values (xxx)"语句进行处理,生成java代码(感谢三叔的建议). |
| 2020.05.17 | 1.代码重构!异常处理优化,Freemarker相关工具类优化,简化模板生成部分,通过template.json来配置需要生成的模板,不需要配置java文件.<br> 2.修复包含comment关键字时注释无法识别的问题.(感谢@1nchaos的反馈).<br> 3.赞赏优化,感谢大家的赞赏.<br> 4.新增mapper2(Mybatis-Annotation模板)(感谢@baisi525和@CHKEGit的建议). |
| 2020.05.03 | 1.优化对特殊字符的处理,对于包含#和$等特殊字符的,在模板使用井和¥代替便可,escapeString方法会自动处理.<br> 2.优化mybatisplus实体类相关(感谢@chunchengmeigui的反馈).<br> 3.修优化对所有类型的判断(感谢@cnlw的反馈).<br> 4.移除swagger-entity,该功能已经包含在swagger-ui的下拉选项中 <br> 5.升级hutool和lombok版本 |
| 2020.03.06 | 1.提交一套layuimini+mybatisplus的模板.<br> 2.修复mybatisplus一些相关问题. |
| 2020.02.06 | 1.新增历史记录功能,自动保存最近生成的对象.<br> 2.新增swagger开关选项和修复@Column带name参数(感谢@liuyu-struggle的建议).<br> 3.去除mybatis模板中的方括号[]和修改模板里的类注释样式(感谢@gaohanghang的PR) |
| 2019.12.29 | 1.修复bejson安全防护策略拦截问题(感谢@liangbintao和@1808083642的反馈).<br> 2.优化字段名含date字符串的处理(感谢@smilexzh的反馈).<br> 3.控制台动态输出项目访问地址(感谢@gaohanghang的提交) |
| 2019.11.28 | 1.修复支持string-copy导致的以n结尾的字母不显示问题.<br> 2.jpa-entity新增swagger@ApiModel@ApiModelProperty注解和SQL字段@Column注解(感谢@yjq907的建议) |
| 2019.11.26 | 1.springboot2内置tomcat更换为性能更强大的undertow.<br> 2.修复tinyintTransType参数丢失问题 |
| 2019.11.24 | 1.java代码结构优化.<br> 2.新增简单的json生成模式.<br> 3.新增简单的正则表达式匹配模式(感谢@ydq的贡献).<br> 4.新增对复制String代码中的乱SQL代码的支持 5.优化对JSON的父子节点/处理,JSONObject和JSONArray节点处理,子节点缺失'{'头处理 |
| 2019.11.23 | 1.移除频繁出错和被过滤的layer,改为jquery-toast.<br> 2.Util功能优化,新增json和xml. |
| 2019.11.16 | 优化对primary关键字的处理(感谢@liujiansgit的反馈). |
| 2019.11.15 | 1.添加tinyint类型转换(感谢@lixiliang&@liujiansgit的Suggestion).<br> 2.添加一键复制功能(感谢@gaohanghang的Suggestion).<br> 3.Mybatis的insert增加keyProperty="id"用于返回自增id(感谢@88888888888888888888的Suggestion).<br> 4.优化date类型的支持(感谢@SteveLsf的反馈).<br> 5.其他一些优化. |
| 2019.10.15 | 修复jdbcTemplates中insert语句第一个字段丢失的问题. |
| 2019.09.15 | 1.添加对象getset模板.<br> 2.添加sql模板.<br> 3.启动类添加日志输出,方便项目使用(感谢@gaohanghang 的pull request) |
| 2019.09.10 | 优化以及更新Maven依赖,减少打包体积.<br> 1.修复mapper接口load方法,但是xml中方法不匹配问题.<br> 2.移除mapper中CRUD时的@param 注解,会影响xml的解析(感谢@caojiantao的反馈).<br> 3.优化MyBatis的xml文件对Oracle的支持.(感谢@wylove1992的反馈).<br> 4.新增对boolean的处理(感谢@violinxsc的反馈)以及优化tinyint类型生成boolean类型问题(感谢@hahaYhui的反馈) |
| 2019.09.09 | 添加是否下划线转换为驼峰的选择(感谢@youngking28 的pull request). |
| 2019.05.18 | 1.优化注释.<br> 2.修改 mybatis模板中 controller注解.<br> 3.修改 mybatis模板中 dao文件使用为 mapper文件.<br> 4.修改 mybatis模板中 service实现类中的一个 bug.<br> 5.修改 index.ftl文件中 mybatis模板的 dao -> mapper(感谢@unqin的pull request) |
| 2019.05.11 | 优化mybatis模块的dao和xml模板,修改dao接口注解为@Repository,所有dao参数改为包装类,删除update语句最后的UpdateTime = NOW(),修改dao接口文件的方法注释使其更符合javaDoc的标准,修改insert语句增加插入行主键的返回,修改load的方法名为selectByPrimaryKey,修改xml的update语句新增动态if判空,修改xml的insert语句新增动态插入判空,更符合mybatisGenerator标准(感谢@Archer-Wen的贡献 ). |
| 2019.04.29 | 新增返回封装工具类设置.<br> 优化对oracle注释comment on column的支持(感谢@liukex反馈).<br> 优化对普通和特殊storage关键字的判断(感谢@AhHeadFloating的反馈 ). |
| 2019.02.11 | 提交gitignore,解决StringUtils.lowerCaseFirst潜在的NPE异常,校验修改为@RequestParam参数校验,lombok之@Data和@Slf4j优化,fix JdbcDAO模板类名显示为中文问题,WebMvcConfig整合MessageConverter,模板代码分类(感谢@liutf和@tfgzs的pull request). |
| 2019.02.10 | 实体生成规则切换为包装类型,不再采用基本数据类型,为实体类生成添加显示的默认构造方法(感谢@h2so的pull request). |
| 2019.01.06 | 修复处理number/decimal(x,x)类型的逻辑(感谢@arthaschan的反馈).<br> 修复JdbcTemplates模板两处错误(感谢@everflourish的反馈). |
| 2018.12.12 | 首页UI优化.<br> 新增MybatisPlus模块(感谢@三叔同事的建议).<br> 修复作者名和包名获取失败问题(感谢@Yanch1994的反馈). |
| 2018.11.22 | 优化正则表达式点号的处理,优化处理字段类型,对number类型增加int,long,BigDecimal的区分判断(感谢@lshz0088的指导). |
| 2018.11.08 | 修复非字段描述"KEY FK_xxxx (xxxx)"导致生成KEY字段情况(感谢@tornadoorz反馈). |
| 2018.10.18 | 支持double(x,x)的类型,以及comment里面包含一些特殊字符的处理(感谢@tanwubo的反馈). |
| 2018.10.10 | CDN变更,修复CDN不稳定导致网页js报错问题. |
| 2018.10.03 | 新增element-ui/bootstrap生成. |
| 2018.10.02 | 修复公共CDN之Layer.js404问题,导致项目无法生成. |
| 2018.09.27 | 优化COMMENT提取逻辑,支持多种复杂情况的注释(感谢@raodeming的反馈). |
| 2018.09.26 | 全新BeetlSQL模块,以及一些小细节优化(感谢@三叔同事的建议). |
| 2018.09.25 | 优化SQL表和字段备注的推断,包括pgsql/oralce的comment on column/table情况处理等. |
| 2018.09.18 | 优化SQL类型推断.<br> 优化PrimaryKey判断.<br> 修复jpacontroller中Repository拼写错误问题. |
| 2018.09.17 | 全新首页,静态文件全部采用CDN.新增jdbcTemplate模块. |
| 2018.09.16 | 1.优化oracle支持,优化DDL语句中"或者'或者空格的支持.<br> 2.补充char/clob/blob/json等类型,如果类型未知,默认为String. |
| 2018.09.15 | 新增Swagger-UI模板.修复一些命名和导入问题.JPA的Entity默认第一个字段为Id,如果不是请手工修改. |
| 2018.09.13 | 修复字段没有描述以及类型为DATE型导致的问题.新增JPA的Controller模板. |
| 2018.08.31 | 初始化项目.新增JPA系列Entity+Repository模板. |
# ClassInfo/TableInfo
|名称|说明|

View File

@@ -1,6 +1,6 @@
package com.softdev.system.generator.util;
import com.softdev.system.generator.util.mysqlJavaTypeUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -196,84 +196,25 @@ public class TableParseUtil {
fieldName = columnName;
}
columnLine = columnLine.substring(columnLine.indexOf("`") + 1).trim();
String mysqlType = columnLine.split("\\s+")[1];
if(mysqlType.contains("(")){
mysqlType = mysqlType.substring(0, mysqlType.indexOf("("));
}
//swagger class
String swaggerClass = "string" ;
if (columnLine.contains(" tinyint")) {
swaggerClass = "integer";
} else if (columnLine.contains(" int") || columnLine.contains(" smallint")) {
swaggerClass = "integer";
} else if (columnLine.contains(" bigint")) {
swaggerClass = "integer";
} else if (columnLine.contains(" float")) {
swaggerClass = "number";
} else if (columnLine.contains(" double")) {
swaggerClass = "number";
} else if (columnLine.contains(" boolean")) {
swaggerClass = "boolean";
if(mysqlJavaTypeUtil.getMysqlSwaggerTypeMap().containsKey(mysqlType)){
swaggerClass = mysqlJavaTypeUtil.getMysqlSwaggerTypeMap().get(mysqlType);
}
// field class
// int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
String fieldClass = Object.class.getSimpleName();
String fieldClass = "String";
//2018-9-16 zhengk 补充char/clob/blob/json等类型如果类型未知默认为String
//2018-11-22 lshz0088 处理字段类型的时候不严谨columnLine.contains(" int") 类似这种的,可在前后适当加一些空格之类的加以区分,否则当我的字段包含这些字符的时候,产生类型判断问题。
//2020-05-03 MOSHOW.K.ZHENG 优化对所有类型的处理
//2020-10-20 zhengkai 新增包装类型的转换选择
if (columnLine.contains(" tinyint")) {
//20191115 MOSHOW.K.ZHENG 支持对tinyint的特殊处理
fieldClass = MapUtil.getString(paramInfo.getOptions(),"tinyintTransType");;
} else if (columnLine.contains(" int") || columnLine.contains(" smallint")) {
fieldClass = (isPackageType)?Integer.class.getSimpleName():"int";
} else if (columnLine.contains(" bigint")) {
fieldClass = (isPackageType)?Long.class.getSimpleName():"long";
} else if (columnLine.contains(" float")) {
fieldClass = (isPackageType)?Float.class.getSimpleName():"float";
} else if (columnLine.contains(" double")) {
fieldClass = (isPackageType)?Double.class.getSimpleName():"double";
} else if (columnLine.contains(" time") || columnLine.contains(" date") || columnLine.contains(" datetime") || columnLine.contains(" timestamp")) {
fieldClass = MapUtil.getString(paramInfo.getOptions(),"timeTransType");
} 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")) {
//2018-11-22 lshz0088 建议对number类型增加intlongBigDecimal的区分判断
//如果startKh大于等于0则表示有设置取值范围
int startKh = columnLine.indexOf("(");
if (startKh >= 0) {
int endKh = columnLine.indexOf(")", startKh);
String[] fanwei = columnLine.substring(startKh + 1, endKh).split("");
//2019-1-5 zhengk 修复@arthaschan反馈的超出范围错误
//System.out.println("fanwei"+ JSON.toJSONString(fanwei));
// //number(20,6) fanwei["20","6"]
// //number(0,6) fanwei["0","6"]
// //number(20,0) fanwei["20","0"]
// //number(20) fanwei["20"]
//如果括号里是1位或者2位且第二位为0则进行特殊处理。只有有小数位都设置为BigDecimal。
if ((fanwei.length > 1 && "0".equals(fanwei[1])) || fanwei.length == 1) {
int length = Integer.parseInt(fanwei[0]);
if (fanwei.length > 1) {
length = Integer.valueOf(fanwei[1]);
}
//数字范围9位及一下用Integer大的用Long
if (length <= 9) {
fieldClass = (isPackageType)?Integer.class.getSimpleName():"int";
} else {
fieldClass = (isPackageType)?Long.class.getSimpleName():"long";
}
} else {
//有小数位数一律使用BigDecimal
fieldClass = BigDecimal.class.getSimpleName();
}
} else {
fieldClass = BigDecimal.class.getSimpleName();
}
} else if (columnLine.contains(" boolean")) {
//20190910 MOSHOW.K.ZHENG 新增对boolean的处理感谢@violinxsc的反馈以及修复tinyint类型字段无法生成boolean类型问题感谢@hahaYhui的反馈
fieldClass = (isPackageType)?Boolean.class.getSimpleName():"boolean";
} else {
fieldClass = String.class.getSimpleName();
if(mysqlJavaTypeUtil.getMysqlJavaTypeMap().containsKey(mysqlType)){
fieldClass = mysqlJavaTypeUtil.getMysqlJavaTypeMap().get(mysqlType);
}
// field commentMySQL的一般位于field行而pgsql和oralce多位于后面。
String fieldComment = null;
if (tableSql.contains("comment on column") && (tableSql.contains("." + columnName + " is ") || tableSql.contains(".`" + columnName + "` is"))) {

View File

@@ -0,0 +1,59 @@
package com.softdev.system.generator.util;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/**
* @author lvyanpu
*/
public final class mysqlJavaTypeUtil {
public static final HashMap<String, String> mysqlJavaTypeMap = new HashMap<String, String>();
public static final HashMap<String, String> mysqlSwaggerTypeMap =new HashMap<String, String>();
static{
mysqlJavaTypeMap.put("bigint","Long");
mysqlJavaTypeMap.put("int","Integer");
mysqlJavaTypeMap.put("tinyint","Integer");
mysqlJavaTypeMap.put("smallint","Integer");
mysqlJavaTypeMap.put("mediumint","Integer");
mysqlJavaTypeMap.put("integer","Integer");
//小数
mysqlJavaTypeMap.put("float","Float");
mysqlJavaTypeMap.put("double","Double");
mysqlJavaTypeMap.put("decimal","Double");
//bool
mysqlJavaTypeMap.put("bit","Boolean");
//字符串
mysqlJavaTypeMap.put("char","String");
mysqlJavaTypeMap.put("varchar","String");
mysqlJavaTypeMap.put("tinytext","String");
mysqlJavaTypeMap.put("text","String");
mysqlJavaTypeMap.put("mediumtext","String");
mysqlJavaTypeMap.put("longtext","String");
//日期
mysqlJavaTypeMap.put("date","Date");
mysqlJavaTypeMap.put("datetime","Date");
mysqlJavaTypeMap.put("timestamp","Date");
mysqlSwaggerTypeMap.put("bigint","integer");
mysqlSwaggerTypeMap.put("int","integer");
mysqlSwaggerTypeMap.put("tinyint","integer");
mysqlSwaggerTypeMap.put("smallint","integer");
mysqlSwaggerTypeMap.put("mediumint","integer");
mysqlSwaggerTypeMap.put("integer","integer");
mysqlSwaggerTypeMap.put("boolean","boolean");
mysqlSwaggerTypeMap.put("float","number");
mysqlSwaggerTypeMap.put("double","number");
mysqlSwaggerTypeMap.put("decimal","Double");
}
public static HashMap<String, String> getMysqlJavaTypeMap() {
return mysqlJavaTypeMap;
}
public static HashMap<String, String> getMysqlSwaggerTypeMap() {
return mysqlSwaggerTypeMap;
}
}

View File

@@ -47,7 +47,7 @@ spring:
#mvc:
# static-path-pattern: /statics/**
OEM:
version: 3.2
version: 2023.1
header: SQL转Java JPA、MYBATIS实现类代码生成平台
keywords: sql转实体类,sql转DAO,SQL转service,SQL转JPA实现,SQL转MYBATIS实现
title: JAVA在线代码生成

View File

@@ -47,7 +47,7 @@ spring:
#mvc:
# static-path-pattern: /statics/**
OEM:
version: 3.2
version: 2023.1
header: SQL转Java JPA、MYBATIS实现类代码生成平台
keywords: sql转实体类,sql转DAO,SQL转service,SQL转JPA实现,SQL转MYBATIS实现
title: JAVA代码生成平台

View File

@@ -47,7 +47,7 @@ spring:
#mvc:
# static-path-pattern: /statics/**
OEM:
version: 3.2
version: 2023.1
header: SQL转Java JPA、MYBATIS实现类代码生成平台
keywords: sql转实体类,sql转DAO,SQL转service,SQL转JPA实现,SQL转MYBATIS实现
title: JAVA在线代码生成

View File

@@ -230,7 +230,6 @@
}
]
},
{
"group": "jpa-starp",
"templates": [{
@@ -249,5 +248,28 @@
"description": "jpacontroller"
}
]
},
{
"group": "bi",
"templates": [{
"id": "201",
"name": "qliksense",
"description": "qlik sense"
}]
},
{
"group": "cloud",
"templates": [
{
"id": "301",
"name": "bigquery",
"description": "GCP BigQuery"
},
{
"id": "302",
"name": "dataflowjjs",
"description": "GCP Dataflow JJS"
}
]
}
]
]

View File

@@ -0,0 +1,94 @@
//***************************
//[${classInfo.classComment} - ${classInfo.tableName}]
//AUTHOR ${authorName}
//HISTORY ${.now?string('yyyy-MM-dd')}
//***************************
//***************************
//load all
[${classInfo.tableName}]:
LOAD * FROM ['LIB://QVD/${classInfo.className}.qvd'](qvd);
//***************************
//load columns
[${classInfo.tableName}]:
LOAD
<#list classInfo.fieldList as fieldItem >
"${fieldItem.columnName}" as "${fieldItem.fieldName}"<#if fieldItem_has_next>,</#if>
</#list>
FROM
['LIB://QVD/${classInfo.className}.qvd'](qvd);
;
//load inline
[${classInfo.tableName}]:
LOAD * INLINE
[
<#list classInfo.fieldList as fieldItem >${fieldItem.columnName} <#if fieldItem_has_next>,</#if></#list>
<#list classInfo.fieldList as fieldItem >${fieldItem.fieldName} <#if fieldItem_has_next>,</#if></#list>
<#list classInfo.fieldList as fieldItem >${fieldItem.fieldComment} <#if fieldItem_has_next>,</#if></#list>
];
//***************************
//load from api data connection (wrap on)
LIB CONNECT TO '${classInfo.tableName}_api';
RestConnectorMasterTable:
SQL SELECT
"__KEY_root",
(SELECT
<#list classInfo.fieldList as fieldItem >
"${fieldItem.columnName}"
</#list>
"__FK_object"
FROM "object" FK "__FK_object")
FROM JSON (wrap on) "root" PK "__KEY_root"
// WITH CONNECTION (
// Url "https://localhost:8080/${classInfo.tableName}_api",
// QUERY "page" "1",
// QUERY "size" "100",
// HTTPHEADER "token" "123456",
// BODY "Post body here")
;
[${classInfo.className}]:
LOAD
<#list classInfo.fieldList as fieldItem >
[${fieldItem.columnName}] as [${fieldItem.fieldName}]
</#list>
[__FK_object] AS [__KEY_root]
RESIDENT RestConnectorMasterTable
WHERE NOT IsNull([__FK_stores]);
DROP TABLE [${classInfo.className}];
DROP TABLE RestConnectorMasterTable;
//***************************
//load from api data connection (wrap off)
LIB CONNECT TO '${classInfo.tableName}_api';
[${classInfo.className}]:
SQL SELECT
<#list classInfo.fieldList as fieldItem >
[${fieldItem.fieldName}] as [${fieldItem.fieldName}]<#if fieldItem_has_next>,</#if>
</#list>
FROM JSON(wrap off) "${classInfo.className}"
// WITH CONNECTION (
// Url "https://localhost:8080/${classInfo.tableName}_api",
// QUERY "page" "1",
// QUERY "size" "100",
// HTTPHEADER "token" "123456",
// BODY "Post body here")
;
//***************************
//load from sql data connection
LIB CONNECT TO '${classInfo.tableName}_db';
SQL SELECT
<#list classInfo.fieldList as fieldItem >
[${fieldItem.columnName}] as [${fieldItem.fieldName}]<#if fieldItem_has_next>,</#if>
</#list>
FROM
${classInfo.tableName}
WHERE
Create_Time > '2023-01-01 00:00:00';

View File

@@ -0,0 +1,17 @@
SELECT * FROM 'your_project.your_dataset.${tableName}' t
order by t.id desc
LIMIT 100
;
SELECT * FROM 'your_project.your_dataset.${tableName}_error_records' t
order by t.timestamp desc
LIMIT 100
;
bigquery table -> SCHEMA -> Edit as text , then input below text:
[
<#list classInfo.fieldList as fieldItem >
{"name":"${fieldItem.columnName}",type:"STRING","mode":"NULLABLE","description": "${fieldItem.fieldName} - ${fieldItem.fieldComment}"}<#if fieldItem_has_next>,</#if>
</#list>
]

View File

@@ -0,0 +1,38 @@
/**
* GCP - dataflow job jjs for [${classInfo.classComment} - ${classInfo.tableName}]
* AUTHOR ${authorName}
*
* User-defined function (UDF) to transform events as part of a Dataflow template job.
* upload to GCS and create dataflow job with this js file and method as 'process'
* @param {string} inJson input Pub/Sub JSON message (stringified)
* @return {string} outJson output JSON message (stringified)
*/
function process(inJson) {
//for local js debug
//var obj = JSON.parse(JSON.stringify(inJson));
//for online jjs
var obj = JSON.parse(inJson);
var includePubsubMessage = obj.data && obj.attributes;
var data = includePubsubMessage ? obj.data : obj;
//debug and show error if you need special logic
if(data.hasOwnProperty('show_error')){
throw new ERROR("show_error:"+JSON.stringify(data))
}
// INSERT CUSTOM TRANSFORMATION LOGIC HERE
var tableObj= {};
tableObj.insert_time=new Date().toUTCString()
<#list classInfo.fieldList as fieldItem >
tableObj.${fieldItem.columnName}=data.${fieldItem.fieldName}
</#list>
return JSON.stringify(tableObj);
}
//field name = field name
<#list classInfo.fieldList as fieldItem >
tableObj.${fieldItem.fieldName}=data.${fieldItem.fieldName}
</#list>
//column name = column name
<#list classInfo.fieldList as fieldItem >
tableObj.${fieldItem.columnName}=data.${fieldItem.columnName}
</#list>

View File

@@ -49,7 +49,7 @@
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.79</version>
<version>1.2.83</version>
</dependency>
<!-- 支持 @ConfigurationProperties 注解 -->