28 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
Moshow郑锴
e968a3bfe1 | 2022.02.10 | 更新springboot、fastjson、lombok依赖(感谢@Abbykawai的建议)。 2022-02-09 23:34:56 +08:00
Moshow郑锴
cffaac2508 Merge pull request #129 from starplatinum3/master
新建了jpa-starp模板,是对jpa模板的一些小修改。感谢@starplatinum3的贡献
2022-02-09 20:26:45 +08:00
starplatinumora
69a0dede9b add jpa starp 2022-01-15 20:19:25 +08:00
Moshow郑锴
732dd246cb Merge pull request #128 from to404/master
mapper文件生成,去掉非字符串判空 and ''!=
2022-01-11 21:15:28 +08:00
chendong
d3820a2552 mapper文件生成,去掉非字符串判空 and ''!= 2022-01-11 19:12:46 +08:00
Moshow郑锴
7e93e91478 Merge pull request #124 from feitian124/ming
parser: 解析出错时打印出错的行信息
2021-10-31 00:48:51 +08:00
Moshow郑锴
aa38125294 Merge pull request #123 from Thixiaoxiao/dev_fix_mabitis
修复部分模板参数不对应
2021-10-31 00:48:36 +08:00
Moshow郑锴
adab6d7809 Merge pull request #122 from Thixiaoxiao/master
避免重复配置
2021-10-31 00:48:11 +08:00
Thixiaoxiao
dac7d20eb8 修复bug
部分浏览器异常
2021-10-22 14:48:33 +08:00
Thixiaoxiao
482e004978 Update main.js 2021-10-22 14:43:18 +08:00
thj
94a424ac11 Merge branch 'master' into dev_fix_mabitis 2021-10-20 20:56:09 +08:00
thj
f6844ee7c5 设置 保存配置 7 天 2021-10-20 20:55:24 +08:00
thj
a1fc04af8c 遗漏导包补充 2021-10-20 20:52:49 +08:00
thj
efef2aefc4 保持 包名 与 controller导包时 一致 2021-10-20 20:51:07 +08:00
feitian124
f88a8c2940 parser:解析出错时打印出错信息 2021-10-14 17:00:44 +08:00
thj
1144a2137e 修改日期 : 2021-10-07
背景 : jpa 模板文件生成的 表名 和 输入的 sql 语句不一致,导致 从 数据库客户端直接复制下来的 create 语句 经过 生成代码 工具生成的 实体类 文件需要修改表名 才能够使用
修改 :
    1 jpa.entity.ftl 将 table_name 统一 改为 originaltablename
2021-10-07 09:57:20 +08:00
thj
1c6efb400b 修改日期 : 2021-10-07
背景 : jdbc-template 模板文件生成的 表名 和 输入的 sql 语句不一致,导致 从 数据库客户端直接复制下来的 create 语句 经过 生成代码 工具生成的 impl文件需要修改表名 才能够使用
修改 :
    1 mybatis.ftl 将 table_name 统一 改为 originaltablename
2021-10-07 09:53:47 +08:00
thj
371ff03a5f 修改日期 : 2021-10-07
背景 : mybatis 模板文件生成的 表名 和 输入的 sql 语句不一致,导致 从 数据库客户端直接复制下来的 create 语句 经过 生成代码 工具生成的 xml文件需要修改表名 才能够使用
修改 :
    1 mybatis.ftl 将 table_name 统一 改为 originaltablename
2021-10-07 09:32:40 +08:00
thj
ec949f97e0 修改日期 : 2021-10-01
背景 : 当使用 mybatis组件生成代码时,各个组件之间 dao 名字不同
修改 :
    1 mybatis.ftl 统一 改为Mapper
待考虑方案:
    1 是否可以改为 返回 指定实体类
2021-10-01 16:07:52 +08:00
thj
78975fc86d 修改日期 : 2021-10-01
背景 : 当使用 mybatis组件生成代码时,各个组件之间返回的实体类 不同,需要手动 修改部分返回值类型
修改 :
    1 controller.ftl 统一 返回 Object
待考虑方案:
    1 是否可以改为 返回 指定实体类
2021-10-01 11:21:20 +08:00
thj
b387240235 修改日期 : 2021-10-01
背景 : 当使用 mybatis组件生成代码时,各个组件之间对于实体类使用名称不一致,需要手动修改部分代码
修改 :
    1 mybatis.ftl 统一使用 不带 Entity 的 实体类,保证 mybatis所有组件功能保持一致,避免手动修改
