Optimization for UI of html,New MybatisPlus Mod,Fix AuthorName and PackageName issue

This commit is contained in:
moshowgame@126.com 2018-12-12 11:27:48 +08:00
parent 09836c1da5
commit 3450d8df53
13 changed files with 222 additions and 76 deletions

View File

@ -16,6 +16,7 @@ SpringBootCodeGenerator
<tr><td>CSDN博客</td> <td>http://blog.csdn.net/moshowgame</td></tr>
<tr><td></td> <td></td></tr>
<tr><td>更新日期</td> <td>更新内容</td></tr>
<tr><td>20181212<td>首页UI优化新增MybatisPlus模块感谢@三叔同事的建议),修复作者名和包名获取失败问题(感谢@Yanch1994的反馈)。</td></tr>
<tr><td>20181122<td>优化正则表达式点号的处理优化处理字段类型对number类型增加intlongBigDecimal的区分判断感谢@lshz0088的指导)。</td></tr>
<tr><td>20181108<td>修复非字段描述"KEY FK_xxxx (xxxx)"导致生成KEY字段情况感谢@tornadoorz反馈)。</td></tr>
<tr><td>20181018<td>支持double(x,x)的类型以及comment里面包含一些特殊字符的处理感谢@tanwubo的反馈)。</td></tr>

View File

