生成后自动trim掉前后空格输出。完善ReadMe文档。

This commit is contained in:
MOSHOW郑锴 2021-01-16 16:34:44 +08:00
parent 8675730465
commit f5359f871f
21 changed files with 89 additions and 1160 deletions

View File

@ -22,8 +22,8 @@
>generate to many popular templates by ddl-sql/insert-sql/simple json<br>
>可通过`建表SQL语句``INSERT语句`或者`简单JSON`生成`JPA/JdbcTemplate/Mybatis/MybatisPlus/BeetlSQL`相关模板代码.
>
>thanks for your using , the 600pv per day and the 700 stars totals inspired me<br>
> 感谢大家的使用和反馈,每天600PV和700的星星是前进和继续做下去的东西
>thanks for your using and feedback,I'm inspired by the 600PV every day and github more than 700 stars <br>
> 感谢大家的使用和反馈,每天六百的PV和获得超过七百多的星星是我前进和继续做下去的动力
>
>hope everyone can keep good balance on work and life , stay health and safety , be smooth on work as well<br>
> 愿大家可以维持生活和工作平衡,保持健康和安全,祝大家工作顺利!
@ -44,9 +44,10 @@
感谢`三叔`将他部署在[DEVTOOLS](https://java.devtools.cn/)上继续作为Golden Tool开放给大家使用。<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|
|----|----|
|:----|:----|
|BEJSON 在线地址|https://java.bejson.com/generator|
|DEVTOOLS 在线地址|https://java.devtools.cn|
|CSDN BLOG|https://zhengkai.blog.csdn.net|
@ -56,8 +57,9 @@
# Update Logs
|更新日期|更新内容|
|----|----|
|2021.01.16|全新3.0版本一、前端半vue半js化更多动态加载项。二、支持更多生成设置优化生成场景。三、js导入支持本地/CDN模式支持断网环境轻松使用。|
|:----|:----|
|2021.01.17|生成后自动trim掉前后空格输出。完善ReadMe文档。|
|2021.01.16|全新3.0版本:<br>一、前端半vue半js化更多动态加载项。<br>二、支持更多生成设置,优化生成场景。<br>三、js导入支持本地/CDN模式支持断网环境轻松使用。|
|2020.10.22|1.tinyint多加一个Short类型转换感谢@wttHero的建议|
|2020.10.20|1.修复mapper2 insert代码问题感谢@mXiaoWan的PR<br>2.优化对fulltext/index关键字的处理感谢@WEGFan的反馈)。<br>3.新增日期类型的转换选择(感谢@qingkediguo的建议)。<br>4.新增是否包装类型的转换选择。|
|2020.06.28|优化Util下的BeanUtil支持更多map.put的操作。整合CRUD模板到SQL(CRUD)模板。|
@ -103,8 +105,8 @@
|2018.08.31|初始化项目.新增JPA系列Entity+Repository模板.|
# ClassInfo/TableInfo
|字段名|说明|
|-|-|
|名|说明|
|:----|:----|
|packageName|自定义的包名|
|authorName|自定义的作者名|
|tableName|sql中的表名|
@ -113,6 +115,26 @@
|fieldName|字段名|
|fieldComment|字段备注|
# Options
|名称|说明|默认值|
|:----|:----|:----|
|作者 |authorName|zhengkai.blog.csdn.net|
|包名 |packageName|cn.devtools|
|返回(成功)|returnUtilSuccess|Return.SUCCESS|
|返回(失败)|returnUtilFailure|Return.ERROR|
|忽略前缀|ignorePrefix |sys_|
|输入类型 |dataType|DDL SQL|
|TinyInt转换 |tinyintTransType|int|
|时间类型 |timeTransType|Date|
|命名类型 |nameCaseType|CamelCase/驼峰|
|是否包装类型 |isPackageType|true|
|是否swaggerUI|isSwagger|false|
|是否字段注释|isComment|true|
|是否自动引包|isAutoImport||
|是否带包路径|isWithPackage||
|是否Lombok|isLombok|true|
# How to add a new template
1. `resources/templates/code-generator`中找到对应类型
2. COPY并编写freemarker模板文件`.ftl`

View File

