From a10a330e4858b2d4fa1db7f34aa6cd292333e2b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?MOSHOW=E9=83=91=E9=94=B4?= Date: Sat, 16 Jan 2021 17:37:30 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A8=E6=98=8E=E5=89=8D=E7=BC=80=E9=80=89?= =?UTF-8?q?=E9=A1=B9(=E6=84=9F=E8=B0=A2@wwlg=E7=9A=84=E5=BB=BA=E8=AE=AE)?= =?UTF-8?q?=E3=80=82=20=E6=98=AF=E5=90=A6=E5=B8=A6=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=E8=AE=BE=E7=BD=AE(=E6=84=9F=E8=B0=A2@fengpoj?= =?UTF-8?q?ian=E7=9A=84=E5=BB=BA=E8=AE=AE)=E3=80=82=E4=BC=98=E5=8C=96Mybat?= =?UTF-8?q?is=E7=9A=84''!=3D=E5=88=A4=E6=96=AD(=E6=84=9F=E8=B0=A2@zhongsb?= =?UTF-8?q?=E7=9A=84=E5=BB=BA=E8=AE=AE)=E3=80=82=20Mybatis-Plus=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0Service=E5=B1=82(=E6=84=9F=E8=B0=A2@yf466532479?= =?UTF-8?q?=E7=9A=84=E5=BB=BA=E8=AE=AE)=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 17 ++++--- .../src/main/resources/template.json | 7 ++- .../beetlsql/beetlcontroller.ftl | 14 ++--- .../code-generator/jpa/jpacontroller.ftl | 8 +-- .../mybatis-plus/pluscontroller.ftl | 30 +++++------ .../mybatis-plus/plusmapper.ftl | 2 +- .../mybatis-plus/plusservice.ftl | 16 ++++++ .../code-generator/mybatis/controller.ftl | 4 +- .../code-generator/mybatis/mybatis.ftl | 6 +-- .../code-generator/mybatis/service.ftl | 6 +-- .../code-generator/mybatis/service_impl.ftl | 14 ++--- .../{headerCDN.html => header-CDN.html} | 20 ++++++-- .../resources/templates/header-local.html | 50 ++++++++++++++++++ .../src/main/resources/templates/header.html | 51 +------------------ 14 files changed, 139 insertions(+), 106 deletions(-) create mode 100644 generator-web/src/main/resources/templates/code-generator/mybatis-plus/plusservice.ftl rename generator-web/src/main/resources/templates/{headerCDN.html => header-CDN.html} (57%) create mode 100644 generator-web/src/main/resources/templates/header-local.html diff --git a/README.md b/README.md index 4256087..eddc4d5 100644 --- a/README.md +++ b/README.md @@ -20,23 +20,24 @@ > #支持`MySQL`、Oracle、PgSQL三大主流数据库 > >generate to many popular templates by ddl-sql/insert-sql/simple json
->可通过`建表SQL语句`或`INSERT语句`或者`简单JSON`生成`JPA/JdbcTemplate/Mybatis/MybatisPlus/BeetlSQL`相关模板代码. +> 可通过`建表SQL语句`或`INSERT语句`或者`简单JSON`生成`JPA/JdbcTemplate/Mybatis/MybatisPlus/BeetlSQL`相关模板代码. > >thanks for your using and feedback,I'm inspired by the 600PV every day and github more than 700 stars
-> 感谢大家的使用和反馈,每天六百的PV和获得超过七百多的星星是我前进和继续做下去的动力。 +> 感谢大家的使用和反馈,每天六百的PV和获得超过七百多的星星是我前进和继续做下去的动力。 > >hope everyone can keep good balance on work and life , stay health and safety , be smooth on work as well
-> 愿大家可以维持生活和工作平衡,保持健康和安全,祝大家工作顺利! +> 愿大家可以维持生活和工作平衡,保持健康和安全,祝大家工作顺利! # Tips or Features -- 支持DDL SQL/INSERT SQL/SIMPLE JSON生成模式 -- 自动记忆最近生成的内容,最多保留9个 +- 支持DDL SQL/INSERT SQL/SIMPLE JSON三种生成模式 +- `自动记忆`最近生成的内容,最多保留9个 - 提供众多`通用模板`,易于使用,复制粘贴加简单修改即可完成CRUD操作 - 支持`特殊字符`模板(`#`请用`井`代替;`$`请用`¥`代替) - `Util集合`提供一些基本对象的使用方法供方便COPY,如对应的CRUD SQL语句、setMap、getMap、get属性等等 -- 关于`类名注释`,根据`comment=(mysql)`或者`comment on table(pgsql/oracle)`生成 +- 关于`类名注释`,可根据`comment=(mysql)`或者`comment on table(pgsql/oracle)`生成 - 可设置是否`自动引包`(java中的import)及`引入包路径`(java类中的package),建议取消并配合IDEA的自动引包更智能(Settings→Editor→General→Auto Import,勾选Add unambiguous imports on the fly以及Optimize imports on the fly)。 - 可设置`表名前缀`,例如sys_user前缀为sys_之后可以正确生成user类 +- 可切换`header.html`中的include文件为`header-local.html`(本地模式)/`header-CDN.html`(云CDN模式) # Url @@ -58,10 +59,10 @@ Thanks for `JetBrains` providing us the `Licenses for Open Source Development` # Update Logs |更新日期|更新内容| |:----|:----| -|2021.01.17|生成后自动trim掉前后空格输出。完善ReadMe文档。| +|2021.01.17|生成后自动trim掉前后空格输出。
完善ReadMe文档。
优化云CDN引入部分。
优化returnUtil部分。
表明前缀选项(感谢@wwlg的建议)。
是否带字段注释设置(感谢@fengpojian的建议)。
优化Mybatis的''!=判断(感谢@zhongsb的建议)。
Mybatis-Plus增加Service层(感谢@yf466532479的建议)。 | |2021.01.16|全新3.0版本:
一、前端半vue半js化,更多动态加载项。
二、支持更多生成设置,优化生成场景。
三、js导入支持本地/CDN模式,支持断网环境轻松使用。| |2020.10.22|1.tinyint多加一个Short类型转换(感谢@wttHero的建议)| -|2020.10.20|1.修复mapper2 insert代码问题(感谢@mXiaoWan的PR)
2.优化对fulltext/index关键字的处理(感谢@WEGFan的反馈)。
3.新增日期类型的转换选择(感谢@qingkediguo的建议)。
4.新增是否包装类型的转换选择。| +|2020.10.20|1.修复mapper2 insert代码问题(感谢@mXiaoWan的PR)
2.优化对fulltext/index关键字的处理(感谢@WEGFan的反馈)。
3.新增日期类型的转换选择(感谢@qingkediguo的建议)。
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模板优化等.
2.优化表备注的获取逻辑.
3.生成时间格式改为yyyy-MM-dd,移除具体的时间,只保留日期| diff --git a/generator-web/src/main/resources/template.json b/generator-web/src/main/resources/template.json index 607e479..e95dad1 100644 --- a/generator-web/src/main/resources/template.json +++ b/generator-web/src/main/resources/template.json @@ -130,11 +130,16 @@ }, { "id": "61", + "name": "plusservice", + "description": "plusservice" + }, + { + "id": "62", "name": "plusmapper", "description": "plusmapper" }, { - "id": "62", + "id": "63", "name": "plusentity", "description": "plusentity" } diff --git a/generator-web/src/main/resources/templates/code-generator/beetlsql/beetlcontroller.ftl b/generator-web/src/main/resources/templates/code-generator/beetlsql/beetlcontroller.ftl index 7fdd649..65be758 100644 --- a/generator-web/src/main/resources/templates/code-generator/beetlsql/beetlcontroller.ftl +++ b/generator-web/src/main/resources/templates/code-generator/beetlsql/beetlcontroller.ftl @@ -27,10 +27,10 @@ public class ${classInfo.className}Controller { ${classInfo.className} ${classInfo.className?uncap_first}=sqlManager.unique(${classInfo.className}.class,${classInfo.className?uncap_first}.getId()); if(${classInfo.className?uncap_first}!=null){ sqlManager.updateById(${classInfo.className?uncap_first}); - return ${returnUtil}.success("编辑成功"); + return ${returnUtilSuccess}("编辑成功"); }else{ sqlManager.insert(${classInfo.className?uncap_first}); - return ${returnUtil}.error("保存成功"); + return ${returnUtilFailure}("保存成功"); } } @@ -42,9 +42,9 @@ public class ${classInfo.className}Controller { ${classInfo.className} ${classInfo.className?uncap_first}=sqlManager.unique(${classInfo.className}.class,id); if(${classInfo.className?uncap_first}!=null){ sqlManager.deleteById(id); - return ${returnUtil}.success("删除成功"); + return ${returnUtilSuccess}("删除成功"); }else{ - return ${returnUtil}.error("没有找到该对象"); + return ${returnUtilFailure}("没有找到该对象"); } } @@ -55,9 +55,9 @@ public class ${classInfo.className}Controller { public Object find(int id){ ${classInfo.className} ${classInfo.className?uncap_first}=sqlManager.unique(${classInfo.className}.class,id); if(${classInfo.className?uncap_first}!=null){ - return ${returnUtil}.success(${classInfo.className?uncap_first}); + return ${returnUtilSuccess}(${classInfo.className?uncap_first}); }else{ - return ${returnUtil}.error("没有找到该对象"); + return ${returnUtilFailure}("没有找到该对象"); } } @@ -69,7 +69,7 @@ public class ${classInfo.className}Controller { @RequestParam(required = false, defaultValue = "0") int pageNumber, @RequestParam(required = false, defaultValue = "10") int pageSize) { List<${classInfo.className}> list = sqlManager.query(${classInfo.className}.class).select(); - return ${returnUtil}.success(list); + return ${returnUtilSuccess}(list); } } diff --git a/generator-web/src/main/resources/templates/code-generator/jpa/jpacontroller.ftl b/generator-web/src/main/resources/templates/code-generator/jpa/jpacontroller.ftl index 750e4d5..c6c9829 100644 --- a/generator-web/src/main/resources/templates/code-generator/jpa/jpacontroller.ftl +++ b/generator-web/src/main/resources/templates/code-generator/jpa/jpacontroller.ftl @@ -42,9 +42,9 @@ public class ${classInfo.className}Controller { 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 ${returnUtil}.success("删除成功"); + return ${returnUtilSuccess}("删除成功"); }else{ - return ${returnUtil}.error("没有找到该对象"); + return ${returnUtilFailure}("没有找到该对象"); } } @@ -55,9 +55,9 @@ public class ${classInfo.className}Controller { 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 ${returnUtil}.success(${classInfo.className?uncap_first}.get()); + return ${returnUtilSuccess}(${classInfo.className?uncap_first}.get()); }else{ - return ${returnUtil}.error("没有找到该对象"); + return ${returnUtilFailure}("没有找到该对象"); } } diff --git a/generator-web/src/main/resources/templates/code-generator/mybatis-plus/pluscontroller.ftl b/generator-web/src/main/resources/templates/code-generator/mybatis-plus/pluscontroller.ftl index 1c35979..f18e442 100644 --- a/generator-web/src/main/resources/templates/code-generator/mybatis-plus/pluscontroller.ftl +++ b/generator-web/src/main/resources/templates/code-generator/mybatis-plus/pluscontroller.ftl @@ -18,7 +18,7 @@ import java.util.List; import java.util.Map; /** -* @description ${classInfo.classComment} +* @description ${classInfo.classComment}控制器 * @author ${authorName} * @date ${.now?string('yyyy-MM-dd')} */ @@ -42,12 +42,12 @@ public class ${classInfo.className}Controller { ${classInfo.className?uncap_first}Mapper.updateById(${classInfo.className?uncap_first}); }else{ if(${classInfo.className?uncap_first}Mapper.selectOne(new QueryWrapper<${classInfo.className}>().eq("${classInfo.className?uncap_first}_name",${classInfo.className?uncap_first}.get${classInfo.className}Name()))!=null){ - return ${returnUtil}.ERROR("保存失败,名字重复"); + return ${returnUtilFailure}("保存失败,名字重复"); } ${classInfo.className?uncap_first}.setCreateTime(new Date()); ${classInfo.className?uncap_first}Mapper.insert(${classInfo.className?uncap_first}); } - return ${returnUtil}.SUCCESS("保存成功"); + return ${returnUtilSuccess}("保存成功"); } /** @@ -58,9 +58,9 @@ public class ${classInfo.className}Controller { ${classInfo.className} ${classInfo.className?uncap_first} = ${classInfo.className?uncap_first}Mapper.selectOne(new QueryWrapper<${classInfo.className}>().eq("${classInfo.className?uncap_first}_id",id)); if(${classInfo.className?uncap_first}!=null){ ${classInfo.className?uncap_first}Mapper.deleteById(id); - return ${returnUtil}.SUCCESS("删除成功"); + return ${returnUtilSuccess}("删除成功"); }else{ - return ${returnUtil}.ERROR("没有找到该对象"); + return ${returnUtilFailure}("没有找到该对象"); } } @@ -71,9 +71,9 @@ public class ${classInfo.className}Controller { public Object find(int id){ ${classInfo.className} ${classInfo.className?uncap_first} = ${classInfo.className?uncap_first}Mapper.selectOne(new QueryWrapper<${classInfo.className}>().eq("${classInfo.className?uncap_first}_id",id)); if(${classInfo.className?uncap_first}!=null){ - return ${returnUtil}.SUCCESS(${classInfo.className?uncap_first}); + return ${returnUtilSuccess}(${classInfo.className?uncap_first}); }else{ - return ${returnUtil}.ERROR("没有找到该对象"); + return ${returnUtilFailure}("没有找到该对象"); } } @@ -101,8 +101,8 @@ public class ${classInfo.className}Controller { /** * 手工分页查询(按需使用) */ - @PostMapping("/list2") - public ReturnT list2(String searchParams, + /*@PostMapping("/list2") + public Object list2(String searchParams, @RequestParam(required = false, defaultValue = "0") int page, @RequestParam(required = false, defaultValue = "10") int limit) { log.info("searchParams:"+ JSON.toJSONString(searchParams)); @@ -116,8 +116,8 @@ public class ${classInfo.className}Controller { List<${classInfo.className}> itemList = ${classInfo.className?uncap_first}Mapper.pageAll(queryParamDTO,(page - 1)* limit,limit); Integer itemCount = ${classInfo.className?uncap_first}Mapper.countAll(queryParamDTO); //返回结果 - return ReturnT.PAGE(itemList,itemCount); - } + return ${returnUtilSuccess}.PAGE(itemList,itemCount); + }*/ @GetMapping("/list") public ModelAndView listPage(){ return new ModelAndView("${classInfo.className?uncap_first}-list"); @@ -139,11 +139,11 @@ public class ${classInfo.className}Controller { ${classInfo.className?uncap_first}.setUpdateTime(new Date()); ${classInfo.className?uncap_first}.setStatus(status); ${classInfo.className?uncap_first}Mapper.updateById(${classInfo.className?uncap_first}); - return ReturnT.SUCCESS((status==1)?"已发布":"已暂停"); + return ${returnUtilSuccess}((status==1)?"已发布":"已暂停"); }else if(status.equals(${classInfo.className?uncap_first}.getStatus())){ - return ReturnT.SUCCESS("状态不正确"); + return ${returnUtilFailure}("状态不正确"); }else{ - return ReturnT.ERROR(); + return ${returnUtilFailure}(); } } @@ -152,7 +152,7 @@ public class ${classInfo.className}Controller { */ @PostMapping("/execute") public Object execute(){ - return ReturnT.SUCCESS(); + return ${returnUtilSuccess}; } } } diff --git a/generator-web/src/main/resources/templates/code-generator/mybatis-plus/plusmapper.ftl b/generator-web/src/main/resources/templates/code-generator/mybatis-plus/plusmapper.ftl index 6859a12..438b514 100644 --- a/generator-web/src/main/resources/templates/code-generator/mybatis-plus/plusmapper.ftl +++ b/generator-web/src/main/resources/templates/code-generator/mybatis-plus/plusmapper.ftl @@ -7,7 +7,7 @@ import ${packageName}.entity.${classInfo.className}; import java.util.List; /** - * @description ${classInfo.classComment} + * @description ${classInfo.classComment}Mapper * @author ${authorName} * @date ${.now?string('yyyy-MM-dd')} */ diff --git a/generator-web/src/main/resources/templates/code-generator/mybatis-plus/plusservice.ftl b/generator-web/src/main/resources/templates/code-generator/mybatis-plus/plusservice.ftl new file mode 100644 index 0000000..4672e01 --- /dev/null +++ b/generator-web/src/main/resources/templates/code-generator/mybatis-plus/plusservice.ftl @@ -0,0 +1,16 @@ +<#if isWithPackage?exists && isWithPackage==true>package ${packageName}.service; +<#if isAutoImport?exists && isAutoImport==true> +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @description ${classInfo.classComment}服务层 + * @author ${authorName} + * @date ${.now?string('yyyy-MM-dd')} + */ +@Service +public interface ${classInfo.className}Service extends IService<${classInfo.className}> { + + + +} diff --git a/generator-web/src/main/resources/templates/code-generator/mybatis/controller.ftl b/generator-web/src/main/resources/templates/code-generator/mybatis/controller.ftl index 59ab527..69697c7 100644 --- a/generator-web/src/main/resources/templates/code-generator/mybatis/controller.ftl +++ b/generator-web/src/main/resources/templates/code-generator/mybatis/controller.ftl @@ -28,7 +28,7 @@ public class ${classInfo.className}Controller { * @date ${.now?string('yyyy/MM/dd')} **/ @RequestMapping("/insert") - public ReturnT insert(${classInfo.className} ${classInfo.className?uncap_first}){ + public Object insert(${classInfo.className} ${classInfo.className?uncap_first}){ return ${classInfo.className?uncap_first}Service.insert(${classInfo.className?uncap_first}); } @@ -58,7 +58,7 @@ public class ${classInfo.className}Controller { * @date ${.now?string('yyyy/MM/dd')} **/ @RequestMapping("/load") - public ReturnT load(int id){ + public Object load(int id){ return ${classInfo.className?uncap_first}Service.load(id); } diff --git a/generator-web/src/main/resources/templates/code-generator/mybatis/mybatis.ftl b/generator-web/src/main/resources/templates/code-generator/mybatis/mybatis.ftl index 4765b68..9a583f5 100644 --- a/generator-web/src/main/resources/templates/code-generator/mybatis/mybatis.ftl +++ b/generator-web/src/main/resources/templates/code-generator/mybatis/mybatis.ftl @@ -25,7 +25,7 @@ <#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0> <#list classInfo.fieldList as fieldItem > <#if fieldItem.columnName != "id" > - ${r""} + ${fieldItem.columnName}<#if fieldItem_has_next>, ${r""} @@ -41,7 +41,7 @@ NOW()<#if fieldItem_has_next>, ${r""} <#else>--> - ${r""} + ${r"#{"}${fieldItem.fieldName}${r"}"}<#if fieldItem_has_next>, ${r""} <#----> @@ -61,7 +61,7 @@ <#list classInfo.fieldList as fieldItem > <#if fieldItem.columnName != "id" && fieldItem.columnName != "AddTime" && fieldItem.columnName != "UpdateTime" > - ${r""}${fieldItem.columnName} = ${r"#{"}${fieldItem.fieldName}${r"}"}<#if fieldItem_has_next>,${r""} + ${fieldItem.columnName} = ${r"#{"}${fieldItem.fieldName}${r"}"}<#if fieldItem_has_next>,${r""} diff --git a/generator-web/src/main/resources/templates/code-generator/mybatis/service.ftl b/generator-web/src/main/resources/templates/code-generator/mybatis/service.ftl index 6684ea0..c31f30b 100644 --- a/generator-web/src/main/resources/templates/code-generator/mybatis/service.ftl +++ b/generator-web/src/main/resources/templates/code-generator/mybatis/service.ftl @@ -11,17 +11,17 @@ public interface ${classInfo.className}Service { /** * 新增 */ - public ReturnT insert(${classInfo.className} ${classInfo.className?uncap_first}); + public Object insert(${classInfo.className} ${classInfo.className?uncap_first}); /** * 删除 */ - public ReturnT delete(int id); + public Object delete(int id); /** * 更新 */ - public ReturnT update(${classInfo.className} ${classInfo.className?uncap_first}); + public Object update(${classInfo.className} ${classInfo.className?uncap_first}); /** * 根据主键 id 查询 diff --git a/generator-web/src/main/resources/templates/code-generator/mybatis/service_impl.ftl b/generator-web/src/main/resources/templates/code-generator/mybatis/service_impl.ftl index 16fbe1f..3a8345d 100644 --- a/generator-web/src/main/resources/templates/code-generator/mybatis/service_impl.ftl +++ b/generator-web/src/main/resources/templates/code-generator/mybatis/service_impl.ftl @@ -19,29 +19,29 @@ public class ${classInfo.className}ServiceImpl implements ${classInfo.className} @Override - public ReturnT insert(${classInfo.className} ${classInfo.className?uncap_first}) { + public Object insert(${classInfo.className} ${classInfo.className?uncap_first}) { // valid if (${classInfo.className?uncap_first} == null) { - return ${returnUtil}.ERROR("必要参数缺失"); + return ${returnUtilFailure}("必要参数缺失"); } ${classInfo.className?uncap_first}Mapper.insert(${classInfo.className?uncap_first}); - return ${returnUtil}.SUCCESS; + return ${returnUtilSuccess}(); } @Override - public ReturnT delete(int id) { + public Object delete(int id) { int ret = ${classInfo.className?uncap_first}Mapper.delete(id); - return ret>0?${returnUtil}.SUCCESS():${returnUtil}.ERROR(); + return ret>0?${returnUtilSuccess}():${returnUtilFailure}(); } @Override - public ReturnT update(${classInfo.className} ${classInfo.className?uncap_first}) { + public Object update(${classInfo.className} ${classInfo.className?uncap_first}) { int ret = ${classInfo.className?uncap_first}Mapper.update(${classInfo.className?uncap_first}); - return ret>0?${returnUtil}.SUCCESS():${returnUtil}.ERROR(); + return ret>0?${returnUtilSuccess}():${returnUtilFailure}(); } diff --git a/generator-web/src/main/resources/templates/headerCDN.html b/generator-web/src/main/resources/templates/header-CDN.html similarity index 57% rename from generator-web/src/main/resources/templates/headerCDN.html rename to generator-web/src/main/resources/templates/header-CDN.html index 6fda821..7877116 100644 --- a/generator-web/src/main/resources/templates/headerCDN.html +++ b/generator-web/src/main/resources/templates/header-CDN.html @@ -8,12 +8,19 @@ + + + + + + + @@ -23,7 +30,10 @@ - + + - - \ No newline at end of file + + + + \ No newline at end of file diff --git a/generator-web/src/main/resources/templates/header-local.html b/generator-web/src/main/resources/templates/header-local.html new file mode 100644 index 0000000..368f32b --- /dev/null +++ b/generator-web/src/main/resources/templates/header-local.html @@ -0,0 +1,50 @@ + + + +SQL转Java JPA、MYBATIS实现类代码生成平台 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/generator-web/src/main/resources/templates/header.html b/generator-web/src/main/resources/templates/header.html index 368f32b..0ebed81 100644 --- a/generator-web/src/main/resources/templates/header.html +++ b/generator-web/src/main/resources/templates/header.html @@ -1,50 +1 @@ - - - -SQL转Java JPA、MYBATIS实现类代码生成平台 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +<#include "/header-local.html"> \ No newline at end of file