Merge pull request #1 from moshowgame/master

update
This commit is contained in:
gaohang
2019-09-13 17:09:48 +08:00
committed by GitHub
17 changed files with 451 additions and 580 deletions

View File

@@ -6,9 +6,9 @@
SpringBootCodeGenerator SpringBootCodeGenerator
---- ----
基于SpringBoot2+Freemarker的代码生成器用DDL SQL语句生成JPA/JdbcTemplate/Mybatis/BeetlSQL相关代码支持mysql/oracle/pgsql等三大数据库。以释放双手为目的各大模板也在陆续补充和优化。欢迎大家提交模板和交流想法 基于SpringBoot2+Freemarker的代码生成器用DDL SQL语句生成JPA/JdbcTemplate/Mybatis/BeetlSQL相关代码支持mysql/oracle/pgsql等三大数据库。以释放双手为目的各大模板也在陆续补充和优化。欢迎大家Issue提交模板和交流想法也欢迎提交PullRequest
<br><br> <br><br>
另外感谢bejson三叔将他部署在 http://java.bejson.com/generator 上目前是besjon专供工具。 另外感谢bejson三叔将他部署在 http://java.bejson.com/generator 上目前是besjon专供工具(线上版本不一定是最新的,会有延迟,请谅解,谢谢)
<br><br> <br><br>
<table><tbody> <table><tbody>
<tr><td>访问路径</td> <td>http://127.0.0.1:1234/generator</td></tr> <tr><td>访问路径</td> <td>http://127.0.0.1:1234/generator</td></tr>
@@ -16,6 +16,11 @@ SpringBootCodeGenerator
<tr><td>CSDN博客</td> <td>http://blog.csdn.net/moshowgame</td></tr> <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>更新日期</td> <td>更新内容</td></tr> <tr><td>更新日期</td> <td>更新内容</td></tr>
<tr><td>20190910-2<td>优化以及更新Maven依赖减少打包体积。 </td></tr>
<tr><td>20190910-1<td>1.修复mapper接口load方法但是xml中方法不匹配问题 2.移除mapper中CRUD时的@param 注解会影响xml的解析感谢@caojiantao的反馈。3.优化MyBatis的xml文件对Oracle的支持。感谢@wylove1992的反馈 4.新增对boolean的处理感谢@violinxsc的反馈以及优化tinyint类型生成boolean类型问题感谢@hahaYhui的反馈 </td></tr>
<tr><td>20190909<td>添加是否下划线转换为驼峰的选择(感谢@youngking28 的pull request</td></tr>
<tr><td>20190518<td>1.优化注释 2.修改 mybatis模板中 controller注解 3.修改 mybatis模板中 dao文件使用为 mapper文件 4.修改 mybatis模板中 service实现类中的一个 bug 5.修改 index.ftl文件中 mybatis模板的 dao -> mapper感谢@unqin的pull request</td></tr>
<tr><td>20190511<td>优化mybatis模块的dao和xml模板修改dao接口注解为@Repository所有dao参数改为包装类删除update语句最后的UpdateTime = NOW()修改dao接口文件的方法注释使其更符合javaDoc的标准修改insert语句增加插入行主键的返回修改load的方法名为selectByPrimaryKey修改xml的update语句新增动态if判空修改xml的insert语句新增动态插入判空更符合mybatisGenerator标准感谢@Archer-Wen的贡献 )。</td></tr>
<tr><td>20190429<td>新增返回封装工具类设置优化对oracle注释comment on column的支持感谢@liukex反馈优化对普通和特殊storage关键字的判断感谢@AhHeadFloating的反馈 )。</td></tr> <tr><td>20190429<td>新增返回封装工具类设置优化对oracle注释comment on column的支持感谢@liukex反馈优化对普通和特殊storage关键字的判断感谢@AhHeadFloating的反馈 )。</td></tr>
<tr><td>20190211<td>提交gitignore解决StringUtils.lowerCaseFirst潜在的NPE异常校验修改为@RequestParam参数校验lombok之@Data和@Slf4j优化fix JdbcDAO模板类名显示为中文问题WebMvcConfig整合MessageConverter模板代码分类感谢@liutf和@tfgzs的pull request</td></tr> <tr><td>20190211<td>提交gitignore解决StringUtils.lowerCaseFirst潜在的NPE异常校验修改为@RequestParam参数校验lombok之@Data和@Slf4j优化fix JdbcDAO模板类名显示为中文问题WebMvcConfig整合MessageConverter模板代码分类感谢@liutf和@tfgzs的pull request</td></tr>
<tr><td>20190210<td>实体生成规则切换为包装类型,不再采用基本数据类型,为实体类生成添加显示的默认构造方法(感谢@h2so的pull request</td></tr> <tr><td>20190210<td>实体生成规则切换为包装类型,不再采用基本数据类型,为实体类生成添加显示的默认构造方法(感谢@h2so的pull request</td></tr>
@@ -40,10 +45,13 @@ SpringBootCodeGenerator
</tbody></table> </tbody></table>
<table><tbody> <table><tbody>
<tr><td></td> <td>说明</td></tr> <tr><td>字段</td> <td>说明</td></tr>
<tr><td>packageName</td> <td>自定义的包名</td></tr>
<tr><td>authorName</td> <td>自定义的作者名</td></tr>
<tr><td>returnUtil</td> <td>自定义的返回Util</td></tr>
<tr><td>tableName</td> <td>sql中的表名</td></tr> <tr><td>tableName</td> <td>sql中的表名</td></tr>
<tr><td>className</td> <td>java类名</td></tr> <tr><td>className</td> <td>java类名</td></tr>
<tr><td>classComment</td> <td>java类备注</td></tr> <tr><td>classComment</td> <td>sql表备注/java类备注</td></tr>
<tr><td>fieldName</td> <td>字段名</td></tr> <tr><td>fieldName</td> <td>字段名</td></tr>
<tr><td>fieldComment</td> <td>字段备注</td></tr> <tr><td>fieldComment</td> <td>字段备注</td></tr>
</tbody></table> </tbody></table>
@@ -52,4 +60,5 @@ SpringBootCodeGenerator
<img src="./codegenerator2.png"> <img src="./codegenerator2.png">
<img src="./codegenerator3.png"> <img src="./codegenerator3.png">
<img src="./codegenerator4.png"> <img src="./codegenerator4.png">
<img src="./donate.jpg">
<table> <table>

View File

@@ -1,70 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.10.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.10.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.25" level="project" />
<orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-core:5.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.0.8.RELEASE" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.19" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.6" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.6" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.6" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.6" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.5.32" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:8.5.32" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.32" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.11.Final" level="project" />
<orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.3.4" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx.base:11.0.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx.base:linux:11.0.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx.base:mac:11.0.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx.base:win:11.0.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-web:5.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.44" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-configuration-processor:2.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-devtools:2.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:springloaded:1.2.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:4.1.12" level="project" />
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.2" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid:1.1.3" level="project" />
<orderEntry type="library" name="Maven: log4j:log4j:1.2.16" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-freemarker:2.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.freemarker:freemarker:2.3.28" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.0" level="project" />
<orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.3.0" level="project" />
<orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.3.0" level="project" />
<orderEntry type="library" name="Maven: javax.activation:activation:1.1.1" level="project" />
</component>
</module>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 129 KiB

BIN
donate.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

View File

@@ -1,84 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="Spring" name="Spring">
<configuration />
</facet>
<facet type="web" name="Web">
<configuration>
<webroots />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: com.sun.mail:javax.mail:1.6.1" level="project" />
<orderEntry type="library" name="Maven: junit:junit:4.12" level="project" />
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.10.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.10.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.25" level="project" />
<orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-core:5.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.0.8.RELEASE" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.19" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.6" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.6" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.6" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.6" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.5.32" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:8.5.32" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.32" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.11.Final" level="project" />
<orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.3.4" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx.base:11.0.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx.base:linux:11.0.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx.base:mac:11.0.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx.base:win:11.0.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-web:5.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.44" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-configuration-processor:2.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-devtools:2.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:springloaded:1.2.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:4.1.8" level="project" />
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.2" level="project" />
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.1.46" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid:1.1.3" level="project" />
<orderEntry type="library" name="Maven: log4j:log4j:1.2.16" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-freemarker:2.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.freemarker:freemarker:2.3.28" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.0" level="project" />
<orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.3.0" level="project" />
<orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.3.0" level="project" />
<orderEntry type="library" name="Maven: javax.activation:activation:1.1.1" level="project" />
</component>
</module>

View File

@@ -39,7 +39,8 @@ public class IndexController {
//2019-2-10 liutf 修改为@RequestParam参数校验 //2019-2-10 liutf 修改为@RequestParam参数校验
@RequestParam(required = false, defaultValue = "大狼狗") String authorName, @RequestParam(required = false, defaultValue = "大狼狗") String authorName,
@RequestParam(required = false, defaultValue = "com.softdev.system")String packageName, @RequestParam(required = false, defaultValue = "com.softdev.system")String packageName,
@RequestParam(required = false, defaultValue = "ApiReturnUtil")String returnUtil @RequestParam(required = false, defaultValue = "ApiReturnUtil")String returnUtil,
@RequestParam(required = false, defaultValue = "true")boolean isUnderLineToCamelCase
) { ) {
@@ -50,7 +51,7 @@ public class IndexController {
} }
// parse table // parse table
ClassInfo classInfo = CodeGeneratorTool.processTableIntoClassInfo(tableSql); ClassInfo classInfo = CodeGeneratorTool.processTableIntoClassInfo(tableSql, isUnderLineToCamelCase);
// code genarete // code genarete
Map<String, Object> params = new HashMap<String, Object>(); Map<String, Object> params = new HashMap<String, Object>();
@@ -70,7 +71,7 @@ public class IndexController {
result.put("controller", freemarkerTool.processString("code-generator/mybatis/controller.ftl", params)); result.put("controller", freemarkerTool.processString("code-generator/mybatis/controller.ftl", params));
result.put("service", freemarkerTool.processString("code-generator/mybatis/service.ftl", params)); result.put("service", freemarkerTool.processString("code-generator/mybatis/service.ftl", params));
result.put("service_impl", freemarkerTool.processString("code-generator/mybatis/service_impl.ftl", params)); result.put("service_impl", freemarkerTool.processString("code-generator/mybatis/service_impl.ftl", params));
result.put("dao", freemarkerTool.processString("code-generator/mybatis/dao.ftl", params)); result.put("mapper", freemarkerTool.processString("code-generator/mybatis/mapper.ftl", params));
result.put("mybatis", freemarkerTool.processString("code-generator/mybatis/mybatis.ftl", params)); result.put("mybatis", freemarkerTool.processString("code-generator/mybatis/mybatis.ftl", params));
result.put("model", freemarkerTool.processString("code-generator/mybatis/model.ftl", params)); result.put("model", freemarkerTool.processString("code-generator/mybatis/model.ftl", params));
//jpa //jpa

View File

@@ -19,8 +19,8 @@ public class CodeGeneratorTool {
* @param tableSql * @param tableSql
* @return * @return
*/ */
public static ClassInfo processTableIntoClassInfo(String tableSql) throws IOException { public static ClassInfo processTableIntoClassInfo(String tableSql, boolean isUnderLineToCamelCase) throws IOException {
return TableParseUtil.processTableIntoClassInfo(tableSql); return TableParseUtil.processTableIntoClassInfo(tableSql, isUnderLineToCamelCase);
} }
} }

View File

@@ -24,7 +24,7 @@ public class TableParseUtil {
* @param tableSql * @param tableSql
* @return * @return
*/ */
public static ClassInfo processTableIntoClassInfo(String tableSql) throws IOException { public static ClassInfo processTableIntoClassInfo(String tableSql, boolean isUnderLineToCamelCase) throws IOException {
if (tableSql==null || tableSql.trim().length()==0) { if (tableSql==null || tableSql.trim().length()==0) {
throw new CodeGenerateException("Table structure can not be empty."); throw new CodeGenerateException("Table structure can not be empty.");
} }
@@ -159,10 +159,16 @@ public class TableParseUtil {
columnName = columnLine.substring(0, columnLine.indexOf(" ")); columnName = columnLine.substring(0, columnLine.indexOf(" "));
// field Name // field Name
String fieldName = StringUtils.lowerCaseFirst(StringUtils.underlineToCamelCase(columnName)); // 2019-09-08 yj 添加是否下划线转换为驼峰的判断
String fieldName;
if(isUnderLineToCamelCase){
fieldName = StringUtils.lowerCaseFirst(StringUtils.underlineToCamelCase(columnName));
if (fieldName.contains("_")) { if (fieldName.contains("_")) {
fieldName = fieldName.replaceAll("_", ""); fieldName = fieldName.replaceAll("_", "");
} }
}else {
fieldName = StringUtils.lowerCaseFirst(columnName);
}
// field class // field class
columnLine = columnLine.substring(columnLine.indexOf("`")+1).trim(); columnLine = columnLine.substring(columnLine.indexOf("`")+1).trim();
@@ -170,7 +176,7 @@ public class TableParseUtil {
String fieldClass = Object.class.getSimpleName(); String fieldClass = Object.class.getSimpleName();
//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") 类似这种的,可在前后适当加一些空格之类的加以区分,否则当我的字段包含这些字符的时候,产生类型判断问题。
if (columnLine.contains(" int") || columnLine.contains("tinyint") || columnLine.contains("smallint")) { if (columnLine.contains(" int") || columnLine.contains("smallint")) {
fieldClass = Integer.class.getSimpleName(); fieldClass = Integer.class.getSimpleName();
} else if (columnLine.contains("bigint")) { } else if (columnLine.contains("bigint")) {
fieldClass = Long.class.getSimpleName(); fieldClass = Long.class.getSimpleName();
@@ -215,6 +221,9 @@ public class TableParseUtil {
}else{ }else{
fieldClass = BigDecimal.class.getSimpleName(); fieldClass = BigDecimal.class.getSimpleName();
} }
} else if (columnLine.contains("boolean")|| columnLine.contains("tinyint") ) {
//20190910 MOSHOW.K.ZHENG 新增对boolean的处理感谢@violinxsc的反馈以及修复tinyint类型字段无法生成boolean类型问题感谢@hahaYhui的反馈
fieldClass = Boolean.class.getSimpleName();
} else { } else {
fieldClass = String.class.getSimpleName(); fieldClass = String.class.getSimpleName();
} }

View File

@@ -10,55 +10,62 @@ import java.util.Map;
/** /**
* ${classInfo.classComment} * ${classInfo.classComment}
* @author ${authorName} ${.now?string('yyyy-MM-dd')} * @author ${authorName}
* @date ${.now?string('yyyy/MM/dd')}
*/ */
@Controller @RestController
@RequestMapping(value = "/${classInfo.className}")
public class ${classInfo.className}Controller { public class ${classInfo.className}Controller {
@Resource @Resource
private ${classInfo.className}Service ${classInfo.className?uncap_first}Service; private ${classInfo.className}Service ${classInfo.className?uncap_first}Service;
/** /**
* 新增 * [新增]
*/ * @author ${authorName}
* @date ${.now?string('yyyy/MM/dd')}
**/
@RequestMapping("/insert") @RequestMapping("/insert")
@ResponseBody
public ReturnT<String> insert(${classInfo.className} ${classInfo.className?uncap_first}){ public ReturnT<String> insert(${classInfo.className} ${classInfo.className?uncap_first}){
return ${classInfo.className?uncap_first}Service.insert(${classInfo.className?uncap_first}); return ${classInfo.className?uncap_first}Service.insert(${classInfo.className?uncap_first});
} }
/** /**
* 删除 * [刪除]
*/ * @author ${authorName}
* @date ${.now?string('yyyy/MM/dd')}
**/
@RequestMapping("/delete") @RequestMapping("/delete")
@ResponseBody
public ReturnT<String> delete(int id){ public ReturnT<String> delete(int id){
return ${classInfo.className?uncap_first}Service.delete(id); return ${classInfo.className?uncap_first}Service.delete(id);
} }
/** /**
* 更新 * [更新]
*/ * @author ${authorName}
* @date ${.now?string('yyyy/MM/dd')}
**/
@RequestMapping("/update") @RequestMapping("/update")
@ResponseBody
public ReturnT<String> update(${classInfo.className} ${classInfo.className?uncap_first}){ public ReturnT<String> 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});
} }
/** /**
* Load查询 * [查詢] 根據主鍵 id 查詢
*/ * @author ${authorName}
* @date ${.now?string('yyyy/MM/dd')}
**/
@RequestMapping("/load") @RequestMapping("/load")
@ResponseBody
public ReturnT<String> load(int id){ public ReturnT<String> load(int id){
return ${classInfo.className?uncap_first}Service.load(id); return ${classInfo.className?uncap_first}Service.load(id);
} }
/** /**
* 分页查询 * [查詢] 分頁查詢
*/ * @author ${authorName}
* @date ${.now?string('yyyy/MM/dd')}
**/
@RequestMapping("/pageList") @RequestMapping("/pageList")
@ResponseBody
public Map<String, Object> pageList(@RequestParam(required = false, defaultValue = "0") int offset, public Map<String, Object> pageList(@RequestParam(required = false, defaultValue = "0") int offset,
@RequestParam(required = false, defaultValue = "10") int pagesize) { @RequestParam(required = false, defaultValue = "10") int pagesize) {
return ${classInfo.className?uncap_first}Service.pageList(offset, pagesize); return ${classInfo.className?uncap_first}Service.pageList(offset, pagesize);

View File

@@ -1,45 +0,0 @@
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* ${classInfo.classComment}
* @author ${authorName} ${.now?string('yyyy-MM-dd')}
*/
@Component
public interface ${classInfo.className}Dao {
/**
* 新增
*/
public int insert(@Param("${classInfo.className?uncap_first}") ${classInfo.className} ${classInfo.className?uncap_first});
/**
* 删除
*/
public int delete(@Param("id") int id);
/**
* 更新
*/
public int update(@Param("${classInfo.className?uncap_first}") ${classInfo.className} ${classInfo.className?uncap_first});
/**
* Load查询
*/
public ${classInfo.className} load(@Param("id") int id);
/**
* 分页查询Data
*/
public List<${classInfo.className}> pageList(@Param("offset") int offset,
@Param("pagesize") int pagesize);
/**
* 分页查询Count
*/
public int pageListCount(@Param("offset") int offset,
@Param("pagesize") int pagesize);
}

View File

@@ -0,0 +1,57 @@
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* ${classInfo.classComment}
* @author ${authorName}
* @date ${.now?string('yyyy/MM/dd')}
*/
@Mapper
@Repository
public interface ${classInfo.className}Mapper {
/**
* [新增]
* @author ${authorName}
* @date ${.now?string('yyyy/MM/dd')}
**/
int insert(${classInfo.className} ${classInfo.className?uncap_first});
/**
* [刪除]
* @author ${authorName}
* @date ${.now?string('yyyy/MM/dd')}
**/
int delete(int id);
/**
* [更新]
* @author ${authorName}
* @date ${.now?string('yyyy/MM/dd')}
**/
int update(${classInfo.className} ${classInfo.className?uncap_first});
/**
* [查詢] 根據主鍵 id 查詢
* @author ${authorName}
* @date ${.now?string('yyyy/MM/dd')}
**/
${classInfo.className} load(int id);
/**
* [查詢] 分頁查詢
* @author ${authorName}
* @date ${.now?string('yyyy/MM/dd')}
**/
List<${classInfo.className}> pageList(int offset,int pagesize);
/**
* [查詢] 分頁查詢 count
* @author ${authorName}
* @date ${.now?string('yyyy/MM/dd')}
**/
int pageListCount(int offset,int pagesize);
}

View File

@@ -3,7 +3,7 @@
"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}Dao">
<resultMap id="${classInfo.className}" type="${packageName}.entity.${classInfo.className}" > <resultMap id="BaseResultMap" type="${packageName}.entity.${classInfo.className}Entity" >
<#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}" />
@@ -14,67 +14,74 @@
<sql id="Base_Column_List"> <sql id="Base_Column_List">
<#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 >
`${fieldItem.columnName}`<#if fieldItem_has_next>,</#if> ${fieldItem.columnName}<#if fieldItem_has_next>,</#if>
</#list> </#list>
</#if> </#if>
</sql> </sql>
<insert id="insert" parameterType="java.util.Map" > <insert id="insert" useGeneratedKeys="true" keyColumn="id" parameterType="${packageName}.entity.${classInfo.className}Entity">
INSERT INTO ${classInfo.tableName} ( INSERT INTO ${classInfo.tableName}
<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" >
`${fieldItem.columnName}`<#if fieldItem_has_next>,</#if> ${r"<if test ='null != "}${fieldItem.fieldName}${r"'>"}
${fieldItem.columnName}<#if fieldItem_has_next>,</#if>
${r"</if>"}
</#if> </#if>
</#list> </#list>
</#if> </#if>
) </trim>
VALUES( <trim prefix="values (" 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 fieldItem.columnName="addtime" || fieldItem.columnName="updatetime" > <#--<#if fieldItem.columnName="addtime" || fieldItem.columnName="updatetime" >
${r"<if test ='null != "}${fieldItem.fieldName}${r"'>"}
NOW()<#if fieldItem_has_next>,</#if> NOW()<#if fieldItem_has_next>,</#if>
<#else> ${r"</if>"}
${r"#{"}${classInfo.className?uncap_first}.${fieldItem.fieldName}${r"}"}<#if fieldItem_has_next>,</#if> <#else>-->
</#if> ${r"<if test ='null != "}${fieldItem.fieldName}${r"'>"}
${r"#{"}${fieldItem.fieldName}${r"}"}<#if fieldItem_has_next>,</#if>
${r"</if>"}
<#--</#if>-->
</#if> </#if>
</#list> </#list>
</#if> </#if>
) </trim>
</insert> </insert>
<delete id="delete" parameterType="java.util.Map" > <delete id="delete" >
DELETE FROM ${classInfo.tableName} DELETE FROM ${classInfo.tableName}
WHERE `id` = ${r"#{id}"} WHERE id = ${r"#{id}"}
</delete> </delete>
<update id="update" parameterType="java.util.Map" > <update id="update" parameterType="${packageName}.entity.${classInfo.className}Entity">
UPDATE ${classInfo.tableName} UPDATE ${classInfo.tableName}
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" >
${fieldItem.columnName} = ${r"#{"}${classInfo.className?uncap_first}.${fieldItem.fieldName}${r"}"}, ${r"<if test ='null != "}${fieldItem.fieldName}${r"'>"}${fieldItem.columnName} = ${r"#{"}${fieldItem.fieldName}${r"}"}<#if fieldItem_has_next>,</#if>${r"</if>"}
</#if> </#if>
</#list> </#list>
UpdateTime = NOW() </set>
WHERE `id` = ${r"#{"}${classInfo.className?uncap_first}.id${r"}"} WHERE id = ${r"#{"}id${r"}"}
</update> </update>
<select id="load" parameterType="java.util.Map" resultMap="${classInfo.className}"> <select id="load" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List" /> SELECT <include refid="Base_Column_List" />
FROM ${classInfo.tableName} FROM ${classInfo.tableName}
WHERE `id` = ${r"#{id}"} WHERE id = ${r"#{id}"}
</select> </select>
<select id="pageList" parameterType="java.util.Map" resultMap="${classInfo.className}"> <select id="pageList" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List" /> SELECT <include refid="Base_Column_List" />
FROM ${classInfo.tableName} FROM ${classInfo.tableName}
LIMIT ${r"#{offset}"}, ${r"#{pagesize}"} LIMIT ${r"#{offset}"}, ${r"#{pageSize}"}
</select> </select>
<select id="pageListCount" parameterType="java.util.Map" resultType="int"> <select id="pageListCount" resultType="java.lang.Integer">
SELECT count(1) SELECT count(1)
FROM ${classInfo.tableName} FROM ${classInfo.tableName}
</select> </select>

View File

@@ -2,7 +2,8 @@ import java.util.Map;
/** /**
* ${classInfo.classComment} * ${classInfo.classComment}
* @author ${authorName} ${.now?string('yyyy-MM-dd')} * @author ${authorName}
* @date ${.now?string('yyyy/MM/dd')}
*/ */
public interface ${classInfo.className}Service { public interface ${classInfo.className}Service {
@@ -22,7 +23,7 @@ public interface ${classInfo.className}Service {
public ReturnT<String> update(${classInfo.className} ${classInfo.className?uncap_first}); public ReturnT<String> update(${classInfo.className} ${classInfo.className?uncap_first});
/** /**
* Load查询 * 根據主鍵 id 查詢
*/ */
public ${classInfo.className} load(int id); public ${classInfo.className} load(int id);

View File

@@ -8,17 +8,16 @@ import java.util.Map;
/** /**
* ${classInfo.classComment} * ${classInfo.classComment}
* @author ${authorName} ${.now?string('yyyy-MM-dd')} * @author ${authorName}
* @date ${.now?string('yyyy/MM/dd')}
*/ */
@Service @Service
public class ${classInfo.className}ServiceImpl implements ${classInfo.className}Service { public class ${classInfo.className}ServiceImpl implements ${classInfo.className}Service {
@Resource @Resource
private ${classInfo.className}Dao ${classInfo.className?uncap_first}Dao; private ${classInfo.className}Mapper ${classInfo.className?uncap_first}Mapper;
/**
* 新增
*/
@Override @Override
public ReturnT<String> insert(${classInfo.className} ${classInfo.className?uncap_first}) { public ReturnT<String> insert(${classInfo.className} ${classInfo.className?uncap_first}) {
@@ -27,49 +26,41 @@ public class ${classInfo.className}ServiceImpl implements ${classInfo.className}
return new ReturnT<String>(ReturnT.FAIL_CODE, "必要参数缺失"); return new ReturnT<String>(ReturnT.FAIL_CODE, "必要参数缺失");
} }
${classInfo.className?uncap_first}Dao.insert(${classInfo.className?uncap_first}); ${classInfo.className?uncap_first}Mapper.insert(${classInfo.className?uncap_first});
return ReturnT.SUCCESS; return ReturnT.SUCCESS;
} }
/**
* 删除
*/
@Override @Override
public ReturnT<String> delete(int id) { public ReturnT<String> delete(int id) {
int ret = ${classInfo.className?uncap_first}Dao.delete(id); int ret = ${classInfo.className?uncap_first}Mapper.delete(id);
return ret>0?ReturnT.SUCCESS:ReturnT.FAIL; return ret>0?ReturnT.SUCCESS:ReturnT.FAIL;
} }
/**
* 更新
*/
@Override @Override
public ReturnT<String> update(${classInfo.className} ${classInfo.className?uncap_first}) { public ReturnT<String> update(${classInfo.className} ${classInfo.className?uncap_first}) {
int ret = ${classInfo.className?uncap_first}Dao.update(${classInfo.className?uncap_first}); int ret = ${classInfo.className?uncap_first}Mapper.update(${classInfo.className?uncap_first});
return ret>0?ReturnT.SUCCESS:ReturnT.FAIL; return ret>0?ReturnT.SUCCESS:ReturnT.FAIL;
} }
/**
* Load查询
*/
@Override @Override
public ${classInfo.className} load(int id) { public ${classInfo.className} load(int id) {
return ${classInfo.className?uncap_first}Dao.load(id); return ${classInfo.className?uncap_first}Mapper.load(id);
} }
/**
* 分页查询
*/
@Override @Override
public Map<String,Object> pageList(int offset, int pagesize) { public Map<String,Object> pageList(int offset, int pagesize) {
List<${classInfo.className}> pageList = ${classInfo.className?uncap_first}Dao.pageList(offset, pagesize); List<${classInfo.className}> pageList = ${classInfo.className?uncap_first}Mapper.pageList(offset, pagesize);
int totalCount = ${classInfo.className?uncap_first}Dao.pageListCount(offset, pagesize); int totalCount = ${classInfo.className?uncap_first}Mapper.pageListCount(offset, pagesize);
// result // result
Map<String, Object> result = new HashMap<String, Object>(); Map<String, Object> result = new HashMap<String, Object>();
maps.put("pageList", pageList); result.put("pageList", pageList);
maps.put("totalCount", totalCount); result.put("totalCount", totalCount);
return result; return result;
} }

View File

@@ -52,7 +52,8 @@
"tableSql": tableSql, "tableSql": tableSql,
"packageName":$("#packageName").val(), "packageName":$("#packageName").val(),
"returnUtil":$("#returnUtil").val(), "returnUtil":$("#returnUtil").val(),
"authorName":$("#authorName").val() "authorName":$("#authorName").val(),
"isUnderLineToCamelCase":$("#isUnderLineToCamelCase").val()
}, },
dataType: "json", dataType: "json",
success: function (data) { success: function (data) {
@@ -85,7 +86,20 @@
genCodeArea.setSize('auto', 'auto'); genCodeArea.setSize('auto', 'auto');
} }
}); });
function donate(){
layer.open({
type: 1,
area : ['712px' , '480px'],
shadeClose: true, //点击遮罩关闭
content: '<img src="http://upyun.bejson.com/img/zhengkai.png"></img>'
});
}
$('#donate1').on('click', function(){
donate();
});
$('#donate2').on('click', function(){
donate();
});
}); });
</script> </script>
</head> </head>
@@ -107,7 +121,7 @@
<div class="container"> <div class="container">
<h2>Spring Boot Code Generator!</h2> <h2>Spring Boot Code Generator!</h2>
<p class="lead"> <p class="lead">
基于<code>SpringBoot2</code>+<code>Freemarker</code>的代码生成器,用<code>DDL SQL</code>语句生成<code>JPA</code>/<code>JdbcTemplate</code>/<code>Mybatis</code>/<code>BeetlSQL</code>相关代码,支持<code>mysql</code>/<code>oracle</code>/<code>pgsql</code>三大数据库。以<code>释放双手</code>为目的各大模板也在陆续补充和优化。欢迎大家多多提交模板和交流想法如果发现有SQL语句不能识别请<a href="https://github.com/moshowgame/SpringBootCodeGenerator/issues">留言</a>给我分析,谢谢! 基于<code>SpringBoot2</code>+<code>Freemarker</code>的代码生成器,用<code>DDL SQL</code>语句生成<code>JPA</code>/<code>JdbcTemplate</code>/<code>Mybatis</code>/<code>MybatisPlus</code>/<code>BeetlSQL</code>相关代码,支持<code>mysql</code>/<code>oracle</code>/<code>pgsql</code>三大数据库。以<code>释放双手</code>为目的各大模板也在陆续补充和优化。欢迎大家多多提交模板和交流想法如果发现有SQL语句不能识别请<a href="https://github.com/moshowgame/SpringBootCodeGenerator/issues">留言</a>给我分析,同时欢迎大家进行<a href="https://github.com/moshowgame/SpringBootCodeGenerator/pulls">PullRequest</a>和<a href="#" id="donate1">赞赏</a>谢谢!
</p> </p>
<div class="input-group mb-3"> <div class="input-group mb-3">
<div class="input-group-prepend"> <div class="input-group-prepend">
@@ -124,6 +138,14 @@
<span class="input-group-text">返回封装</span> <span class="input-group-text">返回封装</span>
</div> </div>
<input type="text" class="form-control" id="returnUtil" name="returnUtil" placeholder="ApiReturnObject"> <input type="text" class="form-control" id="returnUtil" name="returnUtil" placeholder="ApiReturnObject">
<div class="input-group-prepend">
<span class="input-group-text">是否下划线转换为驼峰</span>
</div>
<select type="text" class="form-control" id="isUnderLineToCamelCase"
name="isUnderLineToCamelCase">
<option value="true">转换</option>
<option value="false">不转换</option>
</select>
</div> </div>
<textarea id="ddlSqlArea" placeholder="请输入表结构信息..." class="form-control btn-lg" style="height: 250px;"> <textarea id="ddlSqlArea" placeholder="请输入表结构信息..." class="form-control btn-lg" style="height: 250px;">
CREATE TABLE `userinfo` ( CREATE TABLE `userinfo` (
@@ -156,7 +178,7 @@ CREATE TABLE `userinfo` (
</div> </div>
<div class="btn-group" role="group" aria-label="First group"> <div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default generator" id="mybatis">mybatis</button> <button type="button" class="btn btn-default generator" id="mybatis">mybatis</button>
<button type="button" class="btn btn-default generator" id="dao">dao</button> <button type="button" class="btn btn-default generator" id="mapper">mapper</button>
<button type="button" class="btn btn-default generator" id="service">service</button> <button type="button" class="btn btn-default generator" id="service">service</button>
<button type="button" class="btn btn-default generator" id="service_impl">service_impl</button> <button type="button" class="btn btn-default generator" id="service_impl">service_impl</button>
<button type="button" class="btn btn-default generator" id="controller">controller</button> <button type="button" class="btn btn-default generator" id="controller">controller</button>
@@ -253,7 +275,7 @@ CREATE TABLE `userinfo` (
<footer class="bd-footer text-muted" role="contentinfo"> <footer class="bd-footer text-muted" role="contentinfo">
<div class="container"> <div class="container">
<strong>Copyright &copy; ${.now?string('yyyy')}-2022 &nbsp; <strong>Copyright &copy; ${.now?string('yyyy')}-2022 &nbsp;
<p><a href="https://github.com/moshowgame/SpringBootCodeGenerator">SpringBootCodeGenerator</a>由<a href="https://blog.csdn.net/moshowgame" target="_blank">@Moshow/大狼狗/郑锴</a> 开发维护. 由 <a href="https://www.bejson.com">BeJson三叔 </a> 提供在线版本。</p> <p><a href="https://github.com/moshowgame/SpringBootCodeGenerator">SpringBootCodeGenerator</a>由<a href="https://blog.csdn.net/moshowgame" target="_blank">@Moshow/大狼狗/郑锴</a> 开发维护 由 <a href="https://www.bejson.com">BeJson三叔 </a> 提供在线版本。点击<a href="#" id="donate2">赞赏</a>。</p>
</div> </div>
</footer> </footer>
</footer> </footer>

58
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.0.4.RELEASE</version> <version>2.1.7.RELEASE</version>
</parent> </parent>
<modules> <modules>
@@ -33,10 +33,11 @@
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency> <dependency>
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId> <artifactId>fastjson</artifactId>
<version>1.2.44</version> <version>1.2.60</version>
</dependency> </dependency>
<!-- 支持 @ConfigurationProperties 注解 --> <!-- 支持 @ConfigurationProperties 注解 -->
@@ -48,69 +49,34 @@
<!-- spring-boot-devtools依赖包 --> <!-- spring-boot-devtools依赖包 -->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools --> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
<dependency> <!--<dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId> <artifactId>spring-boot-devtools</artifactId>
<version>2.0.4.RELEASE</version> <version>2.0.4.RELEASE</version>
</dependency> </dependency>-->
<!-- spring热部署 --> <!-- spring热部署 -->
<dependency> <!--<dependency>
<groupId>org.springframework</groupId> <groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId> <artifactId>springloaded</artifactId>
<version>1.2.8.RELEASE</version> <version>1.2.8.RELEASE</version>
</dependency> </dependency>-->
<!-- Hutool超级工具类 http://hutool.mydoc.io/ --> <!-- Hutool超级工具类 http://hutool.mydoc.io/ -->
<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
<dependency> <dependency>
<groupId>cn.hutool</groupId> <groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId> <artifactId>hutool-all</artifactId>
<version>4.1.12</version> <version>4.6.1</version>
</dependency> </dependency>
<!-- lombok --> <!-- lombok -->
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
<version>1.18.2</version> <version>1.18.8</version>
</dependency> </dependency>
<!-- mysql -->
<!--<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>-->
<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
<!-- <dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency> -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency> -->
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency> <dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
@@ -125,7 +91,7 @@
</dependency> </dependency>
<!-- java.lang.ClassNotFoundException: javax.xml.bind.JAXBException/javax.xml.bind.annotation.XmlType问题解决 --> <!-- java.lang.ClassNotFoundException: javax.xml.bind.JAXBException/javax.xml.bind.annotation.XmlType问题解决 -->
<dependency> <!--<dependency>
<groupId>javax.xml.bind</groupId> <groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId> <artifactId>jaxb-api</artifactId>
<version>2.3.0</version> <version>2.3.0</version>
@@ -144,7 +110,7 @@
<groupId>javax.activation</groupId> <groupId>javax.activation</groupId>
<artifactId>activation</artifactId> <artifactId>activation</artifactId>
<version>1.1.1</version> <version>1.1.1</version>
</dependency> </dependency>-->
</dependencies> </dependencies>