2021-10-01 11:15:28 +08:00
thj
ab705bfa2f 修改日期 : 2021-10-01
背景 : 当重新打开一个页面时,有很多设置需要重复操作,浪费时间
修改 :
    1 main.html: 增加 加载 cookie 的逻辑
    2 common.js: 增加 cookie 设置 和 get 的 通用逻辑
    3 main.js: 增加 将所有需要纪录的字段写入cookie逻辑,并加载到页面
2021-10-01 09:17:41 +08:00
26 changed files with 707 additions and 234 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

View File

@@ -29,7 +29,7 @@
> 愿大家可以维持生活和工作平衡,保持健康和安全,祝大家工作顺利! > 愿大家可以维持生活和工作平衡,保持健康和安全,祝大家工作顺利!
# Tips or Features # Tips or Features
- 支持DDL SQL/INSERT SQL/SIMPLE JSON三种生成模式 - 支持`DDL SQL`/`INSERT SQL`/`SIMPLE JSON`三种生成模式
- `自动记忆`最近生成的内容最多保留9个 - `自动记忆`最近生成的内容最多保留9个
- 提供众多`通用模板`易于使用复制粘贴加简单修改即可完成CRUD操作 - 提供众多`通用模板`易于使用复制粘贴加简单修改即可完成CRUD操作
- 支持`特殊字符`模板(`#`请用`井`代替;`$`请用`¥`代替) - 支持`特殊字符`模板(`#`请用`井`代替;`$`请用`¥`代替)
@@ -49,7 +49,7 @@
Thanks for `JetBrains` providing us the `Licenses for Open Source Development` [Get free access to all JetBrains tools for developing your open source project!](https://www.jetbrains.com/community/opensource/#support) .<br> Thanks for `JetBrains` providing us the `Licenses for Open Source Development` [Get free access to all JetBrains tools for developing your open source project!](https://www.jetbrains.com/community/opensource/#support) .<br>
| 访问地址 | http://localhost:1234/generator | | 访问地址 | http://localhost:1234/generator |
|:----|:----| |:--------------|:--------------------------------------------------------------|
| BEJSON 在线地址 | https://java.bejson.com/generator | | BEJSON 在线地址 | https://java.bejson.com/generator |
| DEVTOOLS 在线地址 | https://java.devtools.cn | | DEVTOOLS 在线地址 | https://java.devtools.cn |
| CSDN BLOG | https://zhengkai.blog.csdn.net | | CSDN BLOG | https://zhengkai.blog.csdn.net |
@@ -59,7 +59,14 @@ Thanks for `JetBrains` providing us the `Licenses for Open Source Development`
# Update Logs # Update Logs
| 更新日期 | 更新内容 | | 更新日期 | 更新内容 |
|:----|:----| |:-----------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 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.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.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.03.24 | 修复Mybatis.XML中缺失test=关键字问题。(感谢@BWHN/YUEHUI的反馈)。 |

View File

@@ -84,6 +84,7 @@ public class GeneratorController {
//3.generate the code by freemarker templates with parameters . Freemarker根据参数和模板生成代码 //3.generate the code by freemarker templates with parameters . Freemarker根据参数和模板生成代码
Map<String, String> result = generatorService.getResultByParams(paramInfo.getOptions()); Map<String, String> result = generatorService.getResultByParams(paramInfo.getOptions());
log.info("result {}",result);
log.info("table:{} - time:{} ", MapUtil.getString(result,"tableName"),new Date()); log.info("table:{} - time:{} ", MapUtil.getString(result,"tableName"),new Date());
return ReturnT.ok().put("outputJson",result); return ReturnT.ok().put("outputJson",result);
} }

View File

