mirror of
https://github.com/moshowgame/SpringBootCodeGenerator.git
synced 2025-12-26 05:48:33 +08:00
生成后自动trim掉前后空格输出。完善ReadMe文档。
This commit is contained in:
parent
8675730465
commit
f5359f871f
36
README.md
36
README.md
@ -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`
|
||||
|
||||
@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@ -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 () {
|
||||
|
||||
1
generator-web/src/main/resources/statics/plugins/codemirror/codemirror.min.css
vendored
Normal file
1
generator-web/src/main/resources/statics/plugins/codemirror/codemirror.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
generator-web/src/main/resources/statics/plugins/codemirror/idea.min.css
vendored
Normal file
1
generator-web/src/main/resources/statics/plugins/codemirror/idea.min.css
vendored
Normal 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
@ -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 |
@ -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 © ${.now?string('yyyy')}-2022
|
||||
<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>
|
||||
@ -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>
|
||||
@ -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>
|
||||
@ -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>
|
||||
@ -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>
|
||||
|
||||
@ -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">-->
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user