@ -36,6 +36,10 @@
<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" />
@ -48,9 +52,8 @@
<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: 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: 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" scope="TEST" name="Maven: junit:junit:4.12" level="project" />

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -13,7 +13,6 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@ -60,27 +59,32 @@ public class IndexController {
// result
Map<String, String> result = new HashMap<String, String>();
//UI
result.put("swaggerui", freemarkerTool.processString("xxl-code-generator/swagger-ui.ftl", params));
result.put("elementui", freemarkerTool.processString("xxl-code-generator/element-ui.ftl", params));
result.put("bootstrap", freemarkerTool.processString("xxl-code-generator/bootstrap.ftl", params));
//mybatis old
result.put("controller", freemarkerTool.processString("xxl-code-generator/controller.ftl", params));
result.put("service", freemarkerTool.processString("xxl-code-generator/service.ftl", params));
result.put("service_impl", freemarkerTool.processString("xxl-code-generator/service_impl.ftl", params));
result.put("dao", freemarkerTool.processString("xxl-code-generator/dao.ftl", params));
result.put("mybatis", freemarkerTool.processString("xxl-code-generator/mybatis.ftl", params));
result.put("model", freemarkerTool.processString("xxl-code-generator/model.ftl", params));
//jpa
result.put("entity", freemarkerTool.processString("xxl-code-generator/entity.ftl", params));
result.put("swaggerui", freemarkerTool.processString("xxl-code-generator/swagger-ui.ftl", params));
result.put("repository", freemarkerTool.processString("xxl-code-generator/repository.ftl", params));
result.put("jpacontroller", freemarkerTool.processString("xxl-code-generator/jpacontroller.ftl", params));
//jdbc template
result.put("jtdao", freemarkerTool.processString("xxl-code-generator/jtdao.ftl", params));
result.put("jtdaoimpl", freemarkerTool.processString("xxl-code-generator/jtdaoimpl.ftl", params));
//beetsql
result.put("beetlmd", freemarkerTool.processString("xxl-code-generator/beetlmd.ftl", params));
result.put("beetlentity", freemarkerTool.processString("xxl-code-generator/beetlentity.ftl", params));
result.put("beetlcontroller", freemarkerTool.processString("xxl-code-generator/beetlcontroller.ftl", params));
result.put("elementui", freemarkerTool.processString("xxl-code-generator/element-ui.ftl", params));
result.put("bootstrap", freemarkerTool.processString("xxl-code-generator/bootstrap.ftl", params));
//mybatis plus
result.put("pluscontroller", freemarkerTool.processString("xxl-code-generator/pluscontroller.ftl", params));
result.put("plusmapper", freemarkerTool.processString("xxl-code-generator/plusmapper.ftl", params));
// 计算,生成代码行数
int lineNum = 0;

View File

@ -7,6 +7,7 @@ tomcat:
uri-encoding: UTF-8
max-threads: 10
background-processor-delay: 30
basedir: ${user.home}/tomcat/
spring:
banner:
charset: UTF-8

View File

@ -33,12 +33,13 @@ $(function () {
$('#btnGenCode').click(function () {
var tableSql = ddlSqlArea.getValue();
$.ajax({
type: 'POST',
url: base_url + "/genCode",
data: {
"tableSql": tableSql
"tableSql": tableSql,
"packageName":$("#packageName").val(),
"authorName":$("#authorName").val()
},
dataType: "json",
success: function (data) {
@ -54,9 +55,6 @@ $(function () {
}
});
codeData = data.data;
genCodeArea.setValue(codeData.swaggerui);
genCodeArea.setSize('auto', 'auto');
} else {
layer.open({
icon: '2',
@ -171,5 +169,17 @@ $(function () {
genCodeArea.setSize('auto', 'auto');
}
});
$('#pluscontroller').click(function () {
if(!$.isEmptyObject(codeData)) {
genCodeArea.setValue(codeData.pluscontroller);
genCodeArea.setSize('auto', 'auto');
}
});
$('#plusmapper').click(function () {
if(!$.isEmptyObject(codeData)) {
genCodeArea.setValue(codeData.plusmapper);
genCodeArea.setSize('auto', 'auto');
}
});
});

View File

@ -14,7 +14,7 @@
<!-- Ionicons -->
<link href="//cdn.staticfile.org/ionicons/4.1.2/css/ionicons.min.css" rel="stylesheet">
<link href="//cdn.staticfile.org/codemirror/5.38.0/codemirror.min.css" rel="stylesheet">
<link href="//cdn.staticfile.org/codemirror/5.42.0/codemirror.min.css" rel="stylesheet">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
@ -37,11 +37,11 @@
<script src="//cdn.staticfile.org/fastclick/1.0.6/fastclick.min.js"></script>
<script src="//cdn.staticfile.org/jQuery-slimScroll/1.3.8/jquery.slimscroll.min.js"></script>
<script src="//cdn.staticfile.org/layer/2.3/layer.js"></script>
<script src="//cdn.staticfile.org/codemirror/5.38.0/codemirror.min.js"></script>
<script src="//cdn.staticfile.org/codemirror/5.38.0/addon/display/placeholder.min.js"></script>
<script src="//cdn.staticfile.org/codemirror/5.38.0/mode/clike/clike.min.js"></script>
<script src="//cdn.staticfile.org/codemirror/5.38.0/mode/sql/sql.min.js"></script>
<script src="//cdn.staticfile.org/codemirror/5.38.0/mode/xml/xml.min.js"></script>
<script src="//cdn.staticfile.org/codemirror/5.42.0/codemirror.min.js"></script>
<script src="//cdn.staticfile.org/codemirror/5.42.0/addon/display/placeholder.min.js"></script>
<script src="//cdn.staticfile.org/codemirror/5.42.0/mode/clike/clike.min.js"></script>
<script src="//cdn.staticfile.org/codemirror/5.42.0/mode/sql/sql.min.js"></script>
<script src="//cdn.staticfile.org/codemirror/5.42.0/mode/xml/xml.min.js"></script>
</#macro>

View File

@ -16,7 +16,7 @@
<body style="background-color: #e9ecef">
<div class="container">
<nav class="navbar navbar-dark bg-primary">
<nav class="navbar navbar-dark bg-primary btn-lg">
<a class="navbar-brand" href="http://www.bejson.com">BeJSON在线工具站</a>
<ul class="nav navbar-nav">
<li class="nav-item active">
@ -29,20 +29,21 @@
<!-- Main jumbotron for a primary marketing message or call to action -->
<div class="jumbotron">
<div class="container">
<h1>Spring Boot Code Generator!</h1>
<h2>Spring Boot Code Generator!</h2>
<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>给我分析,谢谢!
</p>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text">作者名称</span>
</div>
<input type="text" class="form-control" id="authorName" placeholder="大狼狗">
<input type="text" class="form-control" id="authorName" name="authorName" placeholder="大狼狗">
<div class="input-group-prepend">
<span class="input-group-text">包名路径</span>
</div>
<input type="text" class="form-control" id="packageName" placeholder="com.softdev.system">
<input type="text" class="form-control" id="packageName" name="packageName" placeholder="com.softdev.system">
</div>
<textarea id="ddlSqlArea" placeholder="请输入表结构信息..." class="form-control" style="height: 250px;">
<textarea id="ddlSqlArea" placeholder="请输入表结构信息..." class="form-control btn-lg" style="height: 250px;">
CREATE TABLE `userinfo` (
`user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` varchar(255) NOT NULL COMMENT '用户名',
@ -50,73 +51,104 @@ CREATE TABLE `userinfo` (
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息'
</textarea><br>
<p><button class="btn btn-primary btn-lg" id="btnGenCode" role="button">开始生成 »</button></p>
<p><button class="btn btn-primary btn-lg disabled" id="btnGenCode" role="button">开始生成 »</button></p>
<hr>
<!-- Example row of columns -->
<div class="btn-toolbar mb-3" role="toolbar" aria-label="Toolbar with button groups">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text" id="btnGroupAddon">jdbcTemplate</div>
<div class="row" style="margin-top: 10px;">
<div class="btn-toolbar col-md-5" role="toolbar" aria-label="Toolbar with button groups">
<div class="input-group">
<div class="input-group-prepend">
<div class="btn btn-secondary disabled" id="btnGroupAddon">通用实体</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default" id="model">entity(set/get)</button>
<button type="button" class="btn btn-default" id="beetlentity">entity(lombok)</button>
</div>
</div>
<div class="btn-group mr-2" role="group" aria-label="First group">
<button type="button" class="btn btn-default" id="jtdaoimpl">daoimpl</button>
<button type="button" class="btn btn-default" id="jtdao">dao</button>
<div class="btn-toolbar col-md-7" role="toolbar" aria-label="Toolbar with button groups">
<div class="input-group">
<div class="input-group-prepend">
<div class="btn btn-secondary disabled" id="btnGroupAddon">Mybatis</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default" id="mybatis">mybatis</button>
<button type="button" class="btn btn-default" id="dao">dao</button>
<button type="button" class="btn btn-default" id="service">service</button>
<button type="button" class="btn btn-default" id="service_impl">service_impl</button>
<button type="button" class="btn btn-default" id="controller">controller</button>
</div>
</div>
</div>
<div class="btn-toolbar mb-3" role="toolbar" aria-label="Toolbar with button groups">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text" id="btnGroupAddon">BeetlSQL</div>
<!-- Example row of columns -->
<div class="row" style="margin-top: 10px;">
<div class="btn-toolbar col-md-5" role="toolbar" aria-label="Toolbar with button groups">
<div class="input-group">
<div class="input-group-prepend">
<div class="btn btn-secondary disabled" id="btnGroupAddon">MybatisPlus</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default" id="plusmapper">mapper</button>
<button type="button" class="btn btn-default" id="pluscontroller">controller</button>
</div>
</div>
<div class="btn-group mr-2" role="group" aria-label="First group">
<button type="button" class="btn btn-default" id="beetlentity">entity(lombok)</button>
<button type="button" class="btn btn-default" id="beetlmd">beetlmd</button>
<button type="button" class="btn btn-default" id="beetlcontroller">beetlcontroller</button>
<div class="btn-toolbar col-md-5" role="toolbar" aria-label="Toolbar with button groups">
<div class="input-group">
<div class="input-group-prepend">
<div class="btn btn-secondary disabled" id="btnGroupAddon">UI</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default" id="swaggerui">swagger-ui</button>
<button type="button" class="btn btn-default" id="element-ui">element-ui</button>
<button type="button" class="btn btn-default" id="bootstrap">bootstrap-ui</button>
</div>
</div>
</div>
<div class="btn-toolbar mb-3" role="toolbar" aria-label="Toolbar with button groups">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text" id="btnGroupAddon">UI</div>
<div class="row" style="margin-top: 10px;">
<div class="btn-toolbar col-md-5" role="toolbar" aria-label="Toolbar with button groups">
<div class="input-group">
<div class="input-group-prepend">
<div class="btn btn-secondary disabled" id="btnGroupAddon">BeetlSQL</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default" id="beetlmd">beetlmd</button>
<button type="button" class="btn btn-default" id="beetlcontroller">beetlcontroller</button>
</div>
</div>
<div class="btn-group mr-2" role="group" aria-label="First group">
<button type="button" class="btn btn-default" id="swaggerui">swagger-ui</button>
<button type="button" class="btn btn-default" id="element-ui">element-ui</button>
<button type="button" class="btn btn-default" id="bootstrap">bootstrap</button>
<div class="btn-toolbar col-md-5" role="toolbar" aria-label="Toolbar with button groups">
<div class="input-group">
<div class="input-group-prepend">
<div class="btn btn-secondary disabled" id="btnGroupAddon">JPA</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default" id="entity">jpa-entity</button>
<button type="button" class="btn btn-default" id="repository">repository</button>
<button type="button" class="btn btn-default" id="jpacontroller">controller</button>
</div>
</div>
</div>
<div class="btn-toolbar mb-3" role="toolbar" aria-label="Toolbar with button groups">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text" id="btnGroupAddon">JPA</div>
<div class="row" style="margin-top: 10px;">
<div class="btn-toolbar col-md-5" role="toolbar" aria-label="Toolbar with button groups">
<div class="input-group">
<div class="input-group-prepend">
<div class="btn btn-secondary disabled" id="btnGroupAddon">JdbcTemplate</div>
</div>
</div>
</div>
<div class="btn-group mr-2" role="group" aria-label="First group">
<button type="button" class="btn btn-default" id="entity">entity</button>
<button type="button" class="btn btn-default" id="repository">repository</button>
<button type="button" class="btn btn-default" id="jpacontroller">controller</button>
</div>
</div>
<div class="btn-toolbar mb-3" role="toolbar" aria-label="Toolbar with button groups">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text" id="btnGroupAddon">Mybatis</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default" id="jtdaoimpl">daoimpl</button>
<button type="button" class="btn btn-default" id="jtdao">dao</button>
</div>
</div>
<div class="btn-group mr-2" role="group" aria-label="First group">
<button type="button" class="btn btn-default" id="model">model(set/get)</button>
<button type="button" class="btn btn-default" id="mybatis">mybatis</button>
<button type="button" class="btn btn-default" id="dao">dao</button>
<button type="button" class="btn btn-default" id="service">service</button>
<button type="button" class="btn btn-default" id="service_impl">service_impl</button>
<button type="button" class="btn btn-default" id="controller">controller</button>
</div>
</div>
<hr>
<textarea id="genCodeArea" class="form-control" ></textarea>
<textarea id="genCodeArea" class="form-control btn-lg" ></textarea>
</div>
</div>
@ -126,7 +158,7 @@ CREATE TABLE `userinfo` (
<footer>
<footer class="bd-footer text-muted" role="contentinfo">
<div class="container">
<strong>Copyright &copy; 2018-${.now?string('yyyy')} &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>
</div>
</footer>

View File

@ -1,3 +1,7 @@
package ${packageName}.controller;
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;

View File

@ -0,0 +1,75 @@
package ${packageName}.controller;
import ${packageName}.entity.${classInfo.className};
import ${packageName}.mapper.${classInfo.className}Mapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
import java.util.Map;
/**
* ${classInfo.classComment}
* @author ${authorName} ${.now?string('yyyy-MM-dd')}
*/
@RestController
@RequestMapping("/${classInfo.className?uncap_first}")
public class ${classInfo.className}Controller {
@Autowired
private ${classInfo.className}Mapper ${classInfo.className?uncap_first}Mapper;
/**
* 新增或编辑
*/
@PostMapping("/save")
public Object save(${classInfo.className} ${classInfo.className?uncap_first}){
return ${classInfo.className?uncap_first}Mapper.insert(${classInfo.className?uncap_first});
}
/**
* 删除
*/
@GetMapping("/delete")
public Object delete(int id){
${classInfo.className} ${classInfo.className?uncap_first} = ${classInfo.className?uncap_first}Mapper.selectOne(new QueryWrapper<${classInfo.className}>().eq("id",id))
if(${classInfo.className?uncap_first}!=null){
return ApiReturnUtil.success(${classInfo.className?uncap_first});
}else{
return ApiReturnUtil.error("没有找到该对象");
}
}
/**
* 查询
*/
@GetMapping("/find")
public Object find(int id){
${classInfo.className} ${classInfo.className?uncap_first} = ${classInfo.className?uncap_first}Mapper.selectOne(new QueryWrapper<${classInfo.className}>().eq("id",id))
if(${classInfo.className?uncap_first}!=null){
return ApiReturnUtil.success(${classInfo.className?uncap_first});
}else{
return ApiReturnUtil.error("没有找到该对象");
}
}
/**
* 分页查询
*/
@PostMapping("/list")
public Object list(${classInfo.className} ${classInfo.className?uncap_first},
@RequestParam(required = false, defaultValue = "0") int pageNumber,
@RequestParam(required = false, defaultValue = "10") int pageSize) {
//分页构造器
Page<${classInfo.className}> page = new Page<${classInfo.className}>(pageNumber,pageSize);
//条件构造器
QueryWrapper<${classInfo.className}> queryWrapperw = new QueryWrapper<${classInfo.className}>(${classInfo.className?uncap_first});
//执行分页
IPage<${classInfo.className}> pageList = certPersonMapper.selectPage(page, queryWrapperw);
//返回结果
return ApiReturnUtil.success(pageList);
}
}

View File

@ -0,0 +1,14 @@
package ${packageName}.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* ${classInfo.classComment}
* @author ${authorName} ${.now?string('yyyy-MM-dd')}
*/
@Repository
public interface ${classInfo.className}Mapper extends BaseMapper<${classInfo.className}> {
}

View File

@ -1,3 +1,6 @@
package ${packageName}.mapper;
import ${packageName}.entity.${classInfo.className};
<#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0>
<#list classInfo.fieldList as fieldItem >
<#if fieldItem.fieldClass == "Date">
@ -5,7 +8,6 @@
</#if>
</#list>
</#if>
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;