@@ -1,6 +1,6 @@
package com.softdev.system.generator.util; package com.softdev.system.generator.util;
import com.softdev.system.generator.util.mysqlJavaTypeUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
@@ -173,7 +173,13 @@ public class TableParseUtil {
String columnName = ""; String columnName = "";
columnLine = columnLine.replaceAll("`", " ").replaceAll("\"", " ").replaceAll("'", "").replaceAll(" ", " ").trim(); columnLine = columnLine.replaceAll("`", " ").replaceAll("\"", " ").replaceAll("'", "").replaceAll(" ", " ").trim();
//如果遇到username varchar(65) default '' not null,这种情况,判断第一个空格是否比第一个引号前 //如果遇到username varchar(65) default '' not null,这种情况,判断第一个空格是否比第一个引号前
try {
columnName = columnLine.substring(0, columnLine.indexOf(" ")); columnName = columnLine.substring(0, columnLine.indexOf(" "));
} catch (StringIndexOutOfBoundsException e) {
System.out.println("err happened: " + columnLine);
throw e;
}
// field Name // field Name
// 2019-09-08 yj 添加是否下划线转换为驼峰的判断 // 2019-09-08 yj 添加是否下划线转换为驼峰的判断
String fieldName = null; String fieldName = null;
@@ -190,84 +196,25 @@ public class TableParseUtil {
fieldName = columnName; fieldName = columnName;
} }
columnLine = columnLine.substring(columnLine.indexOf("`") + 1).trim(); columnLine = columnLine.substring(columnLine.indexOf("`") + 1).trim();
String mysqlType = columnLine.split("\\s+")[1];
if(mysqlType.contains("(")){
mysqlType = mysqlType.substring(0, mysqlType.indexOf("("));
}
//swagger class //swagger class
String swaggerClass = "string" ; String swaggerClass = "string" ;
if (columnLine.contains(" tinyint")) { if(mysqlJavaTypeUtil.getMysqlSwaggerTypeMap().containsKey(mysqlType)){
swaggerClass = "integer"; swaggerClass = mysqlJavaTypeUtil.getMysqlSwaggerTypeMap().get(mysqlType);
} 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";
} }
// field class // field class
// int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID', // 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-9-16 zhengk 补充char/clob/blob/json等类型如果类型未知默认为String
//2018-11-22 lshz0088 处理字段类型的时候不严谨columnLine.contains(" int") 类似这种的,可在前后适当加一些空格之类的加以区分,否则当我的字段包含这些字符的时候,产生类型判断问题。 //2018-11-22 lshz0088 处理字段类型的时候不严谨columnLine.contains(" int") 类似这种的,可在前后适当加一些空格之类的加以区分,否则当我的字段包含这些字符的时候,产生类型判断问题。
//2020-05-03 MOSHOW.K.ZHENG 优化对所有类型的处理 //2020-05-03 MOSHOW.K.ZHENG 优化对所有类型的处理
//2020-10-20 zhengkai 新增包装类型的转换选择 //2020-10-20 zhengkai 新增包装类型的转换选择
if (columnLine.contains(" tinyint")) { if(mysqlJavaTypeUtil.getMysqlJavaTypeMap().containsKey(mysqlType)){
//20191115 MOSHOW.K.ZHENG 支持对tinyint的特殊处理 fieldClass = mysqlJavaTypeUtil.getMysqlJavaTypeMap().get(mysqlType);
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();
}
// field commentMySQL的一般位于field行而pgsql和oralce多位于后面。 // field commentMySQL的一般位于field行而pgsql和oralce多位于后面。
String fieldComment = null; String fieldComment = null;
if (tableSql.contains("comment on column") && (tableSql.contains("." + columnName + " is ") || tableSql.contains(".`" + columnName + "` is"))) { 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: #mvc:
# static-path-pattern: /statics/** # static-path-pattern: /statics/**
OEM: OEM:
version: 3.2 version: 2023.1
header: SQL转Java JPA、MYBATIS实现类代码生成平台 header: SQL转Java JPA、MYBATIS实现类代码生成平台
keywords: sql转实体类,sql转DAO,SQL转service,SQL转JPA实现,SQL转MYBATIS实现 keywords: sql转实体类,sql转DAO,SQL转service,SQL转JPA实现,SQL转MYBATIS实现
title: JAVA在线代码生成 title: JAVA在线代码生成

View File

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

View File

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

View File

@@ -42,3 +42,28 @@ window.confirm = function(msg, callback){
function isBlank(value) { function isBlank(value) {
return !value || !/\S/.test(value) return !value || !/\S/.test(value)
} }
function setCookie(key, val, expire_second) {
var d = new Date();
var expires ="";
if (expire_second){
d.setDate(d.getTime()+(expire_second*1000));
expires='; expires=' + d.toGMTSring();
}
document.cookie = key + "="+ val + expires;
}
function getCookie(name) {
var data = "";
if (document.cookie){
var arr = document.cookie.split(';');
for (var str of arr) {
var temp = str.split("=")
if (temp[0].replace(/(^\s*)/g,'') === name){
data = unescape(temp[1]);
break
}
}
}
return data;
}

View File

@@ -123,6 +123,7 @@ const vm = new Vue({
error("生成失败"); error("生成失败");
return; return;
} }
setAllCookie();
//console.log(res.outputJson); //console.log(res.outputJson);
vm.outputJson=res.outputJson; vm.outputJson=res.outputJson;
// console.log(vm.outputJson["bootstrap-ui"]); // console.log(vm.outputJson["bootstrap-ui"]);
@@ -154,3 +155,41 @@ const vm = new Vue({
} }
}); });
/**
* 将所有 需要 保留历史纪录的字段写入Cookie中
*/
function setAllCookie() {
var arr = list_key_need_load();
for (var str of arr){
setOneCookie(str);
}
}
function setOneCookie(key) {
setCookie(key, vm.formData.options[key]);
}
/**
* 将所有 历史纪录 重加载回页面
*/
function loadAllCookie() {
//console.log(vm);
var arr = list_key_need_load();
for (var str of arr){
loadOneCookie(str);
}
}
function loadOneCookie(key) {
if (getCookie(key)!==""){
vm.formData.options[key] = getCookie(key);
}
}
/**
* 将 所有 需要 纪录的 字段写入数组
* @returns {[string]}
*/
function list_key_need_load() {
return ["authorName","packageName","returnUtilSuccess","returnUtilFailure","ignorePrefix","tinyintTransType","timeTransType"];
}