@ -7,6 +7,9 @@ import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
/**
* @author zhengkai.blog.csdn.net
*/
@ControllerAdvice
public class GlobalDefaultExceptionHandler {
@ -14,7 +17,7 @@ public class GlobalDefaultExceptionHandler {
@ResponseBody
public ReturnT defaultExceptionHandler(HttpServletRequest req, Exception e) {
e.printStackTrace();
return ReturnT.error(e.getMessage());
return ReturnT.error("代码生成失败:"+e.getMessage());
}
}

View File

@ -13,7 +13,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
/**

View File

@ -7,17 +7,17 @@ $(function(){
//init input code area
$.inputArea = CodeMirror.fromTextArea(document.getElementById("inputArea"), {
lineNumbers: true,
lineWrapping: false,
readOnly: false,
foldGutter: true,
mode: "text/x-sql"
mode: "text/x-sql", // SQL
theme: "idea", // IDEA主题
lineNumbers: true, //显示行号
smartIndent: true, // 自动缩进
autoCloseBrackets: true// 自动补全括号
});
$.inputArea.setSize('auto','auto');
// init output code area
$.outputArea = CodeMirror.fromTextArea(document.getElementById("outputArea"), {
mode: "text/x-java", //Java语言
theme: "idea", // IDEA主题
lineNumbers: true, //显示行号
smartIndent: true, // 自动缩进
autoCloseBrackets: true// 自动补全括号
@ -70,7 +70,7 @@ const vm = new Vue({
const targetModel = event.target.innerText.trim();
console.log(targetModel);
vm.outputStr=vm.outputJson[targetModel];
$.outputArea.setValue(vm.outputStr);
$.outputArea.setValue(vm.outputStr.trim());
//console.log(vm.outputStr);
$.outputArea.setSize('auto', 'auto');
},
@ -86,11 +86,30 @@ const vm = new Vue({
}else{
alert("浏览器不支持sessionStorage");
}
vm.outputStr=vm.outputJson["plusentity"];
vm.outputStr=vm.outputJson["plusentity"].trim();
$.outputArea.setValue(vm.outputStr);
//console.log(vm.outputStr);
$.outputArea.setSize('auto', 'auto');
},
setHistoricalData : function (tableName){
//add new table only
if(vm.historicalData.indexOf(tableName)<0){
vm.historicalData.unshift(tableName);
}
//remove last record , if more than N
if(vm.historicalData.length>9){
vm.historicalData.splice(9,1);
}
//get and set to session data
const valueSession = sessionStorage.getItem(tableName);
//remove if exists
if(valueSession!==undefined && valueSession!=null){
sessionStorage.removeItem(tableName);
}
//set data to session
sessionStorage.setItem(tableName,JSON.stringify(vm.outputJson));
//console.log(vm.historicalData);
},
//request with formData to generate the code 根据参数生成代码
generate : function(){
//get value from codemirror
@ -103,34 +122,18 @@ const vm = new Vue({
//console.log(res.outputJson);
vm.outputJson=res.outputJson;
// console.log(vm.outputJson["bootstrap-ui"]);
vm.outputStr=vm.outputJson["plusentity"];
vm.outputStr=vm.outputJson["plusentity"].trim();
//console.log(vm.outputJson["bootstrap-ui"]);
//console.log(vm.outputStr);
$.outputArea.setValue(vm.outputStr);
$.outputArea.setSize('auto', 'auto');
//add to historicalData
const tableName = res.outputJson.tableName;
//add new table only
if(vm.historicalData.indexOf(tableName)<0){
vm.historicalData.unshift(tableName);
}
//remove last record , if more than N
if(vm.historicalData.length>9){
vm.historicalData.splice(9,1);
}
//get and set to session data
const valueSession = sessionStorage.getItem(tableName);
//remove if exists
if(valueSession!==undefined && valueSession!=null){
sessionStorage.removeItem(tableName);
}
//set data to session
sessionStorage.setItem(tableName,JSON.stringify(vm.outputJson));
//console.log(vm.historicalData);
vm.setHistoricalData(res.outputJson.tableName);
alert("生成成功");
});
},
copy : function (){
navigator.clipboard.writeText(vm.outputStr).then(r => {alert("已复制")});
navigator.clipboard.writeText(vm.outputStr.trim()).then(r => {alert("已复制")});
}
},
created: function () {

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
.cm-s-idea span.cm-meta{color:olive}.cm-s-idea span.cm-number{color:#00f}.cm-s-idea span.cm-keyword{line-height:1em;font-weight:700;color:navy}.cm-s-idea span.cm-atom{font-weight:700;color:navy}.cm-s-idea span.cm-def{color:#000}.cm-s-idea span.cm-variable{color:#000}.cm-s-idea span.cm-variable-2{color:#000}.cm-s-idea span.cm-type,.cm-s-idea span.cm-variable-3{color:#000}.cm-s-idea span.cm-property{color:#000}.cm-s-idea span.cm-operator{color:#000}.cm-s-idea span.cm-comment{color:grey}.cm-s-idea span.cm-string{color:green}.cm-s-idea span.cm-string-2{color:green}.cm-s-idea span.cm-qualifier{color:#555}.cm-s-idea span.cm-error{color:red}.cm-s-idea span.cm-attribute{color:#00f}.cm-s-idea span.cm-tag{color:navy}.cm-s-idea span.cm-link{color:#00f}.cm-s-idea .CodeMirror-activeline-background{background:#fffae3}.cm-s-idea span.cm-builtin{color:#30a}.cm-s-idea span.cm-bracket{color:#cc7}.cm-s-idea{font-family:Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif}.cm-s-idea .CodeMirror-matchingbracket{outline:1px solid grey;color:#000!important}.CodeMirror-hints.idea{font-family:Menlo,Monaco,Consolas,'Courier New',monospace;color:#616569;background-color:#ebf3fd!important}.CodeMirror-hints.idea .CodeMirror-hint-active{background-color:#a2b8c9!important;color:#5c6065!important}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
/*! layer mobile-v2.0.0 Web 弹层组件 MIT License */
;!function(e){"use strict";var t=document,n="querySelectorAll",i="getElementsByClassName",a=function(e){return t[n](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var n in e)t[n]=e[n];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener("click",function(e){t.call(this,e)},!1)};var r=0,o=["layui-m-layer"],c=function(e){var t=this;t.config=l.extend(e),t.view()};c.prototype.view=function(){var e=this,n=e.config,s=t.createElement("div");e.id=s.id=o[0]+r,s.setAttribute("class",o[0]+" "+o[0]+(n.type||0)),s.setAttribute("index",r);var l=function(){var e="object"==typeof n.title;return n.title?'<h3 style="'+(e?n.title[1]:"")+'">'+(e?n.title[0]:n.title)+"</h3>":""}(),c=function(){"string"==typeof n.btn&&(n.btn=[n.btn]);var e,t=(n.btn||[]).length;return 0!==t&&n.btn?(e='<span yes type="1">'+n.btn[0]+"</span>",2===t&&(e='<span no type="0">'+n.btn[1]+"</span>"+e),'<div class="layui-m-layerbtn">'+e+"</div>"):""}();if(n.fixed||(n.top=n.hasOwnProperty("top")?n.top:100,n.style=n.style||"",n.style+=" top:"+(t.body.scrollTop+n.top)+"px"),2===n.type&&(n.content='<i></i><i class="layui-m-layerload"></i><i></i><p>'+(n.content||"")+"</p>"),n.skin&&(n.anim="up"),"msg"===n.skin&&(n.shade=!1),s.innerHTML=(n.shade?"<div "+("string"==typeof n.shade?'style="'+n.shade+'"':"")+' class="layui-m-layershade"></div>':"")+'<div class="layui-m-layermain" '+(n.fixed?"":'style="position:static;"')+'><div class="layui-m-layersection"><div class="layui-m-layerchild '+(n.skin?"layui-m-layer-"+n.skin+" ":"")+(n.className?n.className:"")+" "+(n.anim?"layui-m-anim-"+n.anim:"")+'" '+(n.style?'style="'+n.style+'"':"")+">"+l+'<div class="layui-m-layercont">'+n.content+"</div>"+c+"</div></div></div>",!n.type||2===n.type){var d=t[i](o[0]+n.type),y=d.length;y>=1&&layer.close(d[0].getAttribute("index"))}document.body.appendChild(s);var u=e.elem=a("#"+e.id)[0];n.success&&n.success(u),e.index=r++,e.action(n,u)},c.prototype.action=function(e,t){var n=this;e.time&&(l.timer[n.index]=setTimeout(function(){layer.close(n.index)},1e3*e.time));var a=function(){var t=this.getAttribute("type");0==t?(e.no&&e.no(),layer.close(n.index)):e.yes?e.yes(n.index):layer.close(n.index)};if(e.btn)for(var s=t[i]("layui-m-layerbtn")[0].children,r=s.length,o=0;o<r;o++)l.touch(s[o],a);if(e.shade&&e.shadeClose){var c=t[i]("layui-m-layershade")[0];l.touch(c,function(){layer.close(n.index,e.end)})}e.end&&(l.end[n.index]=e.end)},e.layer={v:"2.0",index:r,open:function(e){var t=new c(e||{});return t.index},close:function(e){var n=a("#"+o[0]+e)[0];n&&(n.innerHTML="",t.body.removeChild(n),clearTimeout(l.timer[e]),delete l.timer[e],"function"==typeof l.end[e]&&l.end[e](),delete l.end[e])},closeAll:function(){for(var e=t[i](o[0]),n=0,a=e.length;n<a;n++)layer.close(0|e[0].getAttribute("index"))}},"function"==typeof define?define(function(){return layer}):function(){var e=document.scripts,n=e[e.length-1],i=n.src,a=i.substring(0,i.lastIndexOf("/")+1);n.getAttribute("merge")||document.head.appendChild(function(){var e=t.createElement("link");return e.href=a+"need/layer.css?2.0",e.type="text/css",e.rel="styleSheet",e.id="layermcss",e}())}()}(window);

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 701 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1,70 +0,0 @@
<#macro commonStyle>
<#-- favicon -->
<link rel="icon" href="favicon.ico" />
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<!-- Bootstrap 4 -->
<link href="//cdn.staticfile.org/twitter-bootstrap/4.5.3/css/bootstrap.min.css" rel="stylesheet">
<!-- Font Awesome -->
<link href="//cdn.staticfile.org/font-awesome/5.11.2/css/fontawesome.min.css" rel="stylesheet">
<!-- Ionicons -->
<link href="//cdn.staticfile.org/ionicons/4.5.6/css/ionicons.min.css" rel="stylesheet">
<link href="//cdn.staticfile.org/codemirror/5.58.3/codemirror.min.css" rel="stylesheet">
<link href="//cdn.bootcss.com/jquery-toast-plugin/1.3.2/jquery.toast.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:// -->
<!--[if lt IE 9]>
<script src="//cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
<script src="//cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<script>const base_url = '${request.contextPath}';</script>
</#macro>
<#macro commonScript>
<!-- jQuery -->
<script src="//cdn.staticfile.org/jquery/3.4.1/jquery.min.js"></script>
<!-- Bootstrap -->
<script src="//cdn.staticfile.org/twitter-bootstrap/4.5.3/js/bootstrap.min.js"></script>
<script src="//cdn.bootcss.com/jquery-toast-plugin/1.3.2/jquery.toast.min.js"></script>
<!-- codemirror -->
<script src="//cdn.staticfile.org/codemirror/5.58.3/codemirror.min.js"></script>
<script src="//cdn.staticfile.org/codemirror/5.58.3/addon/display/placeholder.min.js"></script>
<script src="//cdn.staticfile.org/codemirror/5.58.3/mode/clike/clike.min.js"></script>
<script src="//cdn.staticfile.org/codemirror/5.58.3/mode/sql/sql.min.js"></script>
<script src="//cdn.staticfile.org/codemirror/5.58.3/mode/xml/xml.min.js"></script>
</#macro>
<#macro commonFooter >
<div class="container">
<hr>
<footer>
<footer class="bd-footer text-muted" role="contentinfo">
<div class="container">
<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> 提供在线版本。点击<a href="#" id="donate2">赞赏</a>。</p>
</div>
</footer>
</footer>
</div> <!-- /container -->
</#macro>
<#macro viewerCounter>
var _hmt = _hmt || [];
(function() {
//百度统计一下
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?97fd5ca1a4298ac8349c7e0de9029a0f";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</#macro>

View File

@ -1,451 +0,0 @@
<!DOCTYPE html>
<html lang="utf-8">
<head>
<meta charset="UTF-8">
<title>SQL转Java JPA、MYBATIS实现类代码生成平台</title>
<meta name="keywords" content="sql转实体类,sql转DAO,SQL转service,SQL转JPA实现,SQL转MYBATIS实现">
<#import "common/common-import.ftl" as netCommon>
<@netCommon.commonStyle />
<@netCommon.commonScript />
<script>
<@netCommon.viewerCounter />
$(function () {
/**
* 初始化SQL AREA
*/
const ddlSqlArea = CodeMirror.fromTextArea(document.getElementById("ddlSqlArea"), {
lineNumbers: true,
matchBrackets: true,
mode: "text/x-sql",
lineWrapping: false,
readOnly: false,
foldGutter: true,
//keyMap:"sublime",
gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"]
});
ddlSqlArea.setSize('auto','auto');
/**
* 初始化CODE AREA
*/
const genCodeArea = CodeMirror.fromTextArea(document.getElementById("genCodeArea"), {
lineNumbers: true,
matchBrackets: true,
mode: "text/x-java",
lineWrapping: true,
readOnly: false,
foldGutter: true,
//keyMap:"sublime",
gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"]
});
genCodeArea.setSize('auto','auto');
let codeData;
// 使用var jsonObj = $("#formId").serializeObject();
$.fn.serializeObject = function()
{
const o = {};
const a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
let historyCount = 0;
//初始化清除session
if (window.sessionStorage){
//修复当F5刷新的时候session没有清空各个值但是页面的button没了。
sessionStorage.clear();
}
/**
* 生成代码
*/
$('#btnGenCode').click(function () {
const jsonData = {
"tableSql": ddlSqlArea.getValue(),
"packageName": $("#packageName").val(),
"returnUtil": $("#returnUtil").val(),
"authorName": $("#authorName").val(),
"dataType": $("#dataType").val(),
"tinyintTransType": $("#tinyintTransType").val(),
"nameCaseType": $("#nameCaseType").val(),
"swagger": $("#isSwagger").val(),
"timeTransType": $("#timeTransType").val(),
"packageType": $("#packageType").val()
};
$.ajax({
type: 'POST',
url: base_url + "/genCode",
data:(JSON.stringify(jsonData)),
dataType: "json",
contentType: "application/json",
success: function (data) {
if (data.code === 200) {
codeData = data.data;
genCodeArea.setValue(codeData.beetlentity);
genCodeArea.setSize('auto', 'auto');
$.toast("√ 代码生成成功");
//添加历史记录
addHistory(codeData);
} else {
$.toast("× 代码生成失败 :"+data.msg);
}
}
});
return false;
});
/**
* 切换历史记录
*/
function getHistory(tableName){
if (window.sessionStorage){
const valueSession = sessionStorage.getItem(tableName);
codeData = JSON.parse(valueSession);
$.toast("$ 切换历史记录成功:"+tableName);
genCodeArea.setValue(codeData.entity);
}else{
console.log("浏览器不支持sessionStorage");
}
}
/**
* 添加历史记录
*/
function addHistory(data){
if (window.sessionStorage){
//console.log(historyCount);
if(historyCount>=9){
$("#history").find(".btn:last").remove();
historyCount--;
}
const tableName = data.tableName;
const valueSession = sessionStorage.getItem(tableName);
if(valueSession!==undefined && valueSession!=null){
sessionStorage.removeItem(tableName);
}else{
$("#history").prepend('<button id="his-'+tableName+'" type="button" class="btn">'+tableName+'</button>');
//$("#history").prepend('<button id="his-'+tableName+'" onclick="getHistory(\''+tableName+'\');" type="button" class="btn">'+tableName+'</button>');
$("#his-"+tableName).bind('click', function () {getHistory(tableName)});
}
sessionStorage.setItem(tableName,JSON.stringify(data));
historyCount++;
}else{
console.log("浏览器不支持sessionStorage");
}
}
/**
* 按钮事件组
*/
$('.generator').bind('click', function () {
if (!$.isEmptyObject(codeData)) {
const id = this.id;
genCodeArea.setValue(codeData[id]);
genCodeArea.setSize('auto', 'auto');
}
});
/**
* 捐赠
*/
function donate(){
if($("#donate").attr("show")=="no"){
$("#donate").html('<img src="https://raw.githubusercontent.com/moshowgame/SpringBootCodeGenerator/master/donate.png"></img>');
$("#donate").attr("show","yes");
}else{
$("#donate").html('<p>谢谢赞赏!</p>');
$("#donate").attr("show","no");
}
}
$('#donate1').on('click', function(){
donate();
});
$('#donate2').on('click', function(){
donate();
});
$('#btnCopy').on('click', function(){
if(!$.isEmptyObject(genCodeArea.getValue())&&!$.isEmptyObject(navigator)&&!$.isEmptyObject(navigator.clipboard)){
navigator.clipboard.writeText(genCodeArea.getValue());
$.toast("√ 复制成功");
}
});
function getVersion(){
let gitVersion;
$.ajax({
type: 'GET',
url: "https://raw.githubusercontent.com/moshowgame/SpringBootCodeGenerator/master/generator-web/src/main/resources/static/version.json",
dataType: "json",
success: function (data) {
gitVersion = data.version;
$.ajax({
type: 'GET',
url: base_url + "/static/version.json",
dataType: "json",
success: function (data) {
$.toast("#当前版本:"+data.version+" | github:"+gitVersion);
}
});
}
});
}
$('#version').on('click', function(){
getVersion();
});
});
</script>
</head>
<body style="background-color: #e9ecef">
<#--<div class="container">
<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">
<a class="nav-link" href="http://zhengkai.blog.csdn.net">zhengkai.blog.csdn.net</a>
</li>
</ul>
</nav>
</div>-->
<#--布局修改为4-8分-->
<div class="container">
<div class="row">
<#--选择区域-->
<div class="col-sm-4">
<!-- 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 setWidth" id="btnGroupAddon">通用实体</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default generator" id="model">entity(set/get)</button>
<button type="button" class="btn btn-default generator" id="beetlentity">entity(lombok)</button>
</div>
</div>
<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 setWidth" id="btnGroupAddon">常用Util</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default generator" id="beanutil">BeanUtil</button>
<button type="button" class="btn btn-default generator" id="sql">SQL(CRUD)</button>
<button type="button" class="btn btn-default generator" id="json">JSON</button>
<button type="button" class="btn btn-default generator" id="xml">XML</button>
</div>
</div>
</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 setWidth" id="btnGroupAddon">MybatisPlus</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default generator" id="plusentity">entity</button>
<button type="button" class="btn btn-default generator" id="plusmapper">mapper</button>
<button type="button" class="btn btn-default generator" id="pluscontroller">controller</button>
</div>
</div>
<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 setWidth" id="btnGroupAddon">UI</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default generator" id="swagger-ui">swagger-ui</button>
<button type="button" class="btn btn-default generator" id="element-ui">element-ui</button>
<button type="button" class="btn btn-default generator" id="bootstrap-ui">bootstrap-ui</button>
<button type="button" class="btn btn-default generator" id="layui-edit">layui-edit</button>
<button type="button" class="btn btn-default generator" id="layui-list">layui-list</button>
</div>
</div>
</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 setWidth" id="btnGroupAddon">BeetlSQL</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default generator" id="beetlmd">beetlmd</button>
<button type="button" class="btn btn-default generator" id="beetlcontroller">beetlcontroller</button>
</div>
</div>
<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 setWidth" id="btnGroupAddon">JPA</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default generator" id="entity">jpa-entity</button>
<button type="button" class="btn btn-default generator" id="repository">repository</button>
<button type="button" class="btn btn-default generator" id="jpacontroller">controller</button>
</div>
</div>
</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 setWidth" id="btnGroupAddon">JdbcTemplate</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default generator" id="jtdaoimpl">daoimpl</button>
<button type="button" class="btn btn-default generator" id="jtdao">dao</button>
</div>
</div>
<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 setWidth" id="btnGroupAddon">Mybatis</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default generator" id="mybatis">ibatisXml</button>
<button type="button" class="btn btn-default generator" id="mapper">mapper</button>
<button type="button" class="btn btn-default generator" id="mapper2">mapper2</button>
<button type="button" class="btn btn-default generator" id="service">service</button>
<button type="button" class="btn btn-default generator" id="service_impl">serviceImpl</button>
<button type="button" class="btn btn-default generator" id="controller">controller</button>
</div>
</div>
</div>
</div>
<#--核心工作区-->
<div class="col-sm-8">
<!-- Main jumbotron for a primary marketing message or call to action -->
<div class="jumbotron jumbotron-fluid">
<div class="container">
<h1 class="display-4">Spring Boot Code Generator!</h1>
<p class="lead">
√基于SpringBoot2+Freemarker的<a class="lead" href="https://github.com/moshowgame/SpringBootCodeGenerator">代码生成器</a><br>
√以解放双手为目的减少大量重复的CRUD工作<br>
√支持mysql/oracle/pgsql三大数据库<br>
√用DDL-SQL语句生成JPA/JdbcTemplate/Mybatis/MybatisPlus/BeetlSQL相关代码。<br>
如果发现有SQL语句不能识别请<a href="https://github.com/moshowgame/SpringBootCodeGenerator/issues">留言</a>,同时欢迎大家提<a href="https://github.com/moshowgame/SpringBootCodeGenerator/pulls">PR</a>和<a href="#" id="donate1">赞赏</a>,谢谢!<a id="version" href="#">查看版本</a>
</p>
<div id="donate" class="container" show="no"></div>
<hr>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text">数据类型</span>
</div>
<select type="text" class="form-control" id="dataType"
name="dataType">
<option value="sql">ddl-sql</option>
<option value="json">json</option>
<option value="insert-sql">insert-sql</option>
<#--<option value="sql-regex">sql-regex</option>-->
</select>
<div class="input-group-prepend">
<span class="input-group-text">作者</span>
</div>
<input type="text" class="form-control" id="authorName" name="authorName" value="zhengkai.blog.csdn.net">
<div class="input-group-prepend">
<span class="input-group-text">返回</span>
</div>
<input type="text" class="form-control" id="returnUtil" name="returnUtil" value="ReturnT">
<div class="input-group-prepend">
<span class="input-group-text">包名</span>
</div>
<input type="text" class="form-control" id="packageName" name="packageName" value="com.softdev.system">
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text">tinyint转换</span>
</div>
<select type="text" class="form-control" id="tinyintTransType"
name="tinyintTransType">
<option value="boolean">boolean</option>
<option value="Boolean">Boolean</option>
<option value="Integer">Integer</option>
<option value="int">int</option>
<option value="String">String</option>
<option value="Short">Short</option>
</select>
<div class="input-group-prepend">
<span class="input-group-text">时间类型</span>
</div>
<select type="text" class="form-control" id="timeTransType"
name="timeTransType">
<option value="Date">Date</option>
<option value="DateTime">DateTime</option>
<option value="Time">Time</option>
<option value="Timestamp">Timestamp</option>
<option value="Calendar">Calendar</option>
<option value="LocalDate">LocalDate</option>
<option value="LocalDateTime">LocalDateTime</option>
<option value="LocalTime">LocalTime</option>
</select>
<div class="input-group-prepend">
<span class="input-group-text">命名规则</span>
</div>
<select type="text" class="form-control" id="nameCaseType"
name="nameCaseType">
<option value="CamelCase">驼峰</option>
<option value="UnderScoreCase">下划线</option>
<#--<option value="UpperUnderScoreCase">大写下划线</option>-->
</select>
<div class="input-group-prepend">
<span class="input-group-text">包装类型</span>
</div>
<select type="text" class="form-control" id="packageType"
name="packageType">
<option value="true">启用</option>
<option value="false">关闭</option>
</select>
<div class="input-group-prepend">
<span class="input-group-text">swagger-ui</span>
</div>
<select type="text" class="form-control" id="isSwagger"
name="isSwagger">
<option value="false">关闭</option>
<option value="true">启用</option>
</select>
</div>
<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',
'user_name' varchar(255) NOT NULL COMMENT '用户名',
'addtime' datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY ('user_id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息'
</textarea><br>
<p><button class="btn btn-primary btn-lg disabled" id="btnGenCode" role="button" data-toggle="popover" data-content="">开始生成 »</button> <button class="btn alert-secondary" id="btnCopy">一键复制</button></p>
<div id="history" class="btn-group" role="group" aria-label="Basic example"></div>
<hr>
<hr>
<textarea id="genCodeArea" class="form-control btn-lg" ></textarea>
</div>
</div>
</div>
</div>
</div>
<#--<@netCommon.commonFooter />-->
</body>
</html>

View File

@ -1,442 +0,0 @@
<!DOCTYPE html>
<html lang="utf-8">
<head>
<meta charset="UTF-8">
<title>SQL转Java JPA、MYBATIS实现类代码生成平台</title>
<meta name="keywords" content="sql转实体类,sql转DAO,SQL转service,SQL转JPA实现,SQL转MYBATIS实现">
<#import "common/common-import.ftl" as netCommon>
<@netCommon.commonStyle />
<@netCommon.commonScript />
<script>
<@netCommon.viewerCounter />
$(function () {
/**
* 初始化SQL AREA
*/
const ddlSqlArea = CodeMirror.fromTextArea(document.getElementById("ddlSqlArea"), {
lineNumbers: true,
matchBrackets: true,
mode: "text/x-sql",
lineWrapping: false,
readOnly: false,
foldGutter: true,
//keyMap:"sublime",
gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"]
});
ddlSqlArea.setSize('auto','auto');
/**
* 初始化CODE AREA
*/
const genCodeArea = CodeMirror.fromTextArea(document.getElementById("genCodeArea"), {
lineNumbers: true,
matchBrackets: true,
mode: "text/x-java",
lineWrapping: true,
readOnly: false,
foldGutter: true,
//keyMap:"sublime",
gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"]
});
genCodeArea.setSize('auto','auto');
let codeData;
// 使用var jsonObj = $("#formId").serializeObject();
$.fn.serializeObject = function()
{
const o = {};
const a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
let historyCount = 0;
//初始化清除session
if (window.sessionStorage){
//修复当F5刷新的时候session没有清空各个值但是页面的button没了。
sessionStorage.clear();
}
/**
* 生成代码
*/
$('#btnGenCode').click(function () {
const jsonData = {
"tableSql": ddlSqlArea.getValue(),
"packageName": $("#packageName").val(),
"returnUtil": $("#returnUtil").val(),
"authorName": $("#authorName").val(),
"dataType": $("#dataType").val(),
"tinyintTransType": $("#tinyintTransType").val(),
"nameCaseType": $("#nameCaseType").val(),
"swagger": $("#isSwagger").val(),
"timeTransType": $("#timeTransType").val(),
"packageType": $("#packageType").val()
};
$.ajax({
type: 'POST',
url: base_url + "/genCode",
data:(JSON.stringify(jsonData)),
dataType: "json",
contentType: "application/json",
success: function (data) {
if (data.code === 200) {
codeData = data.data;
genCodeArea.setValue(codeData.beetlentity);
genCodeArea.setSize('auto', 'auto');
$.toast("√ 代码生成成功");
//添加历史记录
addHistory(codeData);
} else {
$.toast("× 代码生成失败 :"+data.msg);
}
}
});
return false;
});
/**
* 切换历史记录
*/
function getHistory(tableName){
if (window.sessionStorage){
const valueSession = sessionStorage.getItem(tableName);
codeData = JSON.parse(valueSession);
$.toast("$ 切换历史记录成功:"+tableName);
genCodeArea.setValue(codeData.entity);
}else{
console.log("浏览器不支持sessionStorage");
}
}
/**
* 添加历史记录
*/
function addHistory(data){
if (window.sessionStorage){
//console.log(historyCount);
if(historyCount>=9){
$("#history").find(".btn:last").remove();
historyCount--;
}
const tableName = data.tableName;
const valueSession = sessionStorage.getItem(tableName);
if(valueSession!==undefined && valueSession!=null){
sessionStorage.removeItem(tableName);
}else{
$("#history").prepend('<button id="his-'+tableName+'" type="button" class="btn">'+tableName+'</button>');
//$("#history").prepend('<button id="his-'+tableName+'" onclick="getHistory(\''+tableName+'\');" type="button" class="btn">'+tableName+'</button>');
$("#his-"+tableName).bind('click', function () {getHistory(tableName)});
}
sessionStorage.setItem(tableName,JSON.stringify(data));
historyCount++;
}else{
console.log("浏览器不支持sessionStorage");
}
}
/**
* 按钮事件组
*/
$('.generator').bind('click', function () {
if (!$.isEmptyObject(codeData)) {
const id = this.id;
genCodeArea.setValue(codeData[id]);
genCodeArea.setSize('auto', 'auto');
}
});
/**
* 捐赠
*/
function donate(){
if($("#donate").attr("show")=="no"){
$("#donate").html('<img src="https://raw.githubusercontent.com/moshowgame/SpringBootCodeGenerator/master/donate.png"></img>');
$("#donate").attr("show","yes");
}else{
$("#donate").html('<p>谢谢赞赏!</p>');
$("#donate").attr("show","no");
}
}
$('#donate1').on('click', function(){
donate();
});
$('#donate2').on('click', function(){
donate();
});
$('#btnCopy').on('click', function(){
if(!$.isEmptyObject(genCodeArea.getValue())&&!$.isEmptyObject(navigator)&&!$.isEmptyObject(navigator.clipboard)){
navigator.clipboard.writeText(genCodeArea.getValue());
$.toast("√ 复制成功");
}
});
function getVersion(){
let gitVersion;
$.ajax({
type: 'GET',
url: "https://raw.githubusercontent.com/moshowgame/SpringBootCodeGenerator/master/generator-web/src/main/resources/static/version.json",
dataType: "json",
success: function (data) {
gitVersion = data.version;
$.ajax({
type: 'GET',
url: base_url + "/static/version.json",
dataType: "json",
success: function (data) {
$.toast("#当前版本:"+data.version+" | github:"+gitVersion);
}
});
}
});
}
$('#version').on('click', function(){
getVersion();
});
});
</script>
</head>
<body style="background-color: #e9ecef">
<#--布局修改为4-8分-->
<div class="container">
<div class="row">
<#--选择区域-->
<div class="col-sm-4">
<!-- 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 setWidth" id="btnGroupAddon">通用实体</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default generator" id="model">entity(set/get)</button>
<button type="button" class="btn btn-default generator" id="beetlentity">entity(lombok)</button>
</div>
</div>
<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 setWidth" id="btnGroupAddon">常用Util</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default generator" id="beanutil">BeanUtil</button>
<button type="button" class="btn btn-default generator" id="sql">SQL(CRUD)</button>
<button type="button" class="btn btn-default generator" id="json">JSON</button>
<button type="button" class="btn btn-default generator" id="xml">XML</button>
</div>
</div>
</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 setWidth" id="btnGroupAddon">MybatisPlus</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default generator" id="plusentity">entity</button>
<button type="button" class="btn btn-default generator" id="plusmapper">mapper</button>
<button type="button" class="btn btn-default generator" id="pluscontroller">controller</button>
</div>
</div>
<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 setWidth" id="btnGroupAddon">UI</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default generator" id="swagger-ui">swagger-ui</button>
<button type="button" class="btn btn-default generator" id="element-ui">element-ui</button>
<button type="button" class="btn btn-default generator" id="bootstrap-ui">bootstrap-ui</button>
<button type="button" class="btn btn-default generator" id="layui-edit">layui-edit</button>
<button type="button" class="btn btn-default generator" id="layui-list">layui-list</button>
</div>
</div>
</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 setWidth" id="btnGroupAddon">BeetlSQL</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default generator" id="beetlmd">beetlmd</button>
<button type="button" class="btn btn-default generator" id="beetlcontroller">beetlcontroller</button>
</div>
</div>
<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 setWidth" id="btnGroupAddon">JPA</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default generator" id="entity">jpa-entity</button>
<button type="button" class="btn btn-default generator" id="repository">repository</button>
<button type="button" class="btn btn-default generator" id="jpacontroller">controller</button>
</div>
</div>
</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 setWidth" id="btnGroupAddon">JdbcTemplate</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default generator" id="jtdaoimpl">daoimpl</button>
<button type="button" class="btn btn-default generator" id="jtdao">dao</button>
</div>
</div>
<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 setWidth" id="btnGroupAddon">Mybatis</div>
</div>
</div>
<div class="btn-group" role="group" aria-label="First group">
<button type="button" class="btn btn-default generator" id="mybatis">ibatisXml</button>
<button type="button" class="btn btn-default generator" id="mapper">mapper</button>
<button type="button" class="btn btn-default generator" id="mapper2">mapper2</button>
<button type="button" class="btn btn-default generator" id="service">service</button>
<button type="button" class="btn btn-default generator" id="service_impl">serviceImpl</button>
<button type="button" class="btn btn-default generator" id="controller">controller</button>
</div>
</div>
</div>
</div>
<#--核心工作区-->
<div class="col-sm-8">
<!-- Main jumbotron for a primary marketing message or call to action -->
<div class="jumbotron jumbotron-fluid">
<div class="container">
<h1 class="display-4">Spring Boot Code Generator!</h1>
<p class="lead">
√基于SpringBoot2+Freemarker的<a class="lead" href="https://github.com/moshowgame/SpringBootCodeGenerator">代码生成器</a><br>
√以解放双手为目的减少大量重复的CRUD工作<br>
√支持mysql/oracle/pgsql三大数据库<br>
√用DDL-SQL语句生成JPA/JdbcTemplate/Mybatis/MybatisPlus/BeetlSQL相关代码。<br>
如果发现有SQL语句不能识别请<a href="https://github.com/moshowgame/SpringBootCodeGenerator/issues">留言</a>,同时欢迎大家提<a href="https://github.com/moshowgame/SpringBootCodeGenerator/pulls">PR</a>和<a href="#" id="donate1">赞赏</a>,谢谢!<a id="version" href="#">查看版本</a>
</p>
<div id="donate" class="container" show="no"></div>
<hr>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text">数据类型</span>
</div>
<select type="text" class="form-control" id="dataType"
name="dataType">
<option value="sql">ddl-sql</option>
<option value="json">json</option>
<option value="insert-sql">insert-sql</option>
<#--<option value="sql-regex">sql-regex</option>-->
</select>
<div class="input-group-prepend">
<span class="input-group-text">作者</span>
</div>
<input type="text" class="form-control" id="authorName" name="authorName" value="zhengkai.blog.csdn.net">
<div class="input-group-prepend">
<span class="input-group-text">返回</span>
</div>
<input type="text" class="form-control" id="returnUtil" name="returnUtil" value="ReturnT">
<div class="input-group-prepend">
<span class="input-group-text">包名</span>
</div>
<input type="text" class="form-control" id="packageName" name="packageName" value="com.softdev.system">
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text">tinyint转换</span>
</div>
<select type="text" class="form-control" id="tinyintTransType"
name="tinyintTransType">
<option value="boolean">boolean</option>
<option value="Boolean">Boolean</option>
<option value="Integer">Integer</option>
<option value="int">int</option>
<option value="String">String</option>
<option value="Short">Short</option>
</select>
<div class="input-group-prepend">
<span class="input-group-text">时间类型</span>
</div>
<select type="text" class="form-control" id="timeTransType"
name="timeTransType">
<option value="Date">Date</option>
<option value="DateTime">DateTime</option>
<option value="Time">Time</option>
<option value="Timestamp">Timestamp</option>
<option value="Calendar">Calendar</option>
<option value="LocalDate">LocalDate</option>
<option value="LocalDateTime">LocalDateTime</option>
<option value="LocalTime">LocalTime</option>
</select>
<div class="input-group-prepend">
<span class="input-group-text">命名规则</span>
</div>
<select type="text" class="form-control" id="nameCaseType"
name="nameCaseType">
<option value="CamelCase">驼峰</option>
<option value="UnderScoreCase">下划线</option>
<#--<option value="UpperUnderScoreCase">大写下划线</option>-->
</select>
<div class="input-group-prepend">
<span class="input-group-text">包装类型</span>
</div>
<select type="text" class="form-control" id="packageType"
name="packageType">
<option value="true">启用</option>
<option value="false">关闭</option>
</select>
<div class="input-group-prepend">
<span class="input-group-text">swagger-ui</span>
</div>
<select type="text" class="form-control" id="isSwagger"
name="isSwagger">
<option value="false">关闭</option>
<option value="true">启用</option>
</select>
</div>
<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',
'user_name' varchar(255) NOT NULL COMMENT '用户名',
'addtime' datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY ('user_id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息'
</textarea><br>
<p><button class="btn btn-primary btn-lg disabled" id="btnGenCode" role="button" data-toggle="popover" data-content="">开始生成 »</button> <button class="btn alert-secondary" id="btnCopy">一键复制</button></p>
<div id="history" class="btn-group" role="group" aria-label="Basic example"></div>
<hr>
<hr>
<textarea id="genCodeArea" class="form-control btn-lg" ></textarea>
</div>
</div>
</div>
</div>
</div>
<#--<@netCommon.commonFooter />-->
</body>
</html>

View File

@ -1,149 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>代码生成器</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta charset="UTF-8">
<!-- import CSS -->
<link rel="stylesheet" href="//cdn.staticfile.org/element-ui/2.14.1/theme-chalk/index.min.css">
<link rel="stylesheet" href="//cdn.staticfile.org/codemirror/5.58.3/codemirror.min.css">
</head>
<body>
<div id="app">
<el-container>
<el-header> <span>SQL转JAVA代码生成器<el-tag>{{date|formatDate(this)}}</el-tag></span></el-header>
<el-container>
<el-aside width="200px">
<el-tree
:data="data"
show-checkbox
node-key="id"
:default-expanded-keys="[2, 3]"
:default-checked-keys="[5]"
:props="defaultProps">
</el-tree>
</el-aside>
<el-container>
<el-main>
<textarea id="sqlArea" ></textarea>
<textarea id="codeArea" ></textarea>
</el-main>
<el-footer>Footer</el-footer>
</el-container>
</el-container>
</el-container>
</div>
</body>
<!-- import Vue before Element -->
<script src="//cdn.staticfile.org/vue/2.6.11/vue.min.js"></script>
<!-- import JavaScript -->
<script src="//cdn.staticfile.org/element-ui/2.14.1/index.js"></script>
<script src="//cdn.staticfile.org/element-ui/2.14.1/locale/zh-CN.min.js"></script>
<script src="//cdn.staticfile.org/codemirror/5.58.3/codemirror.min.js"></script>
<script src="//cdn.staticfile.org/codemirror/5.58.3/addon/display/placeholder.min.js"></script>
<script src="//cdn.staticfile.org/codemirror/5.58.3/mode/clike/clike.min.js"></script>
<script src="//cdn.staticfile.org/codemirror/5.58.3/mode/sql/sql.min.js"></script>
<script src="//cdn.staticfile.org/codemirror/5.58.3/mode/xml/xml.min.js"></script>
<script>
/**
* 初始化sqlArea
*/
const sqlArea = CodeMirror.fromTextArea(document.getElementById("sqlArea"), {
lineNumbers: true,
matchBrackets: true,
mode: "text/x-sql",
lineWrapping: false,
readOnly: false,
foldGutter: true
});
//sqlArea.setSize('auto','auto');
/**
* 初始化codeArea
*/
const codeArea = CodeMirror.fromTextArea(document.getElementById("codeArea"), {
lineNumbers: true,
matchBrackets: true,
mode: "text/x-java",
lineWrapping:true,
readOnly:false,
});
//codeArea.setSize('auto','auto');
let vue = new Vue({
el: '#app',
data: function() {
return {
date: new Date(),
data: [{
id: 1,
label: '一级 1',
children: [{
id: 4,
label: '二级 1-1',
children: [{
id: 9,
label: '三级 1-1-1'
}, {
id: 10,
label: '三级 1-1-2'
}]
}]
}, {
id: 2,
label: '一级 2',
children: [{
id: 5,
label: '二级 2-1'
}, {
id: 6,
label: '二级 2-2'
}]
}, {
id: 3,
label: '一级 3',
children: [{
id: 7,
label: '二级 3-1'
}, {
id: 8,
label: '二级 3-2'
}]
}],
defaultProps: {
children: 'children',
label: 'label'
}
}
},
methods:{
setZero(a) {//设置小于10的数字在加0
return a < 10 ? "0" + a : a;
},
},
filters:{
formatDate(date,vm) { //当前时间格式化处理
let str = "";
let weekDay = [
"星期天",
"星期一",
"星期二",
"星期三",
"星期四",
"星期五",
"星期六"
];
str += vm.setZero(date.getFullYear()) + "年"; //获取年份
str += vm.setZero(date.getMonth() + 1) + "月"; //获取月份
str += vm.setZero(date.getDate()) + "日"; //获取日
str += " " + weekDay[date.getDay()]; //获取星期
return str;
}
}
})
</script>
</html>

View File

@ -19,13 +19,13 @@ public class ${classInfo.className} implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
<#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>
@TableId(type = IdType.AUTO)
private ${fieldItem.fieldClass} ${fieldItem.fieldName};
<#if isLombok?exists && isLombok==false>

View File

@ -23,22 +23,28 @@
<script src="${request.contextPath}/statics/plugins/IE/respond.min.js"></script>
<![endif]-->
<!-- bootstrap -->
<link rel="stylesheet" href="${request.contextPath}/statics/css/AdminLTE.min.css">
<link rel="stylesheet" href="${request.contextPath}/statics/css/all-skins.min.css">
<link rel="stylesheet" href="${request.contextPath}/statics/css/bootstrap.min.css">
<link rel="stylesheet" href="${request.contextPath}/statics/css/font-awesome.min.css">
<!--<script src="${request.contextPath}/statics/libs/bootstrap.min.js"></script>-->
<!-- codemirror -->
<script src="${request.contextPath}/statics/plugins/codemirror/codemirror.min.js"></script>
<script src="${request.contextPath}/statics/plugins/codemirror/javascript.min.js"></script>
<script src="${request.contextPath}/statics/plugins/codemirror/clike.min.js"></script>
<script src="${request.contextPath}/statics/plugins/codemirror/sql.min.js"></script>
<script src="${request.contextPath}/statics/plugins/codemirror/codemirror.min.js"></script>
<link rel="stylesheet" href="${request.contextPath}/statics/plugins/codemirror/codemirror.css">
<script src="${request.contextPath}/statics/plugins/codemirror/xml.min.js"></script>
<link rel="stylesheet" href="${request.contextPath}/statics/plugins/codemirror/codemirror.min.css">
<link rel="stylesheet" href="${request.contextPath}/statics/plugins/codemirror/idea.min.css">
<!-- bootstrap -->
<link rel="stylesheet" href="${request.contextPath}/statics/css/AdminLTE.min.css">
<link rel="stylesheet" href="${request.contextPath}/statics/css/all-skins.min.css">
<link rel="stylesheet" href="${request.contextPath}/statics/css/bootstrap.min.css">
<!--<link rel="stylesheet" href="${request.contextPath}/statics/css/font-awesome.min.css">-->
<!--<script src="${request.contextPath}/statics/libs/bootstrap.min.js"></script>-->
<!-- layer -->
<script src="${request.contextPath}/statics/plugins/layer/layer.js"></script>
<link rel="stylesheet" href="${request.contextPath}/statics/plugins/layer/theme/default/layer.css">
<!--<script src="${request.contextPath}/statics/plugins/layer/mobile/layer.js"></script>
<link rel="stylesheet" href="${request.contextPath}/statics/plugins/layer/mobile/layer.css">-->