View File

@@ -229,5 +229,47 @@
"description": "rr-service" "description": "rr-service"
} }
] ]
},
{
"group": "jpa-starp",
"templates": [{
"id": "101",
"name": "starp-entity",
"description": "entity"
},
{
"id": "102",
"name": "starp-repository",
"description": "repository"
},
{
"id": "103",
"name": "starp-jpa-controller",
"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

@@ -19,13 +19,13 @@ public class ${classInfo.className}DaoImpl implements I${classInfo.className}Dao
@Override @Override
public int add(${classInfo.className} ${classInfo.className?uncap_first}) { public int add(${classInfo.className} ${classInfo.className?uncap_first}) {
return jdbcTemplate.update("insert into ${classInfo.tableName} (<#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0><#list classInfo.fieldList as fieldItem >${fieldItem.columnName}<#if fieldItem_has_next>,</#if></#list></#if> ) values (<#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0><#list classInfo.fieldList as fieldItem >?<#if fieldItem_has_next>,</#if></#list></#if> )", return jdbcTemplate.update("insert into ${classInfo.originTableName} (<#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0><#list classInfo.fieldList as fieldItem >${fieldItem.columnName}<#if fieldItem_has_next>,</#if></#list></#if> ) values (<#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0><#list classInfo.fieldList as fieldItem >?<#if fieldItem_has_next>,</#if></#list></#if> )",
<#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0><#list classInfo.fieldList as fieldItem >${classInfo.className?uncap_first}.get${fieldItem.fieldName?cap_first}()<#if fieldItem_has_next>,</#if></#list></#if>); <#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0><#list classInfo.fieldList as fieldItem >${classInfo.className?uncap_first}.get${fieldItem.fieldName?cap_first}()<#if fieldItem_has_next>,</#if></#list></#if>);
} }
@Override @Override
public int update(${classInfo.className} ${classInfo.className?uncap_first}) { public int update(${classInfo.className} ${classInfo.className?uncap_first}) {
return jdbcTemplate.update("UPDATE ${classInfo.tableName} SET <#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0><#list classInfo.fieldList as fieldItem ><#if fieldItem_index gt 0 >${fieldItem.columnName}=?<#if fieldItem_has_next>,</#if></#if></#list></#if>" return jdbcTemplate.update("UPDATE ${classInfo.originTableName} SET <#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0><#list classInfo.fieldList as fieldItem ><#if fieldItem_index gt 0 >${fieldItem.columnName}=?<#if fieldItem_has_next>,</#if></#if></#list></#if>"
+" where <#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0><#list classInfo.fieldList as fieldItem ><#if fieldItem_index = 0>${fieldItem.columnName}=?<#break ></#if></#list></#if>", +" where <#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0><#list classInfo.fieldList as fieldItem ><#if fieldItem_index = 0>${fieldItem.columnName}=?<#break ></#if></#list></#if>",
<#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0> <#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0>
<#list classInfo.fieldList as fieldItem ><#if fieldItem_index gt 0 >${classInfo.className?uncap_first}.get${fieldItem.fieldName?cap_first}(),</#if></#list> <#list classInfo.fieldList as fieldItem ><#if fieldItem_index gt 0 >${classInfo.className?uncap_first}.get${fieldItem.fieldName?cap_first}(),</#if></#list>
@@ -35,12 +35,12 @@ public class ${classInfo.className}DaoImpl implements I${classInfo.className}Dao
@Override @Override
public int delete(int id) { public int delete(int id) {
return jdbcTemplate.update("DELETE from ${classInfo.tableName} where <#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0><#list classInfo.fieldList as fieldItem ><#if fieldItem_index = 0>${fieldItem.columnName}=?<#break ></#if></#list></#if>",id); return jdbcTemplate.update("DELETE from ${classInfo.originTableName} where <#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0><#list classInfo.fieldList as fieldItem ><#if fieldItem_index = 0>${fieldItem.columnName}=?<#break ></#if></#list></#if>",id);
} }
@Override @Override
public ${classInfo.className} findById(int id) { public ${classInfo.className} findById(int id) {
List<${classInfo.className}> list = jdbcTemplate.query("select * from ${classInfo.tableName} where <#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0><#list classInfo.fieldList as fieldItem ><#if fieldItem_index = 0>${fieldItem.columnName}=?<#break ></#if></#list></#if>", new Object[]{id}, new BeanPropertyRowMapper<${classInfo.className}>(${classInfo.className}.class)); List<${classInfo.className}> list = jdbcTemplate.query("select * from ${classInfo.originTableName} where <#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0><#list classInfo.fieldList as fieldItem ><#if fieldItem_index = 0>${fieldItem.columnName}=?<#break ></#if></#list></#if>", new Object[]{id}, new BeanPropertyRowMapper<${classInfo.className}>(${classInfo.className}.class));
if(list!=null && !list.isEmpty() ){ if(list!=null && !list.isEmpty() ){
return list.get(0); return list.get(0);
}else{ }else{
@@ -50,7 +50,7 @@ public class ${classInfo.className}DaoImpl implements I${classInfo.className}Dao
@Override @Override
public List<${classInfo.className}> findAllList(Map<String,Object> params) { public List<${classInfo.className}> findAllList(Map<String,Object> params) {
List<${classInfo.className}> list = jdbcTemplate.query("select * from ${classInfo.tableName}", new Object[]{}, new BeanPropertyRowMapper<${classInfo.className}>(${classInfo.className}.class)); List<${classInfo.className}> list = jdbcTemplate.query("select * from ${classInfo.originTableName}", new Object[]{}, new BeanPropertyRowMapper<${classInfo.className}>(${classInfo.className}.class));
if(list!=null && !list.isEmpty() ){ if(list!=null && !list.isEmpty() ){
return list; return list;
}else{ }else{

View File

@@ -0,0 +1,60 @@
<#if isWithPackage?exists && isWithPackage==true>package ${packageName}.entity;</#if>
<#if isAutoImport?exists && isAutoImport==true>
<#if isLombok?exists && isLombok==true>import lombok.Data;</#if>
import java.util.Date;
import java.util.List;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.GeneratedValue;
<#if isSwagger?exists && isSwagger==true>
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;</#if>
</#if>
/**
* @description ${classInfo.classComment}
* @author ${authorName}
* @date ${.now?string('yyyy-MM-dd')}
*/
@Entity
@Builder
@AllArgsConstructor
<#if isLombok?exists && isLombok==true>@Data</#if>
<#if isComment?exists && isComment==true>@Table(name="${classInfo.originTableName}")</#if><#if isSwagger?exists && isSwagger==true>
@ApiModel("${classInfo.classComment}")</#if>
public class ${classInfo.className} implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@ApiModelProperty("id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
<#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0>
<#list classInfo.fieldList as fieldItem >
<#if isComment?exists && isComment==true>/**
* ${fieldItem.fieldComment}
*/</#if><#if isSwagger?exists && isSwagger==true>
@ApiModelProperty("${fieldItem.fieldComment}")</#if>
<#if isComment?exists && isComment==true>@Column(name="${fieldItem.columnName}")</#if>
private ${fieldItem.fieldClass} ${fieldItem.fieldName};
</#list>
public ${classInfo.className}() {
}
</#if>
<#if isLombok?exists && isLombok==false>
public ${fieldItem.fieldClass} get${fieldItem.fieldName?cap_first}() {
return ${fieldItem.fieldName};
}
public void set${fieldItem.fieldName?cap_first}(${fieldItem.fieldClass} ${fieldItem.fieldName}) {
this.${fieldItem.fieldName} = ${fieldItem.fieldName};
}
</#if>
}

View File

@@ -0,0 +1,106 @@
<#if isWithPackage?exists && isWithPackage==true>package ${packageName}.controller;</#if>
<#if isAutoImport?exists && isAutoImport==true>
import ${packageName}.entity.${classInfo.className};
import ${packageName}.repository.${classInfo.className}Repository;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.data.domain.ExampleMatcher;
import org.springframework.data.domain.PageRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
import java.util.Optional;
</#if>
/**
* @description ${classInfo.classComment}
* @author ${authorName}
* @date ${.now?string('yyyy-MM-dd')}
*/
@Slf4j
@Api(tags = "${classInfo.className?uncap_first}")
@CrossOrigin
@RestController
@RequestMapping("/${classInfo.className?uncap_first}")
public class ${classInfo.className}Controller {
@Autowired
private ${classInfo.className}Repository ${classInfo.className?uncap_first}Repository;
/**
* 新增或编辑
*/
@PostMapping("/save")
@ApiOperation(value = "save ${classInfo.className}", notes = "save ${classInfo.className}")
public Object save(@RequestBody ${classInfo.className} ${classInfo.className?uncap_first}){
try {
return ReturnT.success(${classInfo.className?uncap_first}Repository.save(${classInfo.className?uncap_first}));
} catch (Exception e) {
e.printStackTrace();
return ReturnT.error("保存失败");
}
}
/**
* 删除
*/
@PostMapping("/delete")
@ApiOperation(value = "delete ${classInfo.className}", notes = "delete ${classInfo.className}")
public Object delete(int id){
Optional<${classInfo.className}> ${classInfo.className?uncap_first}=${classInfo.className?uncap_first}Repository.findById(id);
if(${classInfo.className?uncap_first}.isPresent()){
${classInfo.className?uncap_first}Repository.deleteById(id);
return ${returnUtilSuccess}("删除成功");
}else{
return ${returnUtilFailure}("没有找到该对象");
}
}
/**
* 查询
*/
@PostMapping("/find")
@ApiOperation(value = "find ${classInfo.className} by id", notes = "find ${classInfo.className} by id")
public Object find(int id){
Optional<${classInfo.className}> ${classInfo.className?uncap_first}=${classInfo.className?uncap_first}Repository.findById(id);
if(${classInfo.className?uncap_first}.isPresent()){
return ${returnUtilSuccess}(${classInfo.className?uncap_first}.get());
}else{
return ${returnUtilFailure}("没有找到该对象");
}
}
/**
* 分页查询
*/
@PostMapping("/list")
@ApiOperation(value = "list ${classInfo.className}", notes = "list ${classInfo.className}")
public Object list(@RequestBody ${classInfo.className} ${classInfo.className?uncap_first},
@RequestParam(required = false, defaultValue = "0") int pageNumber,
@RequestParam(required = false, defaultValue = "10") int pageSize) {
try {
//创建匹配器,需要查询条件请修改此处代码
ExampleMatcher matcher = ExampleMatcher.matchingAll();
//创建实例
Example<${classInfo.className}> example = Example.of(${classInfo.className?uncap_first}, matcher);
//分页构造
Pageable pageable = PageRequest.of(pageNumber,pageSize);
return ReturnT.success(${classInfo.className?uncap_first}Repository.findAll(example, pageable));
} catch (Exception e) {
e.printStackTrace();
return ReturnT.error(e.getMessage());
}
}
}

View File

@@ -0,0 +1,26 @@
<#if isWithPackage?exists && isWithPackage==true>package ${packageName}.repository;</#if>
<#if isAutoImport?exists && isAutoImport==true>import ${packageName}.entity.${classInfo.className};
<#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0>
<#list classInfo.fieldList as fieldItem >
<#if fieldItem.fieldClass == "Date">
<#assign importDdate = true />
</#if>
</#list>
</#if>
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
</#if>
/**
* @description ${classInfo.classComment}
* @author ${authorName}
* @date ${.now?string('yyyy-MM-dd')}
*/
@Repository
public interface ${classInfo.className}Repository extends JpaRepository<${classInfo.className},Integer> {
}

View File

@@ -21,7 +21,7 @@ import io.swagger.annotations.ApiModelProperty;</#if>
*/ */
@Entity @Entity
<#if isLombok?exists && isLombok==true>@Data</#if> <#if isLombok?exists && isLombok==true>@Data</#if>
<#if isComment?exists && isComment==true>@Table(name="${classInfo.tableName}")</#if><#if isSwagger?exists && isSwagger==true> <#if isComment?exists && isComment==true>@Table(name="${classInfo.originTableName}")</#if><#if isSwagger?exists && isSwagger==true>
@ApiModel("${classInfo.classComment}")</#if> @ApiModel("${classInfo.classComment}")</#if>
public class ${classInfo.className} implements Serializable { public class ${classInfo.className} implements Serializable {

View File

@@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
</#if> </#if>
/** /**
* @description ${classInfo.classComment} * @description ${classInfo.classComment}

View File

@@ -1,4 +1,4 @@
<#if isWithPackage?exists && isWithPackage==true>package ${packageName}.mapper;</#if> <#if isWithPackage?exists && isWithPackage==true>package ${packageName}.repository;</#if>
<#if isAutoImport?exists && isAutoImport==true>import ${packageName}.entity.${classInfo.className}; <#if isAutoImport?exists && isAutoImport==true>import ${packageName}.entity.${classInfo.className};
<#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0> <#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0>

View File

@@ -38,7 +38,7 @@ public class ${classInfo.className}Controller {
* @date ${.now?string('yyyy/MM/dd')} * @date ${.now?string('yyyy/MM/dd')}
**/ **/
@RequestMapping("/delete") @RequestMapping("/delete")
public ReturnT<String> delete(int id){ public Object delete(int id){
return ${classInfo.className?uncap_first}Service.delete(id); return ${classInfo.className?uncap_first}Service.delete(id);
} }
@@ -48,7 +48,7 @@ public class ${classInfo.className}Controller {
* @date ${.now?string('yyyy/MM/dd')} * @date ${.now?string('yyyy/MM/dd')}
**/ **/
@RequestMapping("/update") @RequestMapping("/update")
public ReturnT<String> update(${classInfo.className} ${classInfo.className?uncap_first}){ public Object update(${classInfo.className} ${classInfo.className?uncap_first}){
return ${classInfo.className?uncap_first}Service.update(${classInfo.className?uncap_first}); return ${classInfo.className?uncap_first}Service.update(${classInfo.className?uncap_first});
} }

View File

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="${packageName}.dao.${classInfo.className}Dao"> <mapper namespace="${packageName}.dao.${classInfo.className}Mapper">
<resultMap id="BaseResultMap" type="${packageName}.entity.${classInfo.className}Entity" > <resultMap id="BaseResultMap" type="${packageName}.entity.${classInfo.className}" >
<#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0> <#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0>
<#list classInfo.fieldList as fieldItem > <#list classInfo.fieldList as fieldItem >
<result column="${fieldItem.columnName}" property="${fieldItem.fieldName}" /> <result column="${fieldItem.columnName}" property="${fieldItem.fieldName}" />
@@ -19,13 +19,13 @@
</#if> </#if>
</sql> </sql>
<insert id="insert" useGeneratedKeys="true" keyColumn="id" keyProperty="id" parameterType="${packageName}.entity.${classInfo.className}Entity"> <insert id="insert" useGeneratedKeys="true" keyColumn="id" keyProperty="id" parameterType="${packageName}.entity.${classInfo.className}">
INSERT INTO ${classInfo.tableName} INSERT INTO ${classInfo.originTableName}
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
<#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0> <#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0>
<#list classInfo.fieldList as fieldItem > <#list classInfo.fieldList as fieldItem >
<#if fieldItem.columnName != "id" > <#if fieldItem.columnName != "id" >
<if test="null != ${fieldItem.fieldName} and '' != ${fieldItem.fieldName}"> <if test="null != ${fieldItem.fieldName} <#if fieldItem.fieldClass ="String">and '' != ${fieldItem.fieldName}</#if>">
${fieldItem.columnName}<#if fieldItem_has_next>,</#if> ${fieldItem.columnName}<#if fieldItem_has_next>,</#if>
${r"</if>"} ${r"</if>"}
</#if> </#if>
@@ -41,7 +41,7 @@
NOW()<#if fieldItem_has_next>,</#if> NOW()<#if fieldItem_has_next>,</#if>
${r"</if>"} ${r"</if>"}
<#else>--> <#else>-->
<if test="null != ${fieldItem.fieldName} and '' != ${fieldItem.fieldName}"> <if test="null != ${fieldItem.fieldName} <#if fieldItem.fieldClass ="String">and '' != ${fieldItem.fieldName}</#if>">
${r"#{"}${fieldItem.fieldName}${r"}"}<#if fieldItem_has_next>,</#if> ${r"#{"}${fieldItem.fieldName}${r"}"}<#if fieldItem_has_next>,</#if>
${r"</if>"} ${r"</if>"}
<#--</#if>--> <#--</#if>-->
@@ -52,16 +52,16 @@
</insert> </insert>
<delete id="delete" > <delete id="delete" >
DELETE FROM ${classInfo.tableName} DELETE FROM ${classInfo.originTableName}
WHERE id = ${r"#{id}"} WHERE id = ${r"#{id}"}
</delete> </delete>
<update id="update" parameterType="${packageName}.entity.${classInfo.className}Entity"> <update id="update" parameterType="${packageName}.entity.${classInfo.className}">
UPDATE ${classInfo.tableName} UPDATE ${classInfo.originTableName}
<set> <set>
<#list classInfo.fieldList as fieldItem > <#list classInfo.fieldList as fieldItem >
<#if fieldItem.columnName != "id" && fieldItem.columnName != "AddTime" && fieldItem.columnName != "UpdateTime" > <#if fieldItem.columnName != "id" && fieldItem.columnName != "AddTime" && fieldItem.columnName != "UpdateTime" >
<if test="null != ${fieldItem.fieldName} and '' != ${fieldItem.fieldName}">${fieldItem.columnName} = ${r"#{"}${fieldItem.fieldName}${r"}"}<#if fieldItem_has_next>,</#if>${r"</if>"} <if test="null != ${fieldItem.fieldName} <#if fieldItem.fieldClass ="String">and '' != ${fieldItem.fieldName}</#if>">${fieldItem.columnName} = ${r"#{"}${fieldItem.fieldName}${r"}"}<#if fieldItem_has_next>,</#if>${r"</if>"}
</#if> </#if>
</#list> </#list>
</set> </set>
@@ -71,19 +71,19 @@
<select id="load" resultMap="BaseResultMap"> <select id="load" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List" /> SELECT <include refid="Base_Column_List" />
FROM ${classInfo.tableName} FROM ${classInfo.originTableName}
WHERE id = ${r"#{id}"} WHERE id = ${r"#{id}"}
</select> </select>
<select id="pageList" resultMap="BaseResultMap"> <select id="pageList" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List" /> SELECT <include refid="Base_Column_List" />
FROM ${classInfo.tableName} FROM ${classInfo.originTableName}
LIMIT ${r"#{offset}"}, ${r"#{pageSize}"} LIMIT ${r"#{offset}"}, ${r"#{pageSize}"}
</select> </select>
<select id="pageListCount" resultType="java.lang.Integer"> <select id="pageListCount" resultType="java.lang.Integer">
SELECT count(1) SELECT count(1)
FROM ${classInfo.tableName} FROM ${classInfo.originTableName}
</select> </select>
</mapper> </mapper>

View File

@@ -140,6 +140,7 @@
vm.formData.options.returnUtilSuccess="${(value.returnUtilSuccess)!!}"; vm.formData.options.returnUtilSuccess="${(value.returnUtilSuccess)!!}";
vm.formData.options.returnUtilFailure="${(value.returnUtilFailure)!!}"; vm.formData.options.returnUtilFailure="${(value.returnUtilFailure)!!}";
vm.outputStr="${(value.outputStr)!!}"; vm.outputStr="${(value.outputStr)!!}";
loadAllCookie()
</script> </script>
</body> </body>
</html> </html>

10
pom.xml
View File

@@ -11,7 +11,7 @@
<parent> <parent>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId> <artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.7.RELEASE</version> <version>2.6.3</version>
</parent> </parent>
<modules> <modules>
@@ -49,7 +49,7 @@
<dependency> <dependency>
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId> <artifactId>fastjson</artifactId>
<version>1.2.60</version> <version>1.2.83</version>
</dependency> </dependency>
<!-- 支持 @ConfigurationProperties 注解 --> <!-- 支持 @ConfigurationProperties 注解 -->
@@ -78,7 +78,7 @@
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
<version>1.18.12</version> <version>1.18.22</version>
</dependency> </dependency>
<!-- freemarker --> <!-- freemarker -->
@@ -98,13 +98,13 @@
<dependency> <dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId> <artifactId>commons-lang3</artifactId>
<version>3.9</version> <version>3.12.0</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io --> <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency> <dependency>
<groupId>commons-io</groupId> <groupId>commons-io</groupId>
<artifactId>commons-io</artifactId> <artifactId>commons-io</artifactId>
<version>2.8.0</version> <version>2.11.0</version>
</dependency> </dependency>
</dependencies> </dependencies>