Commit e15256e7 authored by 赵啸非's avatar 赵啸非

编写系统代码生成模块

parent be4fe6cf
...@@ -34,7 +34,7 @@ instance.interceptors.request.use(config => { ...@@ -34,7 +34,7 @@ instance.interceptors.request.use(config => {
// config.headers.timestamp = Math.floor(new Date().getTime() / 1000) // config.headers.timestamp = Math.floor(new Date().getTime() / 1000)
// config.headers.token = sessionStorage.getItem('token') || '' // config.headers.token = sessionStorage.getItem('token') || ''
console.log("request config",config); //console.log("request config",config);
return config; return config;
......
...@@ -8,8 +8,6 @@ import MySwitch from '@/components/Switch'; ...@@ -8,8 +8,6 @@ import MySwitch from '@/components/Switch';
import Confirm from '@/components/Confirm'; import Confirm from '@/components/Confirm';
import FormField from '@/components/FormField'; import FormField from '@/components/FormField';
import Upload from '@/components/Upload'; import Upload from '@/components/Upload';
import TreeTable from '@/components/TreeTable.vue';
import TopicInfo from '@/components/TopicInfo.vue';
const Prototype = function() {}; const Prototype = function() {};
...@@ -23,8 +21,6 @@ Prototype.install = (Vue, options) => { ...@@ -23,8 +21,6 @@ Prototype.install = (Vue, options) => {
Vue.component('MySwitch', MySwitch) // 拨动开关 Vue.component('MySwitch', MySwitch) // 拨动开关
Vue.component('Confirm', Confirm) // 局部确认窗口 Vue.component('Confirm', Confirm) // 局部确认窗口
Vue.component('Upload', Upload) // 文件上传 Vue.component('Upload', Upload) // 文件上传
Vue.component('TreeTable', TreeTable) // 文件上传
Vue.component('TopicInfo', TopicInfo) // 文件上传
} }
export default Prototype; export default Prototype;
<template>
<div class="editor" ref="editor" :style="styles"></div>
</template>
<script>
import Quill from "quill";
import "quill/dist/quill.core.css";
import "quill/dist/quill.snow.css";
import "quill/dist/quill.bubble.css";
export default {
name: "Editor",
props: {
/* 编辑器的内容 */
value: {
type: String,
default: "",
},
/* 高度 */
height: {
type: Number,
default: null,
},
/* 最小高度 */
minHeight: {
type: Number,
default: null,
},
/* 只读 */
readOnly: {
type: Boolean,
default: false,
}
},
data() {
return {
Quill: null,
currentValue: "",
options: {
theme: "snow",
bounds: document.body,
debug: "warn",
modules: {
// 工具栏配置
toolbar: [
["bold", "italic", "underline", "strike"], // 加粗 斜体 下划线 删除线
["blockquote", "code-block"], // 引用 代码块
[{ list: "ordered" }, { list: "bullet" }], // 有序、无序列表
[{ indent: "-1" }, { indent: "+1" }], // 缩进
[{ size: ["small", false, "large", "huge"] }], // 字体大小
[{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题
[{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色
[{ align: [] }], // 对齐方式
["clean"], // 清除文本格式
["link", "image", "video"] // 链接、图片、视频
],
},
placeholder: "请输入内容",
readOnly: this.readOnly,
},
};
},
computed: {
styles() {
let style = {};
if (this.minHeight) {
style.minHeight = `${this.minHeight}px`;
}
if (this.height) {
style.height = `${this.height}px`;
}
return style;
},
},
watch: {
value: {
handler(val) {
if (val !== this.currentValue) {
this.currentValue = val === null ? "" : val;
if (this.Quill) {
this.Quill.pasteHTML(this.currentValue);
}
}
},
immediate: true,
},
},
mounted() {
this.init();
},
beforeDestroy() {
this.Quill = null;
},
methods: {
init() {
const editor = this.$refs.editor;
this.Quill = new Quill(editor, this.options);
this.Quill.pasteHTML(this.currentValue);
this.Quill.on("text-change", (delta, oldDelta, source) => {
const html = this.$refs.editor.children[0].innerHTML;
const text = this.Quill.getText();
const quill = this.Quill;
this.currentValue = html;
this.$emit("input", html);
this.$emit("on-change", { html, text, quill });
});
this.Quill.on("text-change", (delta, oldDelta, source) => {
this.$emit("on-text-change", delta, oldDelta, source);
});
this.Quill.on("selection-change", (range, oldRange, source) => {
this.$emit("on-selection-change", range, oldRange, source);
});
this.Quill.on("editor-change", (eventName, ...args) => {
this.$emit("on-editor-change", eventName, ...args);
});
},
},
};
</script>
<style>
.editor, .ql-toolbar {
white-space: pre-wrap!important;
line-height: normal !important;
}
.quill-img {
display: none;
}
.ql-snow .ql-tooltip[data-mode="link"]::before {
content: "请输入链接地址:";
}
.ql-snow .ql-tooltip.ql-editing a.ql-action::after {
border-right: 0px;
content: "保存";
padding-right: 0px;
}
.ql-snow .ql-tooltip[data-mode="video"]::before {
content: "请输入视频地址:";
}
.ql-snow .ql-picker.ql-size .ql-picker-label::before,
.ql-snow .ql-picker.ql-size .ql-picker-item::before {
content: "14px";
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="small"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="small"]::before {
content: "10px";
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="large"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="large"]::before {
content: "18px";
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="huge"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="huge"]::before {
content: "32px";
}
.ql-snow .ql-picker.ql-header .ql-picker-label::before,
.ql-snow .ql-picker.ql-header .ql-picker-item::before {
content: "文本";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
content: "标题1";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
content: "标题2";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
content: "标题3";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
content: "标题4";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
content: "标题5";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
content: "标题6";
}
.ql-snow .ql-picker.ql-font .ql-picker-label::before,
.ql-snow .ql-picker.ql-font .ql-picker-item::before {
content: "标准字体";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="serif"]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value="serif"]::before {
content: "衬线字体";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="monospace"]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value="monospace"]::before {
content: "等宽字体";
}
</style>
...@@ -2,7 +2,6 @@ import Vue from 'vue' ...@@ -2,7 +2,6 @@ import Vue from 'vue'
import ElementUI from 'element-ui' import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css' import 'element-ui/lib/theme-chalk/index.css'
import './assets/less/base.less' import './assets/less/base.less'
import './assets/less/org-tree.less'
import App from './App.vue' import App from './App.vue'
import router from './router' import router from './router'
import store from './store' import store from './store'
......
package com.mortals.xhx.base.system.gentable.model; package com.mortals.xhx.base.system.gentable.model;
import java.util.Date; import java.util.Date;
import com.mortals.framework.model.BaseEntityLong; import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.common.utils.StringUtils; import com.mortals.xhx.common.utils.StringUtils;
/** /**
*
* Description:GentableColumn * Description:GentableColumn
* date: 2021-9-28 10:10:15 * date: 2021-9-29 18:10:02
*/ */
public class GentableColumnEntity extends BaseEntityLong { public class GentableColumnEntity extends BaseEntityLong{
private static final long serialVersionUID = 1632795015375L; private static final long serialVersionUID = 1632910202558L;
/** /**
...@@ -83,6 +83,11 @@ public class GentableColumnEntity extends BaseEntityLong { ...@@ -83,6 +83,11 @@ public class GentableColumnEntity extends BaseEntityLong {
*/ */
private Integer htmlType; private Integer htmlType;
/**
* 默认值
*/
private String defaultValue;
/** /**
* 排序 * 排序
*/ */
...@@ -108,353 +113,290 @@ public class GentableColumnEntity extends BaseEntityLong { ...@@ -108,353 +113,290 @@ public class GentableColumnEntity extends BaseEntityLong {
*/ */
private String createUser; private String createUser;
public GentableColumnEntity() { public GentableColumnEntity(){
} }
/** /**
* 获取 所属表编号 * 获取 所属表编号
*
* @return tableId * @return tableId
*/ */
public Long getTableId() { public Long getTableId() {
return this.tableId; return this.tableId;
} }
/** /**
* 设置 所属表编号 * 设置 所属表编号
*
* @param tableId * @param tableId
*/ */
public void setTableId(Long tableId) { public void setTableId(Long tableId) {
this.tableId = tableId; this.tableId = tableId;
} }
/** /**
* 获取 列名称 * 获取 列名称
*
* @return columnName * @return columnName
*/ */
public String getColumnName() { public String getColumnName() {
return this.columnName; return this.columnName;
} }
/** /**
* 设置 列名称 * 设置 列名称
*
* @param columnName * @param columnName
*/ */
public void setColumnName(String columnName) { public void setColumnName(String columnName) {
this.columnName = columnName; this.columnName = columnName;
} }
/** /**
* 获取 列描述 * 获取 列描述
*
* @return columnComment * @return columnComment
*/ */
public String getColumnComment() { public String getColumnComment() {
return this.columnComment; return this.columnComment;
} }
/** /**
* 设置 列描述 * 设置 列描述
*
* @param columnComment * @param columnComment
*/ */
public void setColumnComment(String columnComment) { public void setColumnComment(String columnComment) {
this.columnComment = columnComment; this.columnComment = columnComment;
} }
/** /**
* 获取 列类型 * 获取 列类型
*
* @return columnType * @return columnType
*/ */
public String getColumnType() { public String getColumnType() {
return this.columnType; return this.columnType;
} }
/** /**
* 设置 列类型 * 设置 列类型
*
* @param columnType * @param columnType
*/ */
public void setColumnType(String columnType) { public void setColumnType(String columnType) {
this.columnType = columnType; this.columnType = columnType;
} }
/** /**
* 获取 JAVA类型 * 获取 JAVA类型
*
* @return javaType * @return javaType
*/ */
public String getJavaType() { public String getJavaType() {
return this.javaType; return this.javaType;
} }
/** /**
* 设置 JAVA类型 * 设置 JAVA类型
*
* @param javaType * @param javaType
*/ */
public void setJavaType(String javaType) { public void setJavaType(String javaType) {
this.javaType = javaType; this.javaType = javaType;
} }
/** /**
* 获取 JAVA字段名 * 获取 JAVA字段名
*
* @return javaField * @return javaField
*/ */
public String getJavaField() { public String getJavaField() {
return this.javaField; return this.javaField;
} }
/** /**
* 设置 JAVA字段名 * 设置 JAVA字段名
*
* @param javaField * @param javaField
*/ */
public void setJavaField(String javaField) { public void setJavaField(String javaField) {
this.javaField = javaField; this.javaField = javaField;
} }
/** /**
* 获取 是否primaryKey(0否,1 是) * 获取 是否primaryKey(0否,1 是)
*
* @return isPrimaryKey * @return isPrimaryKey
*/ */
public Integer getIsPrimaryKey() { public Integer getIsPrimaryKey() {
return this.isPrimaryKey; return this.isPrimaryKey;
} }
/** /**
* 设置 是否primaryKey(0否,1 是) * 设置 是否primaryKey(0否,1 是)
*
* @param isPrimaryKey * @param isPrimaryKey
*/ */
public void setIsPrimaryKey(Integer isPrimaryKey) { public void setIsPrimaryKey(Integer isPrimaryKey) {
this.isPrimaryKey = isPrimaryKey; this.isPrimaryKey = isPrimaryKey;
} }
/** /**
* 获取 是否自增(0否,1 是) * 获取 是否自增(0否,1 是)
*
* @return isIncrement * @return isIncrement
*/ */
public Integer getIsIncrement() { public Integer getIsIncrement() {
return this.isIncrement; return this.isIncrement;
} }
/** /**
* 设置 是否自增(0否,1 是) * 设置 是否自增(0否,1 是)
*
* @param isIncrement * @param isIncrement
*/ */
public void setIsIncrement(Integer isIncrement) { public void setIsIncrement(Integer isIncrement) {
this.isIncrement = isIncrement; this.isIncrement = isIncrement;
} }
/** /**
* 获取 是否必填(0否,1 是) * 获取 是否必填(0否,1 是)
*
* @return isRequired * @return isRequired
*/ */
public Integer getIsRequired() { public Integer getIsRequired() {
return this.isRequired; return this.isRequired;
} }
/** /**
* 设置 是否必填(0否,1 是) * 设置 是否必填(0否,1 是)
*
* @param isRequired * @param isRequired
*/ */
public void setIsRequired(Integer isRequired) { public void setIsRequired(Integer isRequired) {
this.isRequired = isRequired; this.isRequired = isRequired;
} }
/** /**
* 获取 是否为插入字段(0否,1 是) * 获取 是否为插入字段(0否,1 是)
*
* @return isInsert * @return isInsert
*/ */
public Integer getIsInsert() { public Integer getIsInsert() {
return this.isInsert; return this.isInsert;
} }
/** /**
* 设置 是否为插入字段(0否,1 是) * 设置 是否为插入字段(0否,1 是)
*
* @param isInsert * @param isInsert
*/ */
public void setIsInsert(Integer isInsert) { public void setIsInsert(Integer isInsert) {
this.isInsert = isInsert; this.isInsert = isInsert;
} }
/** /**
* 获取 是否编辑字段(0否,1 是) * 获取 是否编辑字段(0否,1 是)
*
* @return isEdit * @return isEdit
*/ */
public Integer getIsEdit() { public Integer getIsEdit() {
return this.isEdit; return this.isEdit;
} }
/** /**
* 设置 是否编辑字段(0否,1 是) * 设置 是否编辑字段(0否,1 是)
*
* @param isEdit * @param isEdit
*/ */
public void setIsEdit(Integer isEdit) { public void setIsEdit(Integer isEdit) {
this.isEdit = isEdit; this.isEdit = isEdit;
} }
/** /**
* 获取 是否列表字段(0否,1 是) * 获取 是否列表字段(0否,1 是)
*
* @return isList * @return isList
*/ */
public Integer getIsList() { public Integer getIsList() {
return this.isList; return this.isList;
} }
/** /**
* 设置 是否列表字段(0否,1 是) * 设置 是否列表字段(0否,1 是)
*
* @param isList * @param isList
*/ */
public void setIsList(Integer isList) { public void setIsList(Integer isList) {
this.isList = isList; this.isList = isList;
} }
/** /**
* 获取 是否查询字段(0否,1 是) * 获取 是否查询字段(0否,1 是)
*
* @return isQuery * @return isQuery
*/ */
public Integer getIsQuery() { public Integer getIsQuery() {
return this.isQuery; return this.isQuery;
} }
/** /**
* 设置 是否查询字段(0否,1 是) * 设置 是否查询字段(0否,1 是)
*
* @param isQuery * @param isQuery
*/ */
public void setIsQuery(Integer isQuery) { public void setIsQuery(Integer isQuery) {
this.isQuery = isQuery; this.isQuery = isQuery;
} }
/** /**
* 获取 显示类型(1.文本框、2.文本域、3.下拉框、4.复选框、5.单选框、6.日期控件) * 获取 显示类型(1.文本框、2.文本域、3.下拉框、4.复选框、5.单选框、6.日期控件)
*
* @return htmlType * @return htmlType
*/ */
public Integer getHtmlType() { public Integer getHtmlType() {
return this.htmlType; return this.htmlType;
} }
/** /**
* 设置 显示类型(1.文本框、2.文本域、3.下拉框、4.复选框、5.单选框、6.日期控件) * 设置 显示类型(1.文本框、2.文本域、3.下拉框、4.复选框、5.单选框、6.日期控件)
*
* @param htmlType * @param htmlType
*/ */
public void setHtmlType(Integer htmlType) { public void setHtmlType(Integer htmlType) {
this.htmlType = htmlType; this.htmlType = htmlType;
} }
/**
* 获取 默认值
* @return defaultValue
*/
public String getDefaultValue() {
return this.defaultValue;
}
/**
* 设置 默认值
* @param defaultValue
*/
public void setDefaultValue(String defaultValue) {
this.defaultValue = defaultValue;
}
/** /**
* 获取 排序 * 获取 排序
*
* @return sort * @return sort
*/ */
public Integer getSort() { public Integer getSort() {
return this.sort; return this.sort;
} }
/** /**
* 设置 排序 * 设置 排序
*
* @param sort * @param sort
*/ */
public void setSort(Integer sort) { public void setSort(Integer sort) {
this.sort = sort; this.sort = sort;
} }
/** /**
* 获取 变更时间 * 获取 变更时间
*
* @return updateTime * @return updateTime
*/ */
public Date getUpdateTime() { public Date getUpdateTime() {
return this.updateTime; return this.updateTime;
} }
/** /**
* 设置 变更时间 * 设置 变更时间
*
* @param updateTime * @param updateTime
*/ */
public void setUpdateTime(Date updateTime) { public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime; this.updateTime = updateTime;
} }
/** /**
* 获取 变更用户loginName * 获取 变更用户loginName
*
* @return updateUser * @return updateUser
*/ */
public String getUpdateUser() { public String getUpdateUser() {
return this.updateUser; return this.updateUser;
} }
/** /**
* 设置 变更用户loginName * 设置 变更用户loginName
*
* @param updateUser * @param updateUser
*/ */
public void setUpdateUser(String updateUser) { public void setUpdateUser(String updateUser) {
this.updateUser = updateUser; this.updateUser = updateUser;
} }
/** /**
* 获取 创建时间 * 获取 创建时间
*
* @return createTime * @return createTime
*/ */
public Date getCreateTime() { public Date getCreateTime() {
return this.createTime; return this.createTime;
} }
/** /**
* 设置 创建时间 * 设置 创建时间
*
* @param createTime * @param createTime
*/ */
public void setCreateTime(Date createTime) { public void setCreateTime(Date createTime) {
this.createTime = createTime; this.createTime = createTime;
} }
/** /**
* 获取 创建用户loginName * 获取 创建用户loginName
*
* @return createUser * @return createUser
*/ */
public String getCreateUser() { public String getCreateUser() {
return this.createUser; return this.createUser;
} }
/** /**
* 设置 创建用户loginName * 设置 创建用户loginName
*
* @param createUser * @param createUser
*/ */
public void setCreateUser(String createUser) { public void setCreateUser(String createUser) {
this.createUser = createUser; this.createUser = createUser;
} }
public boolean isSuperColumn() { public boolean isSuperColumn() {
return isSuperColumn(this.javaField); return isSuperColumn(this.javaField);
} }
...@@ -462,7 +404,8 @@ public class GentableColumnEntity extends BaseEntityLong { ...@@ -462,7 +404,8 @@ public class GentableColumnEntity extends BaseEntityLong {
public static boolean isSuperColumn(String javaField) { public static boolean isSuperColumn(String javaField) {
return StringUtils.equalsAnyIgnoreCase(javaField, return StringUtils.equalsAnyIgnoreCase(javaField,
// BaseEntity // BaseEntity
"createUser", "createTime", "updateUser", "updateTime","createUserId","updateUserId", "id","createUser", "createTime", "updateUser",
"updateTime","createUserId","updateUserId",
// TreeEntity // TreeEntity
"parentName", "parentId", "orderNum", "ancestors"); "parentName", "parentId", "orderNum", "ancestors");
} }
...@@ -471,7 +414,6 @@ public class GentableColumnEntity extends BaseEntityLong { ...@@ -471,7 +414,6 @@ public class GentableColumnEntity extends BaseEntityLong {
public int hashCode() { public int hashCode() {
return this.getId().hashCode(); return this.getId().hashCode();
} }
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
if (obj == null) if (obj == null)
...@@ -485,7 +427,7 @@ public class GentableColumnEntity extends BaseEntityLong { ...@@ -485,7 +427,7 @@ public class GentableColumnEntity extends BaseEntityLong {
return false; return false;
} }
public String toString() { public String toString(){
StringBuilder sb = new StringBuilder(""); StringBuilder sb = new StringBuilder("");
sb sb
.append(",id:").append(getId()) .append(",id:").append(getId())
...@@ -503,6 +445,7 @@ public class GentableColumnEntity extends BaseEntityLong { ...@@ -503,6 +445,7 @@ public class GentableColumnEntity extends BaseEntityLong {
.append(",isList:").append(getIsList()) .append(",isList:").append(getIsList())
.append(",isQuery:").append(getIsQuery()) .append(",isQuery:").append(getIsQuery())
.append(",htmlType:").append(getHtmlType()) .append(",htmlType:").append(getHtmlType())
.append(",defaultValue:").append(getDefaultValue())
.append(",sort:").append(getSort()) .append(",sort:").append(getSort())
.append(",updateTime:").append(getUpdateTime()) .append(",updateTime:").append(getUpdateTime())
.append(",updateUser:").append(getUpdateUser()) .append(",updateUser:").append(getUpdateUser())
...@@ -512,7 +455,7 @@ public class GentableColumnEntity extends BaseEntityLong { ...@@ -512,7 +455,7 @@ public class GentableColumnEntity extends BaseEntityLong {
return sb.toString(); return sb.toString();
} }
public void initAttrValue() { public void initAttrValue(){
this.tableId = null; this.tableId = null;
this.columnName = null; this.columnName = null;
this.columnComment = null; this.columnComment = null;
...@@ -527,6 +470,7 @@ public class GentableColumnEntity extends BaseEntityLong { ...@@ -527,6 +470,7 @@ public class GentableColumnEntity extends BaseEntityLong {
this.isList = null; this.isList = null;
this.isQuery = null; this.isQuery = null;
this.htmlType = null; this.htmlType = null;
this.defaultValue = null;
this.sort = null; this.sort = null;
this.updateTime = null; this.updateTime = null;
this.updateUser = null; this.updateUser = null;
......
package com.mortals.xhx.base.system.gentable.model;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.common.utils.StringUtils;
import java.util.Date;
/**
* Description:GentableColumn
* date: 2021-9-28 10:10:15
*/
public class GentableColumnEntityExt extends BaseEntityLong {
}
\ No newline at end of file
...@@ -28,6 +28,15 @@ public class GentableEntityExt extends BaseEntityLong { ...@@ -28,6 +28,15 @@ public class GentableEntityExt extends BaseEntityLong {
*/ */
private List<GentableColumnEntity> columns; private List<GentableColumnEntity> columns;
public static boolean isSuperColumn(String javaField) {
return StringUtils.equalsAnyIgnoreCase(javaField,
// BaseEntity
"id","createUser", "createTime", "updateUser",
"updateTime","createUserId","updateUserId",
// TreeEntity
"parentName", "parentId", "orderNum", "ancestors");
}
} }
\ No newline at end of file
...@@ -7,6 +7,7 @@ import com.mortals.xhx.base.system.gentable.model.GentableEntity; ...@@ -7,6 +7,7 @@ import com.mortals.xhx.base.system.gentable.model.GentableEntity;
import com.mortals.xhx.base.system.gentable.model.GentableQuery; import com.mortals.xhx.base.system.gentable.model.GentableQuery;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* <p>Title: 代码生成业务表</p> * <p>Title: 代码生成业务表</p>
...@@ -56,6 +57,13 @@ public interface GentableService extends ICRUDService<GentableEntity,Long> { ...@@ -56,6 +57,13 @@ public interface GentableService extends ICRUDService<GentableEntity,Long> {
void validateEdit(GentableEntity genTable); void validateEdit(GentableEntity genTable);
/**
* 预览代码
*
* @param id 表Id
* @return 预览数据列表
*/
Map<String, String> previewCode(Long id);
/** /**
* 生成代码(单表生成下载方式) * 生成代码(单表生成下载方式)
......
...@@ -17,9 +17,13 @@ import com.mortals.xhx.base.system.gentable.service.GentableService; ...@@ -17,9 +17,13 @@ import com.mortals.xhx.base.system.gentable.service.GentableService;
import com.mortals.xhx.common.code.CacheServiceTypeEnum; import com.mortals.xhx.common.code.CacheServiceTypeEnum;
import com.mortals.xhx.common.code.DividedTableTypeEnum; import com.mortals.xhx.common.code.DividedTableTypeEnum;
import com.mortals.xhx.common.code.YesNoEnum; import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.key.Constant;
import com.mortals.xhx.common.key.GenConstants; import com.mortals.xhx.common.key.GenConstants;
import com.mortals.xhx.common.utils.FreeMarkerUtils;
import com.mortals.xhx.common.utils.GenUtils; import com.mortals.xhx.common.utils.GenUtils;
import com.mortals.xhx.common.utils.StringUtils; import com.mortals.xhx.common.utils.StringUtils;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -28,9 +32,7 @@ import org.springframework.util.ObjectUtils; ...@@ -28,9 +32,7 @@ import org.springframework.util.ObjectUtils;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.StringWriter; import java.io.StringWriter;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
...@@ -114,14 +116,53 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge ...@@ -114,14 +116,53 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
} }
} }
@Override
public Map<String, String> previewCode(Long id) {
Map<String, String> dataMap = new LinkedHashMap<>();
// 查询表信息
GentableEntity gentableEntity = this.get(id);
List<GentableColumnEntity> columnEntities = this.gentableColumnService.find(new GentableColumnQuery().tableId(gentableEntity.getId()));
gentableEntity.setColumns(columnEntities);
// 设置主子表信息
setSubTable(gentableEntity);
// 设置主键列信息
setPkColumn(gentableEntity);
//初始化freeMarkers
FreeMarkerUtils.initFreeMarker();
//生成模板基础数据
Map data = FreeMarkerUtils.prepareSetFreeMarkerData(gentableEntity);
//输出合成模板
//Template template = FreeMarkerUtils.getTemplate("entity.ftl");
// Template template = FreeMarkerUtils.getTemplate("service.ftl");
// 获取模板列表
List<String> templates = FreeMarkerUtils.getTemplateList(gentableEntity.getTplCategory());
for (String temp : templates) {
try {
// 渲染模板
StringWriter sw = new StringWriter();
Template template = FreeMarkerUtils.getTemplate(temp);
template.process(data, sw);
dataMap.put(temp, sw.toString());
} catch (Exception e) {
log.error("异常", e);
}
}
return dataMap;
}
@Override @Override
protected void updateAfter(GentableEntity entity, Context context) throws AppException { protected void updateAfter(GentableEntity entity, Context context) throws AppException {
if (!ObjectUtils.isEmpty(entity.getColumns())) { if (!ObjectUtils.isEmpty(entity.getColumns())) {
gentableColumnService.update(entity.getColumns()); gentableColumnService.update(entity.getColumns());
} }
super.updateAfter(entity, context); super.updateAfter(entity, context);
} }
...@@ -142,42 +183,39 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge ...@@ -142,42 +183,39 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
private void generatorCode(String tableName, ZipOutputStream zip) { private void generatorCode(String tableName, ZipOutputStream zip) {
GentableEntity gentableEntity = this.selectOne(new GentableQuery().tableName(tableName)); GentableEntity gentableEntity = this.selectOne(new GentableQuery().tableName(tableName));
if (!ObjectUtils.isEmpty(gentableEntity)) { if (!ObjectUtils.isEmpty(gentableEntity)) {
List<GentableColumnEntity> columnEntities = this.gentableColumnService.find(new GentableColumnQuery().tableId(gentableEntity.getId()));
gentableEntity.setColumns(columnEntities);
// 设置主子表信息 // 设置主子表信息
setSubTable(gentableEntity); setSubTable(gentableEntity);
// 设置主键列信息 // 设置主键列信息
setPkColumn(gentableEntity); setPkColumn(gentableEntity);
//初始化freeMarkers
FreeMarkerUtils.initFreeMarker();
//通过模板生成不同的业务类 //生成模板基础数据
Map data = FreeMarkerUtils.prepareSetFreeMarkerData(gentableEntity);
//输出合成模板
//Template template = FreeMarkerUtils.getTemplate("entity.ftl");
Template template = FreeMarkerUtils.getTemplate("service.ftl");
StringWriter sw = new StringWriter();
// VelocityInitializer.initVelocity(); //通过模板生成不同的业务类
// try {
// VelocityContext context = VelocityUtils.prepareContext(table); template.process(data, sw);
// System.out.println(sw.toString());
// // 获取模板列表 // 添加到zip
// List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory()); zip.putNextEntry(new ZipEntry(FreeMarkerUtils.getFileName(template.getName(), gentableEntity)));
// for (String template : templates) { IOUtils.write(sw.toString(), zip, Constant.UTF8);
// // 渲染模板 IOUtils.closeQuietly(sw);
// StringWriter sw = new StringWriter(); zip.flush();
// Template tpl = Velocity.getTemplate(template, Constants.UTF8); zip.closeEntry();
// tpl.merge(context, sw); } catch (Exception e) {
// try { log.error("渲染模板失败,表名:" + gentableEntity.getTableName(), e);
// // 添加到zip }
// zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table)));
// IOUtils.write(sw.toString(), zip, Constants.UTF8);
// IOUtils.closeQuietly(sw);
// zip.flush();
// zip.closeEntry();
// } catch (IOException e) {
// log.error("渲染模板失败,表名:" + table.getTableName(), e);
// }
// }
} }
} }
...@@ -220,8 +258,19 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge ...@@ -220,8 +258,19 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
if (StringUtils.isNotEmpty(subTableName)) { if (StringUtils.isNotEmpty(subTableName)) {
GentableEntity gentableEntity = this.selectOne(new GentableQuery().tableName(subTableName)); GentableEntity gentableEntity = this.selectOne(new GentableQuery().tableName(subTableName));
if (!ObjectUtils.isEmpty(gentableEntity)) { if (!ObjectUtils.isEmpty(gentableEntity)) {
List<GentableColumnEntity> columnEntities = gentableColumnService.find(new GentableColumnQuery().tableId(gentableEntity.getId()));
gentableEntity.setColumns(columnEntities);
setPkColumn(gentableEntity);
table.setSubTable(gentableEntity); table.setSubTable(gentableEntity);
} }
} }
} }
@Override
protected void removeAfter(Long[] ids, Context context, int result) throws AppException {
Long[] colIds = gentableColumnService.find(new GentableColumnQuery().tableIdList(Arrays.asList(ids))).stream().map(GentableColumnEntity::getId).toArray(Long[]::new);
gentableColumnService.remove(colIds, context);
super.removeAfter(ids, context, result);
}
} }
\ No newline at end of file
...@@ -10,6 +10,7 @@ import com.mortals.xhx.base.system.gentable.model.GentableEntity; ...@@ -10,6 +10,7 @@ import com.mortals.xhx.base.system.gentable.model.GentableEntity;
import com.mortals.xhx.base.system.gentable.service.GentableColumnService; import com.mortals.xhx.base.system.gentable.service.GentableColumnService;
import com.mortals.xhx.base.system.gentable.service.GentableService; import com.mortals.xhx.base.system.gentable.service.GentableService;
import com.mortals.xhx.common.code.*; import com.mortals.xhx.common.code.*;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -18,6 +19,7 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -18,6 +19,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -133,26 +135,63 @@ public class GentableController extends BaseCRUDJsonMappingController<GentableSe ...@@ -133,26 +135,63 @@ public class GentableController extends BaseCRUDJsonMappingController<GentableSe
/** /**
* 通过表名生成代码 * 通过表名生成代码
*
* @param tableName * @param tableName
* @return * @return
*/ */
@PostMapping("/genCode") @PostMapping("/genCode")
public String genCode(@RequestParam(value = "tableName") String tableName) { public void genCode(@RequestParam(value = "tableName") String tableName) {
Map<String, Object> model = new HashMap<>(); Map<String, Object> model = new HashMap<>();
JSONObject ret = new JSONObject(); JSONObject ret = new JSONObject();
String busiDesc = "生成单表代码"; String busiDesc = "生成单表代码";
try {
byte[] bytes = this.service.downloadCode(tableName);
genCode(response, bytes);
recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) {
this.doException(request, busiDesc, model, e);
}
}
/**
* 预览代码
*
* @param id
* @return
*/
@PostMapping("/preview")
public String preview(@RequestParam(value = "id") Long id) {
JSONObject ret = new JSONObject();
String busiDesc = "预览代码";
int code = VALUE_RESULT_SUCCESS; int code = VALUE_RESULT_SUCCESS;
try { try {
Map<String, String> model = this.service.previewCode(id);
ret.put(KEY_RESULT_DATA, model);
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) { } catch (Exception e) {
code = VALUE_RESULT_FAILURE; code = VALUE_RESULT_FAILURE;
this.doException(request, busiDesc, model, e);
} }
ret.put(KEY_RESULT_CODE, code); ret.put(KEY_RESULT_CODE, code);
ret.put(KEY_RESULT_DATA, model);
return ret.toJSONString(); return ret.toJSONString();
} }
/**
* 生成zip文件
*/
private void genCode(HttpServletResponse response, byte[] data) throws IOException {
response.reset();
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-Disposition", "attachment; filename=\"ruoyi.zip\"");
response.addHeader("Content-Length", "" + data.length);
response.setContentType("application/octet-stream; charset=UTF-8");
IOUtils.write(data, response.getOutputStream());
}
} }
\ No newline at end of file
...@@ -2,6 +2,21 @@ package com.mortals.xhx.common.key; ...@@ -2,6 +2,21 @@ package com.mortals.xhx.common.key;
public final class Constant { public final class Constant {
/**
* UTF-8 字符集
*/
public static final String UTF8 = "UTF-8";
/**
* GBK 字符集
*/
public static final String GBK = "GBK";
/**
* http请求
*/
public static final String HTTP = "http://";
/** 基础代码版本 Z-BASE.MANAGER-S1.0.0 */ /** 基础代码版本 Z-BASE.MANAGER-S1.0.0 */
public final static String BASEMANAGER_VERSION = "Z-BASE.MANAGER-S1.0.0"; public final static String BASEMANAGER_VERSION = "Z-BASE.MANAGER-S1.0.0";
......
...@@ -6,110 +6,177 @@ package com.mortals.xhx.common.key; ...@@ -6,110 +6,177 @@ package com.mortals.xhx.common.key;
* @author: zxfei * @author: zxfei
* @date: 2021/9/28 15:43 * @date: 2021/9/28 15:43
*/ */
public class GenConstants public class GenConstants {
{ /**
/** 单表(增删改查) */ * 单表(增删改查)
*/
public static final String TPL_CRUD = "crud"; public static final String TPL_CRUD = "crud";
/** 树表(增删改查) */ /**
* 树表(增删改查)
*/
public static final String TPL_TREE = "tree"; public static final String TPL_TREE = "tree";
/** 主子表(增删改查) */ /**
* 主子表(增删改查)
*/
public static final String TPL_SUB = "sub"; public static final String TPL_SUB = "sub";
/** 树编码字段 */ /**
* 树编码字段
*/
public static final String TREE_CODE = "treeCode"; public static final String TREE_CODE = "treeCode";
/** 树父编码字段 */ /**
* 树父编码字段
*/
public static final String TREE_PARENT_CODE = "treeParentCode"; public static final String TREE_PARENT_CODE = "treeParentCode";
/** 树名称字段 */ /**
* 树名称字段
*/
public static final String TREE_NAME = "treeName"; public static final String TREE_NAME = "treeName";
/** 上级菜单ID字段 */ /**
* 上级菜单ID字段
*/
public static final String PARENT_MENU_ID = "parentMenuId"; public static final String PARENT_MENU_ID = "parentMenuId";
/** 上级菜单名称字段 */ /**
* 上级菜单名称字段
*/
public static final String PARENT_MENU_NAME = "parentMenuName"; public static final String PARENT_MENU_NAME = "parentMenuName";
/** 数据库字符串类型 */ /**
public static final String[] COLUMNTYPE_STR = { "char", "varchar", "nvarchar", "varchar2" }; * 数据库字符串类型
*/
/** 数据库文本类型 */ public static final String[] COLUMNTYPE_STR = {"char", "varchar", "nvarchar", "varchar2"};
public static final String[] COLUMNTYPE_TEXT = { "tinytext", "text", "mediumtext", "longtext" };
/**
/** 数据库时间类型 */ * 数据库文本类型
public static final String[] COLUMNTYPE_TIME = { "datetime", "time", "date", "timestamp" }; */
public static final String[] COLUMNTYPE_TEXT = {"tinytext", "text", "mediumtext", "longtext"};
/** 数据库数字类型 */
public static final String[] COLUMNTYPE_NUMBER = { "tinyint", "smallint", "mediumint", "int", "number", "integer", /**
"bit", "bigint", "float", "double", "decimal" }; * 数据库时间类型
*/
/** 页面不需要编辑字段 */ public static final String[] COLUMNTYPE_TIME = {"datetime", "time", "date", "timestamp"};
public static final String[] COLUMNNAME_NOT_EDIT = { "id", "create_by", "create_time", "del_flag" };
/**
/** 页面不需要显示的列表字段 */ * 数据库数字类型
public static final String[] COLUMNNAME_NOT_LIST = { "id", "create_by", "create_time", "del_flag", "update_by", */
"update_time" }; public static final String[] COLUMNTYPE_NUMBER = {"tinyint", "smallint", "mediumint", "int", "number", "integer",
"bit", "bigint", "float", "double", "decimal"};
/** 页面不需要查询字段 */
public static final String[] COLUMNNAME_NOT_QUERY = { "id", "create_by", "create_time", "del_flag", "update_by", /**
"update_time", "remark" }; * 页面不需要编辑字段
*/
/** Entity基类字段 */ public static final String[] COLUMNNAME_NOT_EDIT = {"id", "create_by", "create_time", "del_flag"};
public static final String[] BASE_ENTITY = { "createBy", "createTime", "updateBy", "updateTime", "remark" };
/**
/** Tree基类字段 */ * 页面不需要显示的列表字段
public static final String[] TREE_ENTITY = { "parentName", "parentId", "orderNum", "ancestors", "children" }; */
public static final String[] COLUMNNAME_NOT_LIST = {"id", "create_by", "create_time", "del_flag", "update_by",
/** 文本框 */ "update_time"};
/**
* 页面不需要查询字段
*/
public static final String[] COLUMNNAME_NOT_QUERY = {"id", "create_by", "create_time", "del_flag", "update_by",
"update_time", "remark"};
/**
* Entity基类字段
*/
public static final String[] BASE_ENTITY = {"createUserId", "createUser", "createTime", "updateUserId", "updateUser", "updateTime", "id"};
/**
* Tree基类字段
*/
public static final String[] TREE_ENTITY = {"parentName", "parentId", "orderNum", "ancestors", "children"};
/**
* 文本框
*/
public static final String HTML_INPUT = "input"; public static final String HTML_INPUT = "input";
/** 文本域 */ /**
* 文本域
*/
public static final String HTML_TEXTAREA = "textarea"; public static final String HTML_TEXTAREA = "textarea";
/** 下拉框 */ /**
* 下拉框
*/
public static final String HTML_SELECT = "select"; public static final String HTML_SELECT = "select";
/** 单选框 */ /**
* 单选框
*/
public static final String HTML_RADIO = "radio"; public static final String HTML_RADIO = "radio";
/** 复选框 */ /**
* 复选框
*/
public static final String HTML_CHECKBOX = "checkbox"; public static final String HTML_CHECKBOX = "checkbox";
/** 日期控件 */ /**
* 日期控件
*/
public static final String HTML_DATETIME = "datetime"; public static final String HTML_DATETIME = "datetime";
/** 图片上传控件 */ /**
* 图片上传控件
*/
public static final String HTML_IMAGE_UPLOAD = "imageUpload"; public static final String HTML_IMAGE_UPLOAD = "imageUpload";
/** 文件上传控件 */ /**
* 文件上传控件
*/
public static final String HTML_FILE_UPLOAD = "fileUpload"; public static final String HTML_FILE_UPLOAD = "fileUpload";
/** 富文本控件 */ /**
* 富文本控件
*/
public static final String HTML_EDITOR = "editor"; public static final String HTML_EDITOR = "editor";
/** 字符串类型 */ /**
* 字符串类型
*/
public static final String TYPE_STRING = "String"; public static final String TYPE_STRING = "String";
/** 整型 */ /**
* 整型
*/
public static final String TYPE_INTEGER = "Integer"; public static final String TYPE_INTEGER = "Integer";
/** 长整型 */ /**
* 长整型
*/
public static final String TYPE_LONG = "Long"; public static final String TYPE_LONG = "Long";
/** 浮点型 */ /**
* 浮点型
*/
public static final String TYPE_DOUBLE = "Double"; public static final String TYPE_DOUBLE = "Double";
/** 高精度计算类型 */ /**
* 高精度计算类型
*/
public static final String TYPE_BIGDECIMAL = "BigDecimal"; public static final String TYPE_BIGDECIMAL = "BigDecimal";
/** 时间类型 */ /**
* 时间类型
*/
public static final String TYPE_DATE = "Date"; public static final String TYPE_DATE = "Date";
/** 模糊查询 */ /**
* 模糊查询
*/
public static final String QUERY_LIKE = "LIKE"; public static final String QUERY_LIKE = "LIKE";
/** 需要 */ /**
* 需要
*/
public static final Integer REQUIRE = 1; public static final Integer REQUIRE = 1;
} }
package com.mortals.xhx.common.utils; package com.mortals.xhx.common.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.util.DateUtils; import com.mortals.framework.util.DateUtils;
import com.mortals.xhx.ManagerApplication;
import com.mortals.xhx.base.system.gentable.model.GentableColumnEntity; import com.mortals.xhx.base.system.gentable.model.GentableColumnEntity;
import com.mortals.xhx.base.system.gentable.model.GentableEntity; import com.mortals.xhx.base.system.gentable.model.GentableEntity;
import com.mortals.xhx.common.code.YesNoEnum; import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.key.GenConstants; import com.mortals.xhx.common.key.GenConstants;
import freemarker.cache.ClassTemplateLoader;
import freemarker.template.Configuration; import freemarker.template.Configuration;
import freemarker.template.Template; import freemarker.template.Template;
import freemarker.template.TemplateException; import freemarker.template.TemplateException;
import freemarker.template.TemplateExceptionHandler; import freemarker.template.TemplateExceptionHandler;
import lombok.SneakyThrows;
import java.io.File; import java.io.File;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.HashMap; import java.util.*;
import java.util.HashSet; import java.util.stream.Collectors;
import java.util.List;
import java.util.Map; import static com.mortals.xhx.common.utils.GenUtils.getBusinessName;
public class FreeMarkerUtils { public class FreeMarkerUtils {
...@@ -43,14 +47,22 @@ public class FreeMarkerUtils { ...@@ -43,14 +47,22 @@ public class FreeMarkerUtils {
/** /**
* 初始化freeMaker方法 * 初始化freeMaker方法
*/ */
@SneakyThrows
public static void initFreeMarker() { public static void initFreeMarker() {
//初始化模板引擎 //初始化模板引擎
cfg = new Configuration(Configuration.VERSION_2_3_29); cfg = new Configuration(Configuration.VERSION_2_3_29);
ClassLoader loader = FreeMarkerUtils.class.getClassLoader();
//指定模板文件存放的地方 //指定模板文件存放的地方
cfg.setClassLoaderForTemplateLoading(FreeMarkerUtils.class.getClassLoader(), "/template/java"); cfg.setDirectoryForTemplateLoading(new File(System.getProperty("user.dir") + "\\government-manager\\target\\classes\\template\\java"));
cfg.setClassLoaderForTemplateLoading(FreeMarkerUtils.class.getClassLoader(), "/template/sql"); //cfg.setDirectoryForTemplateLoading(new File(System.getProperty("user.dir") + "\\government-manager\\target\\classes\\template\\xml\\"));
cfg.setClassLoaderForTemplateLoading(FreeMarkerUtils.class.getClassLoader(), "/template/vue"); //cfg.set
cfg.setClassLoaderForTemplateLoading(FreeMarkerUtils.class.getClassLoader(), "/template/xml");
// cfg.setTemplateLoader(new ClassTemplateLoader(FreeMarkerUtils.class,"/template/java/entity.ftl"));
// cfg.setClassForTemplateLoading(FreeMarkerUtils.class, "/template/");
// cfg.setClassForTemplateLoading(FreeMarkerUtils.class, "\\template\\sql");
//cfg.setClassForTemplateLoading(FreeMarkerUtils.class, "\\template\\vue");
//cfg.setClassForTemplateLoading(FreeMarkerUtils.class, "\\template\\xml");
//设置字符编码集 //设置字符编码集
cfg.setDefaultEncoding("UTF-8"); cfg.setDefaultEncoding("UTF-8");
//设置异常的处理方式 //设置异常的处理方式
...@@ -60,6 +72,34 @@ public class FreeMarkerUtils { ...@@ -60,6 +72,34 @@ public class FreeMarkerUtils {
} }
/**
* 获取模板信息
*
* @return 模板列表
*/
public static List<String> getTemplateList(String tplCategory) {
List<String> templates = new ArrayList<String>();
templates.add("entity.java.ftl");
templates.add("entityQuery.java.ftl");
templates.add("dao.java.ftl");
templates.add("daoImpl.java.ftl");
templates.add("service.java.ftl");
templates.add("serviceImpl.java.ftl");
templates.add("web.java.ftl");
templates.add("webForm.java.ftl");
templates.add("sqlMap.xml.ftl");
if (GenConstants.TPL_CRUD.equals(tplCategory)) {
// templates.add("vm/vue/index.vue.vm");
} else if (GenConstants.TPL_TREE.equals(tplCategory)) {
//templates.add("vm/vue/index-tree.vue.vm");
} else if (GenConstants.TPL_SUB.equals(tplCategory)) {
//templates.add("vm/vue/index.vue.vm");
//templates.add("vm/java/sub-domain.java.vm");
}
return templates;
}
// 获取模板对象 // 获取模板对象
public static Template getTemplate(String templateName) { public static Template getTemplate(String templateName) {
try { try {
...@@ -86,7 +126,8 @@ public class FreeMarkerUtils { ...@@ -86,7 +126,8 @@ public class FreeMarkerUtils {
data.put("tplCategory", genTable.getTplCategory()); data.put("tplCategory", genTable.getTplCategory());
data.put("tableName", genTable.getTableName()); data.put("tableName", genTable.getTableName());
data.put("functionName", StringUtils.isNotEmpty(functionName) ? functionName : "【请填写功能名称】"); data.put("tableComment", genTable.getTableComment());
data.put("functionName", StringUtils.isNotEmpty(functionName) ? functionName : genTable.getTableComment());
data.put("ClassName", genTable.getClassName()); data.put("ClassName", genTable.getClassName());
data.put("className", StringUtils.uncapitalize(genTable.getClassName())); data.put("className", StringUtils.uncapitalize(genTable.getClassName()));
data.put("moduleName", genTable.getModuleName()); data.put("moduleName", genTable.getModuleName());
...@@ -99,13 +140,18 @@ public class FreeMarkerUtils { ...@@ -99,13 +140,18 @@ public class FreeMarkerUtils {
data.put("pkColumn", genTable.getPkColumn()); data.put("pkColumn", genTable.getPkColumn());
data.put("importList", getImportList(genTable)); data.put("importList", getImportList(genTable));
data.put("columns", genTable.getColumns()); data.put("columns", genTable.getColumns());
data.put("table", genTable);
String RequestMapping = Arrays.stream(getBusinessName(genTable.getTableName()).split("\\.")).collect(Collectors.joining("/"));
data.put("RequestMapping", RequestMapping);
if (GenConstants.TPL_TREE.equals(tplCategory)) { if (GenConstants.TPL_TREE.equals(tplCategory)) {
setTreeFreeMarkerData(data, genTable); setTreeFreeMarkerData(data, genTable);
} }
if (GenConstants.TPL_SUB.equals(tplCategory)) { if (GenConstants.TPL_SUB.equals(tplCategory)) {
setSubFreeMarkerData(data, genTable); setSubFreeMarkerData(data, genTable);
} }
// System.out.println(JSON.toJSONString(data));
return data; return data;
} }
...@@ -237,7 +283,7 @@ public class FreeMarkerUtils { ...@@ -237,7 +283,7 @@ public class FreeMarkerUtils {
for (GentableColumnEntity column : columns) { for (GentableColumnEntity column : columns) {
if (!column.isSuperColumn() && GenConstants.TYPE_DATE.equals(column.getJavaType())) { if (!column.isSuperColumn() && GenConstants.TYPE_DATE.equals(column.getJavaType())) {
importList.add("java.util.Date"); importList.add("java.util.Date");
importList.add("com.fasterxml.jackson.annotation.JsonFormat"); //importList.add("com.fasterxml.jackson.annotation.JsonFormat");
} else if (!column.isSuperColumn() && GenConstants.TYPE_BIGDECIMAL.equals(column.getJavaType())) { } else if (!column.isSuperColumn() && GenConstants.TYPE_BIGDECIMAL.equals(column.getJavaType())) {
importList.add("java.math.BigDecimal"); importList.add("java.math.BigDecimal");
} }
...@@ -268,6 +314,9 @@ public class FreeMarkerUtils { ...@@ -268,6 +314,9 @@ public class FreeMarkerUtils {
//实体类输出路径 //实体类输出路径
if (template.contains("entity.ftl")) { if (template.contains("entity.ftl")) {
fileName = StringUtils.format("{}/{}/model/{}Entity.java", javaPath, businessName, className); fileName = StringUtils.format("{}/{}/model/{}Entity.java", javaPath, businessName, className);
} else if (template.contains("entityQuery.ftl")) {
fileName = StringUtils.format("{}/{}/model/{}Query.java", javaPath, businessName, className);
} }
......
package com.mortals.xhx.common.utils; package com.mortals.xhx.common.utils;
import cn.hutool.core.util.StrUtil;
import com.mortals.xhx.base.framework.config.GenConfig; import com.mortals.xhx.base.framework.config.GenConfig;
import com.mortals.xhx.base.system.gentable.model.GentableColumnEntity; import com.mortals.xhx.base.system.gentable.model.GentableColumnEntity;
import com.mortals.xhx.base.system.gentable.model.GentableEntity; import com.mortals.xhx.base.system.gentable.model.GentableEntity;
...@@ -11,6 +12,7 @@ import org.apache.commons.lang3.RegExUtils; ...@@ -11,6 +12,7 @@ import org.apache.commons.lang3.RegExUtils;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.stream.Collectors;
/** /**
* 代码生成器 工具类 * 代码生成器 工具类
...@@ -43,7 +45,7 @@ public class GenUtils { ...@@ -43,7 +45,7 @@ public class GenUtils {
column.setCreateUser(table.getCreateUser()); column.setCreateUser(table.getCreateUser());
column.setCreateTime(new Date()); column.setCreateTime(new Date());
// 设置java字段名 // 设置java字段名
column.setJavaField(StringUtils.toCamelCase(columnName)); column.setJavaField(StrUtil.toCamelCase(columnName));
// 设置默认类型 // 设置默认类型
column.setJavaType(GenConstants.TYPE_STRING); column.setJavaType(GenConstants.TYPE_STRING);
...@@ -144,9 +146,19 @@ public class GenUtils { ...@@ -144,9 +146,19 @@ public class GenUtils {
* @return 业务名 * @return 业务名
*/ */
public static String getBusinessName(String tableName) { public static String getBusinessName(String tableName) {
int lastIndex = tableName.lastIndexOf("_"); //替换前缀
int nameLength = tableName.length(); boolean autoRemovePre = GenConfig.getAutoRemovePre();
String businessName = StringUtils.substring(tableName, lastIndex + 1, nameLength); String tablePrefix = GenConfig.getTablePrefix();
if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix)) {
String[] searchList = StringUtils.split(tablePrefix, ",");
tableName = replaceFirst(tableName, searchList);
}
//分割拼接
String businessName = Arrays.stream(tableName.split("_")).collect(Collectors.joining("."));
// int lastIndex = tableName.lastIndexOf("_");
// int nameLength = tableName.length();
// String businessName = StringUtils.substring(tableName, lastIndex + 1, nameLength);
return businessName; return businessName;
} }
...@@ -222,4 +234,15 @@ public class GenUtils { ...@@ -222,4 +234,15 @@ public class GenUtils {
return 0; return 0;
} }
} }
public static void main(String[] args) {
String name="aaa";
System.out.println(Arrays.stream(name.split("_")).collect(Collectors.joining(".")));
System.out.println(Arrays.stream("data".split(".")).collect(Collectors.joining("/")));
}
} }
...@@ -9,179 +9,164 @@ import java.util.*; ...@@ -9,179 +9,164 @@ import java.util.*;
* @author: zxfei * @author: zxfei
* @date: 2021/9/28 15:51 * @date: 2021/9/28 15:51
*/ */
public class StringUtils extends org.apache.commons.lang3.StringUtils public class StringUtils extends org.apache.commons.lang3.StringUtils {
{ /**
/** 空字符串 */ * 空字符串
*/
private static final String NULLSTR = ""; private static final String NULLSTR = "";
/** 下划线 */ /**
* 下划线
*/
private static final char SEPARATOR = '_'; private static final char SEPARATOR = '_';
/** /**
* 获取参数不为空值 * 获取参数不为空值
* *
* @param value defaultValue 要判断的value * @param value defaultValue 要判断的value
* @return value 返回值 * @return value 返回值
*/ */
public static <T> T nvl(T value, T defaultValue) public static <T> T nvl(T value, T defaultValue) {
{
return value != null ? value : defaultValue; return value != null ? value : defaultValue;
} }
/** /**
* * 判断一个Collection是否为空, 包含List,Set,Queue * * 判断一个Collection是否为空, 包含List,Set,Queue
* *
* @param coll 要判断的Collection * @param coll 要判断的Collection
* @return true:为空 false:非空 * @return true:为空 false:非空
*/ */
public static boolean isEmpty(Collection<?> coll) public static boolean isEmpty(Collection<?> coll) {
{
return isNull(coll) || coll.isEmpty(); return isNull(coll) || coll.isEmpty();
} }
/** /**
* * 判断一个Collection是否非空,包含List,Set,Queue * * 判断一个Collection是否非空,包含List,Set,Queue
* *
* @param coll 要判断的Collection * @param coll 要判断的Collection
* @return true:非空 false:空 * @return true:非空 false:空
*/ */
public static boolean isNotEmpty(Collection<?> coll) public static boolean isNotEmpty(Collection<?> coll) {
{
return !isEmpty(coll); return !isEmpty(coll);
} }
/** /**
* * 判断一个对象数组是否为空 * * 判断一个对象数组是否为空
* *
* @param objects 要判断的对象数组 * @param objects 要判断的对象数组
** @return true:为空 false:非空 * * @return true:为空 false:非空
*/ */
public static boolean isEmpty(Object[] objects) public static boolean isEmpty(Object[] objects) {
{
return isNull(objects) || (objects.length == 0); return isNull(objects) || (objects.length == 0);
} }
/** /**
* * 判断一个对象数组是否非空 * * 判断一个对象数组是否非空
* *
* @param objects 要判断的对象数组 * @param objects 要判断的对象数组
* @return true:非空 false:空 * @return true:非空 false:空
*/ */
public static boolean isNotEmpty(Object[] objects) public static boolean isNotEmpty(Object[] objects) {
{
return !isEmpty(objects); return !isEmpty(objects);
} }
/** /**
* * 判断一个Map是否为空 * * 判断一个Map是否为空
* *
* @param map 要判断的Map * @param map 要判断的Map
* @return true:为空 false:非空 * @return true:为空 false:非空
*/ */
public static boolean isEmpty(Map<?, ?> map) public static boolean isEmpty(Map<?, ?> map) {
{
return isNull(map) || map.isEmpty(); return isNull(map) || map.isEmpty();
} }
/** /**
* * 判断一个Map是否为空 * * 判断一个Map是否为空
* *
* @param map 要判断的Map * @param map 要判断的Map
* @return true:非空 false:空 * @return true:非空 false:空
*/ */
public static boolean isNotEmpty(Map<?, ?> map) public static boolean isNotEmpty(Map<?, ?> map) {
{
return !isEmpty(map); return !isEmpty(map);
} }
/** /**
* * 判断一个字符串是否为空串 * * 判断一个字符串是否为空串
* *
* @param str String * @param str String
* @return true:为空 false:非空 * @return true:为空 false:非空
*/ */
public static boolean isEmpty(String str) public static boolean isEmpty(String str) {
{
return isNull(str) || NULLSTR.equals(str.trim()); return isNull(str) || NULLSTR.equals(str.trim());
} }
/** /**
* * 判断一个字符串是否为非空串 * * 判断一个字符串是否为非空串
* *
* @param str String * @param str String
* @return true:非空串 false:空串 * @return true:非空串 false:空串
*/ */
public static boolean isNotEmpty(String str) public static boolean isNotEmpty(String str) {
{
return !isEmpty(str); return !isEmpty(str);
} }
/** /**
* * 判断一个对象是否为空 * * 判断一个对象是否为空
* *
* @param object Object * @param object Object
* @return true:为空 false:非空 * @return true:为空 false:非空
*/ */
public static boolean isNull(Object object) public static boolean isNull(Object object) {
{
return object == null; return object == null;
} }
/** /**
* * 判断一个对象是否非空 * * 判断一个对象是否非空
* *
* @param object Object * @param object Object
* @return true:非空 false:空 * @return true:非空 false:空
*/ */
public static boolean isNotNull(Object object) public static boolean isNotNull(Object object) {
{
return !isNull(object); return !isNull(object);
} }
/** /**
* * 判断一个对象是否是数组类型(Java基本型别的数组) * * 判断一个对象是否是数组类型(Java基本型别的数组)
* *
* @param object 对象 * @param object 对象
* @return true:是数组 false:不是数组 * @return true:是数组 false:不是数组
*/ */
public static boolean isArray(Object object) public static boolean isArray(Object object) {
{
return isNotNull(object) && object.getClass().isArray(); return isNotNull(object) && object.getClass().isArray();
} }
/** /**
* 去空格 * 去空格
*/ */
public static String trim(String str) public static String trim(String str) {
{
return (str == null ? "" : str.trim()); return (str == null ? "" : str.trim());
} }
/** /**
* 截取字符串 * 截取字符串
* *
* @param str 字符串 * @param str 字符串
* @param start 开始 * @param start 开始
* @return 结果 * @return 结果
*/ */
public static String substring(final String str, int start) public static String substring(final String str, int start) {
{ if (str == null) {
if (str == null)
{
return NULLSTR; return NULLSTR;
} }
if (start < 0) if (start < 0) {
{
start = str.length() + start; start = str.length() + start;
} }
if (start < 0) if (start < 0) {
{
start = 0; start = 0;
} }
if (start > str.length()) if (start > str.length()) {
{
return NULLSTR; return NULLSTR;
} }
...@@ -190,44 +175,36 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils ...@@ -190,44 +175,36 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/** /**
* 截取字符串 * 截取字符串
* *
* @param str 字符串 * @param str 字符串
* @param start 开始 * @param start 开始
* @param end 结束 * @param end 结束
* @return 结果 * @return 结果
*/ */
public static String substring(final String str, int start, int end) public static String substring(final String str, int start, int end) {
{ if (str == null) {
if (str == null)
{
return NULLSTR; return NULLSTR;
} }
if (end < 0) if (end < 0) {
{
end = str.length() + end; end = str.length() + end;
} }
if (start < 0) if (start < 0) {
{
start = str.length() + start; start = str.length() + start;
} }
if (end > str.length()) if (end > str.length()) {
{
end = str.length(); end = str.length();
} }
if (start > end) if (start > end) {
{
return NULLSTR; return NULLSTR;
} }
if (start < 0) if (start < 0) {
{
start = 0; start = 0;
} }
if (end < 0) if (end < 0) {
{
end = 0; end = 0;
} }
...@@ -242,15 +219,13 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils ...@@ -242,15 +219,13 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
* 通常使用:format("this is {} for {}", "a", "b") -> this is a for b<br> * 通常使用:format("this is {} for {}", "a", "b") -> this is a for b<br>
* 转义{}: format("this is \\{} for {}", "a", "b") -> this is \{} for a<br> * 转义{}: format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>
* 转义\: format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br> * 转义\: format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>
* *
* @param template 文本模板,被替换的部分用 {} 表示 * @param template 文本模板,被替换的部分用 {} 表示
* @param params 参数值 * @param params 参数值
* @return 格式化后的文本 * @return 格式化后的文本
*/ */
public static String format(String template, Object... params) public static String format(String template, Object... params) {
{ if (isEmpty(params) || isEmpty(template)) {
if (isEmpty(params) || isEmpty(template))
{
return template; return template;
} }
return StrFormatter.format(template, params); return StrFormatter.format(template, params);
...@@ -258,47 +233,40 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils ...@@ -258,47 +233,40 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/** /**
* 字符串转set * 字符串转set
* *
* @param str 字符串 * @param str 字符串
* @param sep 分隔符 * @param sep 分隔符
* @return set集合 * @return set集合
*/ */
public static final Set<String> str2Set(String str, String sep) public static final Set<String> str2Set(String str, String sep) {
{
return new HashSet<String>(str2List(str, sep, true, false)); return new HashSet<String>(str2List(str, sep, true, false));
} }
/** /**
* 字符串转list * 字符串转list
* *
* @param str 字符串 * @param str 字符串
* @param sep 分隔符 * @param sep 分隔符
* @param filterBlank 过滤纯空白 * @param filterBlank 过滤纯空白
* @param trim 去掉首尾空白 * @param trim 去掉首尾空白
* @return list集合 * @return list集合
*/ */
public static final List<String> str2List(String str, String sep, boolean filterBlank, boolean trim) public static final List<String> str2List(String str, String sep, boolean filterBlank, boolean trim) {
{
List<String> list = new ArrayList<String>(); List<String> list = new ArrayList<String>();
if (StringUtils.isEmpty(str)) if (StringUtils.isEmpty(str)) {
{
return list; return list;
} }
// 过滤空白字符串 // 过滤空白字符串
if (filterBlank && StringUtils.isBlank(str)) if (filterBlank && StringUtils.isBlank(str)) {
{
return list; return list;
} }
String[] split = str.split(sep); String[] split = str.split(sep);
for (String string : split) for (String string : split) {
{ if (filterBlank && StringUtils.isBlank(string)) {
if (filterBlank && StringUtils.isBlank(string))
{
continue; continue;
} }
if (trim) if (trim) {
{
string = string.trim(); string = string.trim();
} }
list.add(string); list.add(string);
...@@ -310,10 +278,8 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils ...@@ -310,10 +278,8 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/** /**
* 下划线转驼峰命名 * 下划线转驼峰命名
*/ */
public static String toUnderScoreCase(String str) public static String toUnderScoreCase(String str) {
{ if (str == null) {
if (str == null)
{
return null; return null;
} }
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
...@@ -323,31 +289,23 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils ...@@ -323,31 +289,23 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
boolean curreCharIsUpperCase = true; boolean curreCharIsUpperCase = true;
// 下一字符是否大写 // 下一字符是否大写
boolean nexteCharIsUpperCase = true; boolean nexteCharIsUpperCase = true;
for (int i = 0; i < str.length(); i++) for (int i = 0; i < str.length(); i++) {
{
char c = str.charAt(i); char c = str.charAt(i);
if (i > 0) if (i > 0) {
{
preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1)); preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1));
} } else {
else
{
preCharIsUpperCase = false; preCharIsUpperCase = false;
} }
curreCharIsUpperCase = Character.isUpperCase(c); curreCharIsUpperCase = Character.isUpperCase(c);
if (i < (str.length() - 1)) if (i < (str.length() - 1)) {
{
nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1)); nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1));
} }
if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) {
{
sb.append(SEPARATOR); sb.append(SEPARATOR);
} } else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase) {
else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase)
{
sb.append(SEPARATOR); sb.append(SEPARATOR);
} }
sb.append(Character.toLowerCase(c)); sb.append(Character.toLowerCase(c));
...@@ -358,19 +316,15 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils ...@@ -358,19 +316,15 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/** /**
* 是否包含字符串 * 是否包含字符串
* *
* @param str 验证字符串 * @param str 验证字符串
* @param strs 字符串组 * @param strs 字符串组
* @return 包含返回true * @return 包含返回true
*/ */
public static boolean inStringIgnoreCase(String str, String... strs) public static boolean inStringIgnoreCase(String str, String... strs) {
{ if (str != null && strs != null) {
if (str != null && strs != null) for (String s : strs) {
{ if (str.equalsIgnoreCase(trim(s))) {
for (String s : strs)
{
if (str.equalsIgnoreCase(trim(s)))
{
return true; return true;
} }
} }
...@@ -380,31 +334,25 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils ...@@ -380,31 +334,25 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/** /**
* 将下划线大写方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。 例如:HELLO_WORLD->HelloWorld * 将下划线大写方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。 例如:HELLO_WORLD->HelloWorld
* *
* @param name 转换前的下划线大写方式命名的字符串 * @param name 转换前的下划线大写方式命名的字符串
* @return 转换后的驼峰式命名的字符串 * @return 转换后的驼峰式命名的字符串
*/ */
public static String convertToCamelCase(String name) public static String convertToCamelCase(String name) {
{
StringBuilder result = new StringBuilder(); StringBuilder result = new StringBuilder();
// 快速检查 // 快速检查
if (name == null || name.isEmpty()) if (name == null || name.isEmpty()) {
{
// 没必要转换 // 没必要转换
return ""; return "";
} } else if (!name.contains("_")) {
else if (!name.contains("_"))
{
// 不含下划线,仅将首字母大写 // 不含下划线,仅将首字母大写
return name.substring(0, 1).toUpperCase() + name.substring(1); return name.substring(0, 1).toUpperCase() + name.substring(1);
} }
// 用下划线将原始字符串分割 // 用下划线将原始字符串分割
String[] camels = name.split("_"); String[] camels = name.split("_");
for (String camel : camels) for (String camel : camels) {
{
// 跳过原始字符串中开头、结尾的下换线或双重下划线 // 跳过原始字符串中开头、结尾的下换线或双重下划线
if (camel.isEmpty()) if (camel.isEmpty()) {
{
continue; continue;
} }
// 首字母大写 // 首字母大写
...@@ -417,39 +365,43 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils ...@@ -417,39 +365,43 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/** /**
* 驼峰式命名法 例如:user_name->userName * 驼峰式命名法 例如:user_name->userName
*/ */
public static String toCamelCase(String s) public static String toCamelCase(String s) {
{ if (s == null) {
if (s == null)
{
return null; return null;
} }
s = s.toLowerCase(); // s = s.toLowerCase();
StringBuilder sb = new StringBuilder(s.length()); StringBuilder sb = new StringBuilder(s.length());
boolean upperCase = false; boolean upperCase = false;
for (int i = 0; i < s.length(); i++) for (int i = 0; i < s.length(); i++) {
{
char c = s.charAt(i); char c = s.charAt(i);
if (c == SEPARATOR)
{ if (c == SEPARATOR) {
upperCase = true; upperCase = true;
} } else if (upperCase) {
else if (upperCase)
{
sb.append(Character.toUpperCase(c)); sb.append(Character.toUpperCase(c));
upperCase = false; upperCase = false;
} } else {
else if(i==0){
{ sb.append(Character.toLowerCase(c));
sb.append(c); }else {
sb.append(c);
}
} }
} }
return sb.toString(); return sb.toString();
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <T> T cast(Object obj) public static <T> T cast(Object obj) {
{
return (T) obj; return (T) obj;
} }
public static void main(String[] args) {
String str="ABV_DFF_";
System.out.println(StringUtils.toCamelCase(str));
}
} }
\ No newline at end of file
package com.mortals.xhx.daemon.demo;
import com.mortals.framework.model.BaseEntityStr;
/**
* 实体对象
*
* @author zxfei
* @date 2021-09-30
*/
public class DemoEntity extends BaseEntityStr {
private static final long serialVersionUID = 1L;
/**
*
*/
private String fieldOne;
/**
*
*/
private Long fieldTwo;
public DemoEntity(){}
/**
* 获取
* @return String
*/
public String getFieldOne(){
return fieldOne;
}
/**
* 设置
* @param fieldOne
*/
public void setFieldOne(String fieldOne){
this.fieldOne = fieldOne;
}
/**
* 获取
* @return Long
*/
public Long getFieldTwo(){
return fieldTwo;
}
/**
* 设置
* @param fieldTwo
*/
public void setFieldTwo(Long fieldTwo){
this.fieldTwo = fieldTwo;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof DemoEntity) {
DemoEntity tmp = (DemoEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append(",fieldOne:").append(getFieldOne());
sb.append(",fieldTwo:").append(getFieldTwo());
return sb.toString();
}
public void initAttrValue(){
this.fieldOne = null;
this.fieldTwo = null;
}
}
\ No newline at end of file
package com.mortals.xhx.daemon.demo;
import java.util.List;
/**
* 查询对象
*
* @author zxfei
* @date 2021-09-30
*/
public class DemoQuery extends DemoEntity {
/** */
private List<String> idList;
/** */
private List<String> fieldOneList;
/** 开始 */
private Long fieldTwoStart;
/** 结束 */
private Long fieldTwoEnd;
/** 增加 */
private Long fieldTwoIncrement;
/** 列表 */
private List <Long> fieldTwoList;
/** 开始 */
private String updateTimeStart;
/** 结束 */
private String updateTimeEnd;
/** */
private List<String> updateUserList;
/** 开始 */
private String createTimeStart;
/** 结束 */
private String createTimeEnd;
/** */
private List<String> createUserList;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<DemoQuery> orConditionList;
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private List<DemoQuery> andConditionList;
public DemoQuery(){}
/**
* 获取
* @return idList
*/
public List<String> getIdList(){
return this.idList;
}
/**
* 设置
* @param idList
*/
public void setIdList(List<String> idList){
this.idList = idList;
}
/**
* 获取
* @return fieldOneList
*/
public List<String> getFieldOneList(){
return this.fieldOneList;
}
/**
* 设置
* @param fieldOneList
*/
public void setFieldOneList(List<String> fieldOneList){
this.fieldOneList = fieldOneList;
}
/**
* 获取 开始
* @return fieldTwoStart
*/
public Long getFieldTwoStart(){
return this.fieldTwoStart;
}
/**
* 设置 开始
* @param fieldTwoStart
*/
public void setFieldTwoStart(Long fieldTwoStart){
this.fieldTwoStart = fieldTwoStart;
}
/**
* 获取 结束
* @return $fieldTwoEnd
*/
public Long getFieldTwoEnd(){
return this.fieldTwoEnd;
}
/**
* 设置 结束
* @param fieldTwoEnd
*/
public void setFieldTwoEnd(Long fieldTwoEnd){
this.fieldTwoEnd = fieldTwoEnd;
}
/**
* 获取 增加
* @return fieldTwoIncrement
*/
public Long getFieldTwoIncrement(){
return this.fieldTwoIncrement;
}
/**
* 设置 增加
* @param fieldTwoIncrement
*/
public void setFieldTwoIncrement(Long fieldTwoIncrement){
this.fieldTwoIncrement = fieldTwoIncrement;
}
/**
* 获取
* @return fieldTwoList
*/
public List<Long> getFieldTwoList(){
return this.fieldTwoList;
}
/**
* 设置
* @param fieldTwoList
*/
public void setFieldTwoList(List<Long> fieldTwoList){
this.fieldTwoList = fieldTwoList;
}
/**
* 获取 开始
* @return updateTimeStart
*/
public String getUpdateTimeStart(){
return this.updateTimeStart;
}
/**
* 设置 开始
* @param updateTimeStart
*/
public void setUpdateTimeStart(String updateTimeStart){
this.updateTimeStart = updateTimeStart;
}
/**
* 获取 结束
* @return updateTimeEnd
*/
public String getUpdateTimeEnd(){
return this.updateTimeEnd;
}
/**
* 设置 结束
* @param updateTimeEnd
*/
public void setUpdateTimeEnd(String updateTimeEnd){
this.updateTimeEnd = updateTimeEnd;
}
/**
* 获取
* @return updateUserList
*/
public List<String> getUpdateUserList(){
return this.updateUserList;
}
/**
* 设置
* @param updateUserList
*/
public void setUpdateUserList(List<String> updateUserList){
this.updateUserList = updateUserList;
}
/**
* 获取 开始
* @return createTimeStart
*/
public String getCreateTimeStart(){
return this.createTimeStart;
}
/**
* 设置 开始
* @param createTimeStart
*/
public void setCreateTimeStart(String createTimeStart){
this.createTimeStart = createTimeStart;
}
/**
* 获取 结束
* @return createTimeEnd
*/
public String getCreateTimeEnd(){
return this.createTimeEnd;
}
/**
* 设置 结束
* @param createTimeEnd
*/
public void setCreateTimeEnd(String createTimeEnd){
this.createTimeEnd = createTimeEnd;
}
/**
* 获取
* @return createUserList
*/
public List<String> getCreateUserList(){
return this.createUserList;
}
/**
* 设置
* @param createUserList
*/
public void setCreateUserList(List<String> createUserList){
this.createUserList = createUserList;
}
/**
* 设置
* @param id
*/
public DemoQuery id(String id){
setId(id);
return this;
}
/**
* 设置
* @param idList
*/
public DemoQuery idList(List<String> idList){
this.idList = idList;
return this;
}
/**
* 设置
* @param fieldOne
*/
public DemoQuery fieldOne(String fieldOne){
setFieldOne(fieldOne);
return this;
}
/**
* 设置
* @param fieldOneList
*/
public DemoQuery fieldOneList(List<String> fieldOneList){
this.fieldOneList = fieldOneList;
return this;
}
/**
* 设置
* @param fieldTwo
*/
public DemoQuery fieldTwo(Long fieldTwo){
setFieldTwo(fieldTwo);
return this;
}
/**
* 设置 开始
* @param fieldTwoStart
*/
public DemoQuery fieldTwoStart(Long fieldTwoStart){
this.fieldTwoStart = fieldTwoStart;
return this;
}
/**
* 设置 结束
* @param fieldTwoEnd
*/
public DemoQuery fieldTwoEnd(Long fieldTwoEnd){
this.fieldTwoEnd = fieldTwoEnd;
return this;
}
/**
* 设置 增加
* @param fieldTwoIncrement
*/
public DemoQuery fieldTwoIncrement(Long fieldTwoIncrement){
this.fieldTwoIncrement = fieldTwoIncrement;
return this;
}
/**
* 设置
* @param fieldTwoList
*/
public DemoQuery fieldTwoList(List<Long> fieldTwoList){
this.fieldTwoList = fieldTwoList;
return this;
}
/**
* 设置
* @param updateUser
*/
public DemoQuery updateUser(String updateUser){
setUpdateUser(updateUser);
return this;
}
/**
* 设置
* @param updateUserList
*/
public DemoQuery updateUserList(List<String> updateUserList){
this.updateUserList = updateUserList;
return this;
}
/**
* 设置
* @param createUser
*/
public DemoQuery createUser(String createUser){
setCreateUser(createUser);
return this;
}
/**
* 设置
* @param createUserList
*/
public DemoQuery createUserList(List<String> createUserList){
this.createUserList = createUserList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
*/
public List<DemoQuery> getOrConditionList(){
return this.orConditionList;
}
/**
* 设置 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @param orConditionList
*/
public void setOrConditionList(List<DemoQuery> orConditionList){
this.orConditionList = orConditionList;
}
/**
* 获取 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @return andConditionList
*/
public List<DemoQuery> getAndConditionList(){
return this.andConditionList;
}
/**
* 设置 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @param andConditionList
*/
public void setAndConditionList(List<DemoQuery> andConditionList){
this.andConditionList = andConditionList;
}
}
\ No newline at end of file
package com.mortals.xhx.module.matter.dao.ibatis; package com.mortals.xhx.module.matter.dao.ibatis;
import com.mortals.framework.model.TableParam;
import com.mortals.framework.model.TableStrategy;
import com.mortals.framework.util.DateUtils;
import com.mortals.framework.util.StringUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.module.matter.dao.MatterDatumDao; import com.mortals.xhx.module.matter.dao.MatterDatumDao;
import com.mortals.xhx.module.matter.model.MatterDatumEntity; import com.mortals.xhx.module.matter.model.MatterDatumEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.SubmeterDaoImpl;
import com.mortals.xhx.module.matter.model.MatterDatumQuery;
/** /**
* <p>Title: 事项申请材料</p> * 事项申请材料DaoImpl DAO接口
* <p>Description: MatterDatumDaoImpl DAO接口 </p> *
* @author * @author zxfei
* @version 1.0.0 * @date 2021-09-30
*/ */
@Repository("matterDatumDao") @Repository("matterDatumDao")
public class MatterDatumDaoImpl extends BaseCRUDDaoMybatis<MatterDatumEntity,Long> implements MatterDatumDao { public class MatterDatumDaoImpl extends SubmeterDaoImpl<MatterDatumEntity,Long> implements MatterDatumDao {
@Override
protected TableStrategy getTableStrategy() {
return new TableStrategy("mortals_xhx_matter_datum_${unionTime}", TableStrategy.STRATEGY_BY_MONTH, 3);
}
@Override
public TableParam getTableParam(MatterDatumEntity makeTableNameOfentity) {
TableParam tableParam = new TableParam();
if (!ObjectUtils.isEmpty(makeTableNameOfentity.getCreateTime())) {
tableParam.unionTime = makeTableNameOfentity.getCreateTime();
} else if (makeTableNameOfentity instanceof MatterDatumQuery) {
MatterDatumQuery MatterDatumQuery = (MatterDatumQuery) makeTableNameOfentity;
if (StringUtils.isNotEmpty(MatterDatumQuery.getCreateTimeStart())) {
tableParam.unionTime = DateUtils.StrToDate(MatterDatumQuery.getCreateTimeStart());
} else if (StringUtils.isNotEmpty(MatterDatumQuery.getCreateTimeEnd())) {
tableParam.unionTime = DateUtils.StrToDate(MatterDatumQuery.getCreateTimeEnd());
}
}
if (ObjectUtils.isEmpty(tableParam.unionTime)) {
tableParam.unionTime = new Date();
}
return tableParam;
}
} }
\ No newline at end of file
package com.mortals.xhx.module.matter.model; package com.mortals.xhx.module.matter.model;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import com.mortals.framework.model.BaseEntityLong; import com.mortals.framework.model.BaseEntityLong;
/** /**
...@@ -31,6 +32,9 @@ public class MatterEntity extends MatterEntityExt{ ...@@ -31,6 +32,9 @@ public class MatterEntity extends MatterEntityExt{
*/ */
private String groupName; private String groupName;
/** /**
* 区域编码 * 区域编码
*/ */
......
...@@ -5,6 +5,6 @@ gen: ...@@ -5,6 +5,6 @@ gen:
# 默认生成包路径 module 需改成自己的模块名称 如 system monitor tool # 默认生成包路径 module 需改成自己的模块名称 如 system monitor tool
packageName: com.mortals.xhx.module packageName: com.mortals.xhx.module
# 自动去除表前缀,默认是false # 自动去除表前缀,默认是false
autoRemovePre: false autoRemovePre: true
# 表前缀(生成类名不会包含表前缀,多个用逗号分隔) # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
tablePrefix: sys_,mortals_xhx_,mortals_iot_ tablePrefix: sys_,mortals_xhx_,mortals_iot_
\ No newline at end of file
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
<result property="isList" column="isList" /> <result property="isList" column="isList" />
<result property="isQuery" column="isQuery" /> <result property="isQuery" column="isQuery" />
<result property="htmlType" column="htmlType" /> <result property="htmlType" column="htmlType" />
<result property="defaultValue" column="defaultValue" />
<result property="sort" column="sort" /> <result property="sort" column="sort" />
<result property="updateTime" column="updateTime" /> <result property="updateTime" column="updateTime" />
<result property="updateUser" column="updateUser" /> <result property="updateUser" column="updateUser" />
...@@ -75,6 +76,9 @@ ...@@ -75,6 +76,9 @@
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('htmlType') or colPickMode == 1 and data.containsKey('htmlType')))"> <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('htmlType') or colPickMode == 1 and data.containsKey('htmlType')))">
a.htmlType as htmlType, a.htmlType as htmlType,
</if> </if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('defaultValue') or colPickMode == 1 and data.containsKey('defaultValue')))">
a.defaultValue as defaultValue,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('sort') or colPickMode == 1 and data.containsKey('sort')))"> <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('sort') or colPickMode == 1 and data.containsKey('sort')))">
a.sort as sort, a.sort as sort,
</if> </if>
...@@ -95,18 +99,18 @@ ...@@ -95,18 +99,18 @@
<!-- 新增 --> <!-- 新增 -->
<insert id="insert" parameterType="GentableColumnEntity" useGeneratedKeys="true" keyProperty="id"> <insert id="insert" parameterType="GentableColumnEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_gentable_column insert into mortals_xhx_gentable_column
(tableId,columnName,columnComment,columnType,javaType,javaField,isPrimaryKey,isIncrement,isRequired,isInsert,isEdit,isList,isQuery,htmlType,sort,updateTime,updateUser,createTime,createUser) (tableId,columnName,columnComment,columnType,javaType,javaField,isPrimaryKey,isIncrement,isRequired,isInsert,isEdit,isList,isQuery,htmlType,defaultValue,sort,updateTime,updateUser,createTime,createUser)
VALUES VALUES
(#{tableId},#{columnName},#{columnComment},#{columnType},#{javaType},#{javaField},#{isPrimaryKey},#{isIncrement},#{isRequired},#{isInsert},#{isEdit},#{isList},#{isQuery},#{htmlType},#{sort},#{updateTime},#{updateUser},#{createTime},#{createUser}) (#{tableId},#{columnName},#{columnComment},#{columnType},#{javaType},#{javaField},#{isPrimaryKey},#{isIncrement},#{isRequired},#{isInsert},#{isEdit},#{isList},#{isQuery},#{htmlType},#{defaultValue},#{sort},#{updateTime},#{updateUser},#{createTime},#{createUser})
</insert> </insert>
<!-- 批量新增 --> <!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto"> <insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_gentable_column insert into mortals_xhx_gentable_column
(tableId,columnName,columnComment,columnType,javaType,javaField,isPrimaryKey,isIncrement,isRequired,isInsert,isEdit,isList,isQuery,htmlType,sort,updateTime,updateUser,createTime,createUser) (tableId,columnName,columnComment,columnType,javaType,javaField,isPrimaryKey,isIncrement,isRequired,isInsert,isEdit,isList,isQuery,htmlType,defaultValue,sort,updateTime,updateUser,createTime,createUser)
VALUES VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," > <foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.tableId},#{item.columnName},#{item.columnComment},#{item.columnType},#{item.javaType},#{item.javaField},#{item.isPrimaryKey},#{item.isIncrement},#{item.isRequired},#{item.isInsert},#{item.isEdit},#{item.isList},#{item.isQuery},#{item.htmlType},#{item.sort},#{item.updateTime},#{item.updateUser},#{item.createTime},#{item.createUser}) (#{item.tableId},#{item.columnName},#{item.columnComment},#{item.columnType},#{item.javaType},#{item.javaField},#{item.isPrimaryKey},#{item.isIncrement},#{item.isRequired},#{item.isInsert},#{item.isEdit},#{item.isList},#{item.isQuery},#{item.htmlType},#{item.defaultValue},#{item.sort},#{item.updateTime},#{item.updateUser},#{item.createTime},#{item.createUser})
</foreach> </foreach>
</insert> </insert>
<!-- 根据ParamDto更新 --> <!-- 根据ParamDto更新 -->
...@@ -183,6 +187,9 @@ ...@@ -183,6 +187,9 @@
<if test="(colPickMode==0 and data.containsKey('htmlTypeIncrement')) or (colPickMode==1 and !data.containsKey('htmlTypeIncrement'))"> <if test="(colPickMode==0 and data.containsKey('htmlTypeIncrement')) or (colPickMode==1 and !data.containsKey('htmlTypeIncrement'))">
a.htmlType=ifnull(a.htmlType,0) + #{data.htmlTypeIncrement}, a.htmlType=ifnull(a.htmlType,0) + #{data.htmlTypeIncrement},
</if> </if>
<if test="(colPickMode==0 and data.containsKey('defaultValue')) or (colPickMode==1 and !data.containsKey('defaultValue'))">
a.defaultValue=#{data.defaultValue},
</if>
<if test="(colPickMode==0 and data.containsKey('sort')) or (colPickMode==1 and !data.containsKey('sort'))"> <if test="(colPickMode==0 and data.containsKey('sort')) or (colPickMode==1 and !data.containsKey('sort'))">
a.sort=#{data.sort}, a.sort=#{data.sort},
</if> </if>
...@@ -372,6 +379,14 @@ ...@@ -372,6 +379,14 @@
</foreach> </foreach>
</trim> </trim>
<trim prefix="defaultValue=(case" suffix="ELSE defaultValue end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('defaultValue')) or (colPickMode==1 and !item.containsKey('defaultValue'))">
when a.id=#{item.id} then #{item.defaultValue}
</if>
</foreach>
</trim>
<trim prefix="sort=(case" suffix="ELSE sort end),"> <trim prefix="sort=(case" suffix="ELSE sort end),">
<foreach collection="data.dataList" item="item" index="index" separator="" > <foreach collection="data.dataList" item="item" index="index" separator="" >
<choose> <choose>
...@@ -800,6 +815,21 @@ ...@@ -800,6 +815,21 @@
${_conditionType_} a.htmlType <![CDATA[ <= ]]> #{${_conditionParam_}.htmlTypeEnd} ${_conditionType_} a.htmlType <![CDATA[ <= ]]> #{${_conditionParam_}.htmlTypeEnd}
</if> </if>
<if test="conditionParamRef.containsKey('defaultValue')">
<if test="conditionParamRef.defaultValue != null and conditionParamRef.defaultValue != ''">
${_conditionType_} a.defaultValue like #{${_conditionParam_}.defaultValue}
</if>
<if test="conditionParamRef.defaultValue == null">
${_conditionType_} a.defaultValue is null
</if>
</if>
<if test="conditionParamRef.containsKey('defaultValueList')">
${_conditionType_} a.defaultValue in
<foreach collection="conditionParamRef.defaultValueList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('sort')"> <if test="conditionParamRef.containsKey('sort')">
<if test="conditionParamRef.sort != null "> <if test="conditionParamRef.sort != null ">
${_conditionType_} a.sort = #{${_conditionParam_}.sort} ${_conditionType_} a.sort = #{${_conditionParam_}.sort}
...@@ -969,6 +999,11 @@ ...@@ -969,6 +999,11 @@
<if test='orderCol.htmlType != null and "DESC".equalsIgnoreCase(orderCol.htmlType)'>DESC</if> <if test='orderCol.htmlType != null and "DESC".equalsIgnoreCase(orderCol.htmlType)'>DESC</if>
, ,
</if> </if>
<if test="orderCol.containsKey('defaultValue')">
a.defaultValue
<if test='orderCol.defaultValue != null and "DESC".equalsIgnoreCase(orderCol.defaultValue)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('sort')"> <if test="orderCol.containsKey('sort')">
a.sort a.sort
<if test='orderCol.sort != null and "DESC".equalsIgnoreCase(orderCol.sort)'>DESC</if> <if test='orderCol.sort != null and "DESC".equalsIgnoreCase(orderCol.sort)'>DESC</if>
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
<select id="selectDbTableColumnsByName" parameterType="String" resultMap="GentableColumnEntity-Map"> <select id="selectDbTableColumnsByName" parameterType="String" resultMap="GentableColumnEntity-Map">
SELECT SELECT
column_name as columnName, column_name as columnName,
column_default as defaultValue,
( CASE WHEN ( is_nullable = 'no' <![CDATA[ && ]]> column_key != 'PRI' ) THEN '1' ELSE NULL END ) AS isRequired, ( CASE WHEN ( is_nullable = 'no' <![CDATA[ && ]]> column_key != 'PRI' ) THEN '1' ELSE NULL END ) AS isRequired,
( CASE WHEN column_key = 'PRI' THEN '1' ELSE '0' END ) AS isPrimaryKey, ( CASE WHEN column_key = 'PRI' THEN '1' ELSE '0' END ) AS isPrimaryKey,
ordinal_position AS sort, ordinal_position AS sort,
...@@ -17,7 +18,7 @@ ...@@ -17,7 +18,7 @@
information_schema.COLUMNS information_schema.COLUMNS
WHERE WHERE
table_schema = ( SELECT DATABASE ( ) ) table_schema = ( SELECT DATABASE ( ) )
AND table_name = 'mortals_xhx_accept' AND table_name = #{tableName}
ORDER BY ORDER BY
ordinal_position ordinal_position
</select> </select>
......
package ${entityPackageName};
import com.mortals.framework.dao.ICRUDDao;
import ${pack}.model.${entityClassName}Entity;
/**
* <p>Title: ${entityDesc}</p>
* <p>Description: ${entityClassName}Dao DAO接口 </p>
* @author
* @version 1.0.0
*/
public interface ${entityClassName}Dao extends ICRUDDao<${entityClassName}Entity,Long>{
}
package ${packageName}.${businessName}.dao;
import com.mortals.framework.dao.ICRUDDao;
import ${packageName}.${businessName}.model.${ClassName}Entity;
/**
* ${functionName}Dao
* ${functionName} DAO接口
*
* @author ${author}
* @date ${datetime}
*/
<#if table.dividedTableType!=0 >
<#assign Dao = "ICRUDSubmeterDao">
<#else>
<#assign Dao = "ICRUDDao">
</#if>
public interface ${ClassName}Dao extends ${Dao}<${ClassName}Entity,Long>{
}
package ${entityPackageName};
import org.springframework.stereotype.Repository;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import ${pack}.dao.${entityClassName}Dao;
import ${pack}.model.${entityClassName}Entity;
/**
* <p>Title: ${entityDesc}</p>
* <p>Description: ${entityClassName}DaoImpl DAO接口 </p>
* @author
* @version 1.0.0
*/
@Repository("${entityClassName?uncap_first}Dao")
public class ${entityClassName}DaoImpl extends BaseCRUDDaoMybatis<${entityClassName}Entity,Long> implements ${entityClassName}Dao {
}
package ${packageName}.${businessName}.dao.ibatis;
import com.mortals.framework.model.TableParam;
import com.mortals.framework.model.TableStrategy;
import com.mortals.framework.util.DateUtils;
import com.mortals.framework.util.StringUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.stereotype.Repository;
import ${packageName}.${businessName}.dao.${ClassName}Dao;
import ${packageName}.${businessName}.model.${ClassName}Entity;
import java.util.Date;
<#if table.dividedTableType==0 >
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
<#else>
import com.mortals.framework.dao.ibatis.SubmeterDaoImpl;
import ${packageName}.${businessName}.model.${ClassName}Query;
</#if>
<#if table.dividedTableType==1 >
<#assign TableStrategy = "TableStrategy.STRATEGY_BY_DAY">
<#elseif table.dividedTableType==2>
<#assign TableStrategy = "TableStrategy.STRATEGY_BY_WEEK">
<#elseif table.dividedTableType==3>
<#assign TableStrategy = "TableStrategy.STRATEGY_BY_MONTH">
<#elseif table.dividedTableType==4>
<#assign TableStrategy = "TableStrategy.STRATEGY_BY_MOD">
<#elseif table.dividedTableType==0>
</#if>
/**
* ${functionName}DaoImpl DAO接口
*
* @author ${author}
* @date ${datetime}
*/
@Repository("${ClassName?uncap_first}Dao")
<#if table.dividedTableType!=0 >
public class ${ClassName}DaoImpl extends SubmeterDaoImpl<${ClassName}Entity,Long> implements ${ClassName}Dao {
@Override
protected TableStrategy getTableStrategy() {
return new TableStrategy("${tableName}_<#noparse>$</#noparse>{unionTime}", ${TableStrategy}, 3);
}
@Override
public TableParam getTableParam(${ClassName}Entity makeTableNameOfentity) {
TableParam tableParam = new TableParam();
if (!ObjectUtils.isEmpty(makeTableNameOfentity.getCreateTime())) {
tableParam.unionTime = makeTableNameOfentity.getCreateTime();
} else if (makeTableNameOfentity instanceof ${ClassName}Query) {
${ClassName}Query ${ClassName}Query = (${ClassName}Query) makeTableNameOfentity;
if (StringUtils.isNotEmpty(${ClassName}Query.getCreateTimeStart())) {
tableParam.unionTime = DateUtils.StrToDate(${ClassName}Query.getCreateTimeStart());
} else if (StringUtils.isNotEmpty(${ClassName}Query.getCreateTimeEnd())) {
tableParam.unionTime = DateUtils.StrToDate(${ClassName}Query.getCreateTimeEnd());
}
}
if (ObjectUtils.isEmpty(tableParam.unionTime)) {
tableParam.unionTime = new Date();
}
return tableParam;
}
<#else>
public class ${ClassName}DaoImpl extends BaseCRUDDaoMybatis<${ClassName}Entity,Long> implements ${ClassName}Dao {
</#if>
}
package ${entityPackageName};
<#list importPacks as pack>
<#if pack == "BigDecimal">
import java.math.${pack};
</#if>
<#if pack == "java.util.Date">
import ${pack};
</#if>
</#list>
import com.mortals.framework.model.BaseEntityLong;
/**
*
* Description:${entityClassName}
* date: ${date?datetime}
*/
public class ${entityClassName}Entity extends BaseEntityLong{
private static final long serialVersionUID = ${serialVersionUID?c}L;
<#list fields as field>
<#if (field.pk)??>
<#else>
<#if field.columnName!='id'>
/**
* ${field.remarks}
*/
private ${(field.typeName?split("."))?last} ${field.attName};
</#if>
</#if>
</#list>
public ${entityClassName}Entity(){
}
<#list fields as field>
<#if (field.pk)?? && field.columnName!='id'>
/**
* 获取 ${field.remarks}
* @return ${field.attName}
*/
public ${(field.typeName?split("."))?last} get${field.attName?cap_first}() {
return getId();
}
/**
* 设置 ${field.remarks}
* @param ${field.attName}
*/
public void set${field.attName?cap_first}(${(field.typeName?split("."))?last} ${field.attName}) {
setId(${field.attName});
}
<#else>
<#if field.columnName!='id'>
/**
* 获取 ${field.remarks}
* @return ${field.attName}
*/
public ${(field.typeName?split("."))?last} get${field.attName?cap_first}() {
return this.${field.attName};
}
/**
* 设置 ${field.remarks}
* @param ${field.attName}
*/
public void set${field.attName?cap_first}(${(field.typeName?split("."))?last} ${field.attName}) {
this.${field.attName} = ${field.attName};
}
</#if>
</#if>
<#-- <#if field.columnName != "id">
/**
* 获取 ${field.remarks}
* @return ${field.columnName}
*/
public ${(field.typeName?split("."))?last} get${field.columnName?cap_first}() {
return this.${field.columnName};
}
/**
* 设置 ${field.remarks}
* @param ${field.columnName}
*/
public void set${field.columnName?cap_first}(${(field.typeName?split("."))?last} ${field.columnName}) {
this.${field.columnName} = ${field.columnName};
}
</#if>-->
</#list>
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null)
return false;
if (obj instanceof ${entityClassName}Entity) {
${entityClassName}Entity tmp = (${entityClassName}Entity) obj;
if (this.getId().longValue() == tmp.getId().longValue()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb
<#list fields as field>
.append(",${field.attName}:").append(get${field.attName?cap_first}())
</#list>;
return sb.toString();
}
public void initAttrValue(){
<#list fields as field>
<#if field.columnName != "id">
this.${field.attName} = null;
</#if>
</#list>
}
}
\ No newline at end of file
package ${packageName}.${businessName}.model;
<#if table.tplCategory=="crud" >
<#--判断主键类型,设置继承实体类 -->
<#if pkColumn??&&pkColumn.javaType=="String" >
<#assign Entity = "BaseEntityStr">
<#elseif pkColumn??&&pkColumn.javaType=="Integer">
<#assign Entity = "BaseEntityInt">
<#elseif pkColumn??&&pkColumn.javaType=="Long">
<#assign Entity = "BaseEntityLong">
<#else>
<#assign Entity = "BaseEntityLong">
</#if>
<#elseif table.tplCategory=="tree">
<#assign Entity = "TreeEntity">
<#elseif table.tplCategory=="sub">
<#assign Entity = "BaseEntityLong">
<#else>
<#assign Entity = "BaseEntityLong">
</#if>
<#list importList as import>
import ${import};
</#list>
import com.mortals.framework.model.${Entity};
/**
* ${functionName}实体对象
*
* @author ${author}
* @date ${datetime}
*/
public class ${ClassName}Entity extends ${Entity} {
private static final long serialVersionUID = 1L;
<#list columns as column>
<#if !column.isSuperColumn(column.javaField)>
/**
* ${column.columnComment}
*/
private ${column.javaType} ${column.javaField};
</#if>
</#list>
<#if table.subTable??>
/**
* ${table.subTable.functionName}信息
*/
private List<${subClassName}> ${subclassName}List;
</#if>
public ${ClassName}Entity(){}
<#--get set属性 -->
<#list columns as column>
<#if !column.isSuperColumn(column.javaField)>
<#if column.javaField[1..2]?matches("[A-Z]")>
<#assign AttrName = column.javaField>
<#else>
<#assign AttrName = column.javaField?cap_first>
</#if>
/**
* 获取 ${column.columnComment}
* @return ${column.javaType}
*/
public ${column.javaType} get${AttrName}(){
return ${column.javaField};
}
/**
* 设置 ${column.columnComment}
* @param ${column.javaField}
*/
public void set${AttrName}(${column.javaType} ${column.javaField}){
this.${column.javaField} = ${column.javaField};
}
</#if>
</#list>
<#if subTable??>
public List<${subClassName}> get${subClassName}List(){
return ${subclassName}List;
}
public void set${subClassName}List(List<${subClassName}> ${subclassName}List){
this.${subclassName}List = ${subclassName}List;
}
</#if>
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof ${ClassName}Entity) {
${ClassName}Entity tmp = (${ClassName}Entity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
<#list columns as column>
<#if !column.isSuperColumn(column.javaField)>
sb.append(",${column.javaField}:").append(get${column.javaField?cap_first}());
</#if>
</#list>
return sb.toString();
}
public void initAttrValue(){
<#list columns as column>
<#if !column.isSuperColumn(column.javaField)>
<#if column.javaType=="Long" && column.defaultValue??>
<#assign Default>${column.defaultValue}L</#assign>
<#elseif column.javaType=="Integer" && column.defaultValue??>
<#assign Default>${column.defaultValue}</#assign>
<#elseif column.javaType=="String" && column.defaultValue??>
<#assign Default>"${column.defaultValue}"</#assign>
<#elseif column.javaType=="BigDecimal" && column.defaultValue??>
<#assign Default>BigDecimal.valueOf(${column.defaultValue})</#assign>
<#elseif column.javaType=="Date" >
<#assign Default>new Date()</#assign>
<#else>
<#assign Default>null</#assign>
</#if>
this.${column.javaField} = ${Default};
</#if>
</#list>
}
}
\ No newline at end of file
package ${entityPackageName};
import java.util.List;
<#list importPacks as pack>
<#if pack == "BigDecimal">
import java.math.${pack};
</#if>
<#if pack == "java.util.Date">
import ${pack};
</#if>
</#list>
/**
*
* Description:${entityClassName}
* date: ${date?datetime}
*/
public class ${entityClassName}Query extends ${entityClassName}Entity{
private static final long serialVersionUID = ${serialVersionUID?c}L;
<#list fields as field>
<#if field.typeName == "java.lang.Long">
/** 开始 ${field.remarks} */
private Long ${field.attName}Start;
/** 结束 ${field.remarks} */
private Long ${field.attName}End;
/** 增加 ${field.remarks} */
private Long ${field.attName}Increment;
/** ${field.remarks} */
private List <Long> ${field.attName}List;
<#elseif field.typeName == "String">
/** ${field.remarks} */
private List<String> ${field.attName}List;
<#elseif field.typeName == "java.lang.Integer">
/** 开始 ${field.remarks} */
private Integer ${field.attName}Start;
/** 结束 ${field.remarks} */
private Integer ${field.attName}End;
/** 增加 ${field.remarks} */
private Integer ${field.attName}Increment;
/** ${field.remarks} */
private List <Integer> ${field.attName}List;
<#elseif field.typeName == "java.util.Date">
/** 开始 ${field.remarks} */
private String ${field.attName}Start;
/** 结束 ${field.remarks} */
private String ${field.attName}End;
<#elseif field.typeName == "BigDecimal">
/** 开始 ${field.remarks} */
private BigDecimal ${field.attName}Start;
/** 结束 ${field.remarks} */
private BigDecimal ${field.attName}End;
/** 增加 ${field.remarks} */
private BigDecimal ${field.attName}Increment;
/** ${field.remarks} */
private List <BigDecimal> ${field.attName}List;
</#if>
</#list>
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<${entityClassName}Query> orConditionList;
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private List<${entityClassName}Query> andConditionList;
public ${entityClassName}Query(){
}
<#list fields as field>
<#if field.typeName == "java.lang.Long">
/**
* 获取 开始 ${field.remarks}
* @return ${field.attName}Start
*/
public Long get${field.attName?cap_first}Start(){
return this.${field.attName}Start;
}
/**
* 设置 开始 ${field.remarks}
* @param ${field.attName}Start
*/
public void set${field.attName?cap_first}Start(Long ${field.attName}Start){
this.${field.attName}Start = ${field.attName}Start;
}
/**
* 获取 结束 ${field.remarks}
* @return ${field.attName}End
*/
public Long get${field.attName?cap_first}End(){
return this.${field.attName}End;
}
/**
* 设置 结束 ${field.remarks}
* @param ${field.attName}End
*/
public void set${field.attName?cap_first}End(Long ${field.attName}End){
this.${field.attName}End = ${field.attName}End;
}
/**
* 获取 增加 ${field.remarks}
* @return ${field.attName}Increment
*/
public Long get${field.attName?cap_first}Increment(){
return this.${field.attName}Increment;
}
/**
* 设置 增加 ${field.remarks}
* @param ${field.attName}Increment
*/
public void set${field.attName?cap_first}Increment(Long ${field.attName}Increment){
this.${field.attName}Increment = ${field.attName}Increment;
}
/**
* 获取 ${field.remarks}
* @return ${field.attName}List
*/
public List<Long> get${field.attName?cap_first}List(){
return this.${field.attName}List;
}
/**
* 设置 ${field.remarks}
* @param ${field.attName}List
*/
public void set${field.attName?cap_first}List(List<Long> ${field.attName}List){
this.${field.attName}List = ${field.attName}List;
}
</#if>
<#if field.typeName == "String">
/**
* 获取 ${field.remarks}
* @return ${field.attName}List
*/
public List<String> get${field.attName?cap_first}List(){
return this.${field.attName}List;
}
/**
* 设置 ${field.remarks}
* @param ${field.attName}List
*/
public void set${field.attName?cap_first}List(List<String> ${field.attName}List){
this.${field.attName}List = ${field.attName}List;
}
</#if>
<#if field.typeName == "java.lang.Integer">
/**
* 获取 开始 ${field.remarks}
* @return ${field.attName}Start
*/
public Integer get${field.attName?cap_first}Start(){
return this.${field.attName}Start;
}
/**
* 设置 开始 ${field.remarks}
* @param ${field.attName}Start
*/
public void set${field.attName?cap_first}Start(Integer ${field.attName}Start){
this.${field.attName}Start = ${field.attName}Start;
}
/**
* 获取 结束 ${field.remarks}
* @return ${field.attName}End
*/
public Integer get${field.attName?cap_first}End(){
return this.${field.attName}End;
}
/**
* 设置 结束 ${field.remarks}
* @param ${field.attName}End
*/
public void set${field.attName?cap_first}End(Integer ${field.attName}End){
this.${field.attName}End = ${field.attName}End;
}
/**
* 获取 增加 ${field.remarks}
* @return ${field.attName}Increment
*/
public Integer get${field.attName?cap_first}Increment(){
return this.${field.attName}Increment;
}
/**
* 设置 增加 ${field.remarks}
* @param ${field.attName}Increment
*/
public void set${field.attName?cap_first}Increment(Integer ${field.attName}Increment){
this.${field.attName}Increment = ${field.attName}Increment;
}
/**
* 获取 ${field.remarks}
* @return ${field.attName}List
*/
public List<Integer> get${field.attName?cap_first}List(){
return this.${field.attName}List;
}
/**
* 设置 ${field.remarks}
* @param ${field.attName}List
*/
public void set${field.attName?cap_first}List(List<Integer> ${field.attName}List){
this.${field.attName}List = ${field.attName}List;
}
</#if>
<#if field.typeName == "BigDecimal">
/**
* 获取 开始 ${field.remarks}
* @return ${field.attName}Start
*/
public BigDecimal get${field.attName?cap_first}Start(){
return this.${field.attName}Start;
}
/**
* 设置 开始 ${field.remarks}
* @param ${field.attName}Start
*/
public void set${field.attName?cap_first}Start(BigDecimal ${field.attName}Start){
this.${field.attName}Start = ${field.attName}Start;
}
/**
* 获取 结束 ${field.remarks}
* @return ${field.attName}End
*/
public BigDecimal get${field.attName?cap_first}End(){
return this.${field.attName}End;
}
/**
* 设置 结束 ${field.remarks}
* @param ${field.attName}End
*/
public void set${field.attName?cap_first}End(BigDecimal ${field.attName}End){
this.${field.attName}End = ${field.attName}End;
}
/**
* 获取 增加 ${field.remarks}
* @return ${field.attName}Increment
*/
public BigDecimal get${field.attName?cap_first}Increment(){
return this.${field.attName}Increment;
}
/**
* 设置 增加 ${field.remarks}
* @param ${field.attName}Increment
*/
public void set${field.attName?cap_first}Increment(BigDecimal ${field.attName}Increment){
this.${field.attName}Increment = ${field.attName}Increment;
}
/**
* 获取 ${field.remarks}
* @return ${field.attName}List
*/
public List<BigDecimal> get${field.attName?cap_first}List(){
return this.${field.attName}List;
}
/**
* 设置 ${field.remarks}
* @param ${field.attName}List
*/
public void set${field.attName?cap_first}List(List<BigDecimal> ${field.attName}List){
this.${field.attName}List = ${field.attName}List;
}
</#if>
<#if field.typeName == "java.util.Date">
/**
* 获取 开始 ${field.remarks}
* @return ${field.attName}Start
*/
public String get${field.attName?cap_first}Start(){
return this.${field.attName}Start;
}
/**
* 设置 开始 ${field.remarks}
* @param ${field.attName}Start
*/
public void set${field.attName?cap_first}Start(String ${field.attName}Start){
this.${field.attName}Start = ${field.attName}Start;
}
/**
* 获取 结束 ${field.remarks}
* @return ${field.attName}End
*/
public String get${field.attName?cap_first}End(){
return this.${field.attName}End;
}
/**
* 设置 结束 ${field.remarks}
* @param ${field.attName}End
*/
public void set${field.attName?cap_first}End(String ${field.attName}End){
this.${field.attName}End = ${field.attName}End;
}
</#if>
</#list>
<#list fields as field>
<#if field.typeName == "java.lang.Long">
/**
* 设置 ${field.remarks}
* @param ${field.attName}
*/
public ${entityClassName}Query ${field.attName}(Long ${field.attName}){
set${field.attName?cap_first}(${field.attName});
return this;
}
/**
* 设置 开始 ${field.remarks}
* @param ${field.attName}Start
*/
public ${entityClassName}Query ${field.attName}Start(Long ${field.attName}Start){
this.${field.attName}Start = ${field.attName}Start;
return this;
}
/**
* 设置 结束 ${field.remarks}
* @param ${field.attName}End
*/
public ${entityClassName}Query ${field.attName}End(Long ${field.attName}End){
this.${field.attName}End = ${field.attName}End;
return this;
}
/**
* 设置 增加 ${field.remarks}
* @param ${field.attName}Increment
*/
public ${entityClassName}Query ${field.attName}Increment(Long ${field.attName}Increment){
this.${field.attName}Increment = ${field.attName}Increment;
return this;
}
/**
* 设置 ${field.remarks}
* @param ${field.attName}List
*/
public ${entityClassName}Query ${field.attName}List(List<Long> ${field.attName}List){
this.${field.attName}List = ${field.attName}List;
return this;
}
</#if>
<#if field.typeName == "String">
/**
* 设置 ${field.remarks}
* @param ${field.attName}
*/
public ${entityClassName}Query ${field.attName}(String ${field.attName}){
set${field.attName?cap_first}(${field.attName});
return this;
}
/**
* 设置 ${field.remarks}
* @param ${field.attName}List
*/
public ${entityClassName}Query ${field.attName}List(List<String> ${field.attName}List){
this.${field.attName}List = ${field.attName}List;
return this;
}
</#if>
<#if field.typeName == "java.lang.Integer">
/**
* 设置 ${field.remarks}
* @param ${field.attName}
*/
public ${entityClassName}Query ${field.attName}(Integer ${field.attName}){
set${field.attName?cap_first}(${field.attName});
return this;
}
/**
* 设置 开始 ${field.remarks}
* @param ${field.attName}Start
*/
public ${entityClassName}Query ${field.attName}Start(Integer ${field.attName}Start){
this.${field.attName}Start = ${field.attName}Start;
return this;
}
/**
* 设置 结束 ${field.remarks}
* @param ${field.attName}End
*/
public ${entityClassName}Query ${field.attName}End(Integer ${field.attName}End){
this.${field.attName}End = ${field.attName}End;
return this;
}
/**
* 设置 增加 ${field.remarks}
* @param ${field.attName}Increment
*/
public ${entityClassName}Query ${field.attName}Increment(Integer ${field.attName}Increment){
this.${field.attName}Increment = ${field.attName}Increment;
return this;
}
/**
* 设置 ${field.remarks}
* @param ${field.attName}List
*/
public ${entityClassName}Query ${field.attName}List(List<Integer> ${field.attName}List){
this.${field.attName}List = ${field.attName}List;
return this;
}
</#if>
<#if field.typeName == "BigDecimal">
/**
* 设置 ${field.remarks}
* @param ${field.attName}
*/
public ${entityClassName}Query ${field.attName}(BigDecimal ${field.attName}){
set${field.attName?cap_first}(${field.attName});
return this;
}
/**
* 设置 开始 ${field.remarks}
* @param ${field.attName}Start
*/
public ${entityClassName}Query ${field.attName}Start(BigDecimal ${field.attName}Start){
this.${field.attName}Start = ${field.attName}Start;
return this;
}
/**
* 设置 结束 ${field.remarks}
* @param ${field.attName}End
*/
public ${entityClassName}Query ${field.attName}End(BigDecimal ${field.attName}End){
this.${field.attName}End = ${field.attName}End;
return this;
}
/**
* 设置 增加 ${field.remarks}
* @param ${field.attName}Increment
*/
public ${entityClassName}Query ${field.attName}Increment(BigDecimal ${field.attName}Increment){
this.${field.attName}Increment = ${field.attName}Increment;
return this;
}
/**
* 设置 ${field.remarks}
* @param ${field.attName}List
*/
public ${entityClassName}Query ${field.attName}List(List<BigDecimal> ${field.attName}List){
this.${field.attName}List = ${field.attName}List;
return this;
}
</#if>
<#if field.typeName == "java.util.Date">
/**
* 设置 开始 ${field.remarks}
* @param ${field.attName}Start
*/
public ${entityClassName}Query ${field.attName}Start(String ${field.attName}Start){
this.${field.attName}Start = ${field.attName}Start;
return this;
}
/**
* 设置 结束 ${field.remarks}
* @param ${field.attName}End
*/
public ${entityClassName}Query ${field.attName}End(String ${field.attName}End){
this.${field.attName}End = ${field.attName}End;
return this;
}
</#if>
</#list>
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
*/
public List<${entityClassName}Query> getOrConditionList(){
return this.orConditionList;
}
/**
* 设置 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @param orConditionList
*/
public void setOrConditionList(List<${entityClassName}Query> orConditionList){
this.orConditionList = orConditionList;
}
/**
* 获取 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @return andConditionList
*/
public List<${entityClassName}Query> getAndConditionList(){
return this.andConditionList;
}
/**
* 设置 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @param andConditionList
*/
public void setAndConditionList(List<${entityClassName}Query> andConditionList){
this.andConditionList = andConditionList;
}
}
\ No newline at end of file
package ${packageName}.${businessName}.model;
<#list importList as import>
import ${import};
</#list>
import java.util.Date;
import java.util.List;
/**
* ${functionName}查询对象
*
* @author ${author}
* @date ${datetime}
*/
public class ${ClassName}Query extends ${ClassName}Entity {
<#list columns as column>
<#if column.javaType == "Long"||column.javaType == "Integer"||column.javaType == "BigDecimal">
/** 开始 ${column.columnComment} */
private ${column.javaType} ${column.javaField}Start;
/** 结束 ${column.columnComment} */
private ${column.javaType} ${column.javaField}End;
/** 增加 ${column.columnComment} */
private ${column.javaType} ${column.javaField}Increment;
/** ${column.columnComment}列表 */
private List <${column.javaType}> ${column.javaField}List;
</#if>
<#if column.javaType == "String">
/** ${column.columnComment} */
private List<${column.javaType}> ${column.javaField}List;
</#if>
<#if column.javaType == "Date">
/** 开始 ${column.columnComment} */
private String ${column.javaField}Start;
/** 结束 ${column.columnComment} */
private String ${column.javaField}End;
</#if>
</#list>
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<${ClassName}Query> orConditionList;
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private List<${ClassName}Query> andConditionList;
public ${ClassName}Query(){}
<#list columns as column>
<#if column.javaType == "Long"||column.javaType == "Integer"||column.javaType == "BigDecimal">
/**
* 获取 开始 ${column.columnComment}
* @return ${column.javaField}Start
*/
public ${column.javaType} get${column.javaField?cap_first}Start(){
return this.${column.javaField}Start;
}
/**
* 设置 开始 ${column.columnComment}
* @param ${column.javaField}Start
*/
public void set${column.javaField?cap_first}Start(${column.javaType} ${column.javaField}Start){
this.${column.javaField}Start = ${column.javaField}Start;
}
/**
* 获取 结束 ${column.columnComment}
* @return $${column.javaField}End
*/
public ${column.javaType} get${column.javaField?cap_first}End(){
return this.${column.javaField}End;
}
/**
* 设置 结束 ${column.columnComment}
* @param ${column.javaField}End
*/
public void set${column.javaField?cap_first}End(${column.javaType} ${column.javaField}End){
this.${column.javaField}End = ${column.javaField}End;
}
/**
* 获取 增加 ${column.columnComment}
* @return ${column.javaField}Increment
*/
public ${column.javaType} get${column.javaField?cap_first}Increment(){
return this.${column.javaField}Increment;
}
/**
* 设置 增加 ${column.columnComment}
* @param ${column.javaField}Increment
*/
public void set${column.javaField?cap_first}Increment(${column.javaType} ${column.javaField}Increment){
this.${column.javaField}Increment = ${column.javaField}Increment;
}
/**
* 获取 ${column.columnComment}
* @return ${column.javaField}List
*/
public List<${column.javaType}> get${column.javaField?cap_first}List(){
return this.${column.javaField}List;
}
/**
* 设置 ${column.columnComment}
* @param ${column.javaField}List
*/
public void set${column.javaField?cap_first}List(List<${column.javaType}> ${column.javaField}List){
this.${column.javaField}List = ${column.javaField}List;
}
</#if>
<#if column.javaType == "String">
/**
* 获取 ${column.columnComment}
* @return ${column.javaField}List
*/
public List<${column.javaType}> get${column.javaField?cap_first}List(){
return this.${column.javaField}List;
}
/**
* 设置 ${column.columnComment}
* @param ${column.javaField}List
*/
public void set${column.javaField?cap_first}List(List<${column.javaType}> ${column.javaField}List){
this.${column.javaField}List = ${column.javaField}List;
}
</#if>
<#if column.javaType == "Date">
/**
* 获取 开始 ${column.columnComment}
* @return ${column.javaField}Start
*/
public String get${column.javaField?cap_first}Start(){
return this.${column.javaField}Start;
}
/**
* 设置 开始 ${column.columnComment}
* @param ${column.javaField}Start
*/
public void set${column.javaField?cap_first}Start(String ${column.javaField}Start){
this.${column.javaField}Start = ${column.javaField}Start;
}
/**
* 获取 结束 ${column.columnComment}
* @return ${column.javaField}End
*/
public String get${column.javaField?cap_first}End(){
return this.${column.javaField}End;
}
/**
* 设置 结束 ${column.columnComment}
* @param ${column.javaField}End
*/
public void set${column.javaField?cap_first}End(String ${column.javaField}End){
this.${column.javaField}End = ${column.javaField}End;
}
</#if>
</#list>
<#list columns as column>
<#if column.javaType == "Long"||column.javaType == "Integer"||column.javaType == "BigDecimal">
/**
* 设置 ${column.columnComment}
* @param ${column.javaField}
*/
public ${ClassName}Query ${column.javaField}(${column.javaType} ${column.javaField}){
set${column.javaField?cap_first}(${column.javaField});
return this;
}
/**
* 设置 开始 ${column.columnComment}
* @param ${column.javaField}Start
*/
public ${ClassName}Query ${column.javaField}Start(${column.javaType} ${column.javaField}Start){
this.${column.javaField}Start = ${column.javaField}Start;
return this;
}
/**
* 设置 结束 ${column.columnComment}
* @param ${column.javaField}End
*/
public ${ClassName}Query ${column.javaField}End(${column.javaType} ${column.javaField}End){
this.${column.javaField}End = ${column.javaField}End;
return this;
}
/**
* 设置 增加 ${column.columnComment}
* @param ${column.javaField}Increment
*/
public ${ClassName}Query ${column.javaField}Increment(${column.javaType} ${column.javaField}Increment){
this.${column.javaField}Increment = ${column.javaField}Increment;
return this;
}
/**
* 设置 ${column.columnComment}
* @param ${column.javaField}List
*/
public ${ClassName}Query ${column.javaField}List(List<${column.javaType}> ${column.javaField}List){
this.${column.javaField}List = ${column.javaField}List;
return this;
}
</#if>
<#if column.javaType == "String">
/**
* 设置 ${column.columnComment}
* @param ${column.javaField}
*/
public ${ClassName}Query ${column.javaField}(${column.javaType} ${column.javaField}){
set${column.javaField?cap_first}(${column.javaField});
return this;
}
/**
* 设置 ${column.columnComment}
* @param ${column.javaField}List
*/
public ${ClassName}Query ${column.javaField}List(List<${column.javaType}> ${column.javaField}List){
this.${column.javaField}List = ${column.javaField}List;
return this;
}
</#if>
<#if column.javaType == "java.util.Date">
/**
* 设置 开始 ${column.columnComment}
* @param ${column.javaField}Start
*/
public ${ClassName}Query ${column.javaField}Start(String ${column.javaField}Start){
this.${column.javaField}Start = ${column.javaField}Start;
return this;
}
/**
* 设置 结束 ${column.columnComment}
* @param ${column.javaField}End
*/
public ${ClassName}Query ${column.javaField}End(String ${column.javaField}End){
this.${column.javaField}End = ${column.javaField}End;
return this;
}
</#if>
</#list>
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
*/
public List<${ClassName}Query> getOrConditionList(){
return this.orConditionList;
}
/**
* 设置 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @param orConditionList
*/
public void setOrConditionList(List<${ClassName}Query> orConditionList){
this.orConditionList = orConditionList;
}
/**
* 获取 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @return andConditionList
*/
public List<${ClassName}Query> getAndConditionList(){
return this.andConditionList;
}
/**
* 设置 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @param andConditionList
*/
public void setAndConditionList(List<${ClassName}Query> andConditionList){
this.andConditionList = andConditionList;
}
}
\ No newline at end of file
package ${entityPackageName};
import com.mortals.framework.service.ICRUDService;
import ${pack}.model.${entityClassName}Entity;
/**
* <p>Title: ${entityDesc}</p>
* <p>Description: ${entityClassName}Service service接口 </p>
* <p>Copyright: Copyright &reg; </p>
* @version 1.0.0
*/
public interface ${entityClassName}Service extends ICRUDService<${entityClassName}Entity,Long>{
}
\ No newline at end of file
package ${packageName}.${businessName}.service;
<#if table.cacheServiceType==0 >
<#assign Service = "ICRUDService">
<#elseif table.cacheServiceType==1 >
<#assign Service = "ICRUDCacheService">
<#elseif table.cacheServiceType==2 >
<#assign Service = "ICRUDCacheService">
<#else >
<#assign Service = "ICRUDService">
</#if>
import com.mortals.framework.service.${Service};
import ${packageName}.${businessName}.model.${ClassName}Entity;
/**
* ${ClassName}Service
*
* ${functionName} service接口
*
* @author ${author}
* @date ${datetime}
*/
public interface ${ClassName}Service extends ${Service}<${ClassName}Entity,Long>{
}
\ No newline at end of file
package ${entityPackageName};
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import ${pack}.dao.${entityClassName}Dao;
import ${pack}.model.${entityClassName}Entity;
import ${pack}.service.${entityClassName}Service;
/**
* <p>Title: ${entityDesc}</p>
* <p>Description: ${entityClassName}Service service接口 </p>
* <p>Copyright: Copyright &reg; </p>
* @version 1.0.0
*/
@Service("${entityClassName?uncap_first}Service")
public class ${entityClassName}ServiceImpl extends AbstractCRUDServiceImpl<${entityClassName}Dao, ${entityClassName}Entity, Long> implements ${entityClassName}Service {
}
\ No newline at end of file
package ${packageName}.${businessName}.service.impl;
<#if table.cacheServiceType==0 >
<#assign Service = "AbstractCRUDServiceImpl">
<#elseif table.cacheServiceType==1 >
<#assign Service = "AbstractCRUDCacheServiceImpl">
<#elseif table.cacheServiceType==2 >
<#assign Service = "AbstractCRUDDynamicCacheServiceImpl">
<#else >
<#assign Service = "AbstractCRUDServiceImpl">
</#if>
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.${Service};
import ${packageName}.${businessName}.dao.${ClassName}Dao;
import ${packageName}.${businessName}.model.${ClassName}Entity;
import ${packageName}.${businessName}.service.${ClassName}Service;
/**
* ${ClassName}Service
* ${functionName} service实现
*
* @author ${author}
* @date ${datetime}
*/
@Service("${ClassName?uncap_first}Service")
public class ${ClassName}ServiceImpl extends ${Service}<${ClassName}Dao, ${ClassName}Entity, Long> implements ${ClassName}Service {
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"mybatis-3-mapper.dtd"> "mybatis-3-mapper.dtd">
<mapper namespace="${entityPackageName}.dao.ibatis.${entityClassName}DaoImpl"> <mapper namespace="${packageName}.${businessName}.dao.ibatis.${ClassName}DaoImpl">
<#if table.tplCategory=="sub" >
<#assign SubArray><collection property="columns" javaType="java.util.List" resultMap="${subClassName?uncap_first}Entity-Map" /></#assign>
<#else>
<#assign SubArray></#assign>
</#if>
<!-- 字段和属性映射 --> <!-- 字段和属性映射 -->
<resultMap type="${entityClassName}Entity" id="${entityClassName}Entity-Map"> <resultMap type="${ClassName}Entity" id="${ClassName}Entity-Map">
<#list fields as field> <#list columns as column>
<result property="${field.attName}" column="${field.columnName}" /> <result property="${column.javaField}" column="${column.columnName}" />
</#list>
${SubArray}
</resultMap>
<#if table.tplCategory=="sub" >
<resultMap type="${subClassName?uncap_first}Entity" id="${subClassName?uncap_first}Entity-Map">
<#list subTable.columns as column>
<result property="${column.javaField}" column="${column.columnName}" />
</#list> </#list>
</resultMap> </resultMap>
<#if isSubmeter??> </#if>
<#-- 判断是否分表,如果分表 则不指定表名 -->
<#if table.dividedTableType==0 >
<#assign TempTable>${tableName}</#assign>
<#else>
<#assign TempTable>`<#noparse>$</#noparse>{tableName}`</#assign>
</#if>
<#if table.dividedTableType!=0>
<update id="createTable" parameterType="paramDto"> <update id="createTable" parameterType="paramDto">
CREATE TABLE `<#noparse>$</#noparse>{tableName}`( CREATE TABLE ${TempTable}(
<#list fields as field> <#list columns as column>
<#if (field.pk)??> <#if column.isIncrement?? && column.isIncrement==1 >
<#if field.autoInc=='true'> <#assign autoInc>auto_isIncrement</#assign>
`${field.columnName}` ${field.sourceColumnType} NOT NULL auto_increment COMMENT '${field.remarks}', <#else>
<#else > <#assign autoInc></#assign>
`${field.columnName}` ${field.sourceColumnType} NOT NULL COMMENT '${field.remarks}',
</#if> </#if>
<#else> <#if column.isRequired?? && column.isRequired==1 >
`${field.columnName}` ${field.sourceColumnType} ${ (field.isNotNull == '是') ?string('NOT NULL','DEFAULT NULL')}<#if (field.defaultValue)??> default '${field.defaultValue}'</#if> COMMENT '${field.remarks}', <#assign Required>NOT NULL</#assign>
</#if> <#else>
<#assign Required></#assign>
</#if>
<#if column.javaType=="String" >
<#assign Type>CHARACTER SET utf8 COLLATE utf8_general_ci</#assign>
<#else>
<#assign Type></#assign>
</#if>
<#if column.defaultValue??>
<#assign Default>DEFAULT '${column.defaultValue}'</#assign>
<#else>
<#assign Default>DEFAULT NULL</#assign>
</#if>
`${column.columnName}` ${column.columnType} ${Required} ${Default} ${Type} ${autoInc} COMMENT '${column.columnComment}',
</#list> </#list>
PRIMARY KEY (`${pk}`) PRIMARY KEY (`${pkColumn.columnName}`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='${entityPackageDesc}'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='${functionName}';
</update> </update>
</#if> </#if>
<!-- 表所有列 --> <!-- 表所有列 -->
<sql id="_columns"> <sql id="_columns">
<trim suffixOverrides="," suffix=""> <trim suffixOverrides="," suffix="">
<#list fields as field> <#list columns as column>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('${field.attName}') or colPickMode == 1 and data.containsKey('${field.attName}')))"> <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('${column.javaField}') or colPickMode == 1 and data.containsKey('${column.javaField}')))">
a.${field.columnName} as ${field.columnName}, a.${column.columnName} as ${column.javaField},
</if> </if>
</#list> </#list>
</trim> </trim>
</sql> </sql>
<!-- 新增 --> <!-- 新增 区分主键自增加还是业务插入 -->
<#if auto_inc=="true"> <insert id="insert" parameterType="${ClassName}Entity" <#if pkColumn.isIncrement?? && pkColumn.isIncrement==1> useGeneratedKeys="true" keyProperty="${pkColumn.javaField}"</#if>>
<insert id="insert" parameterType="${entityClassName}Entity" useGeneratedKeys="true" keyProperty="${pk}"> insert into ${TempTable}
insert into ${sourceTableName} (<#list columns as column><#if column.columnName != pkColumn.columnName || pkColumn.isIncrement!=1>${column.columnName}<#sep>,</#if></#list>)
(<#list fields as field><#if field.columnName != "${pk}">${field.columnName}<#sep>,</#if></#list>) VALUES
VALUES (<#list columns as column><#if column.columnName != pkColumn.columnName || pkColumn.isIncrement!=1><#noparse>#</#noparse>{${column.javaField}}<#sep>,</#if></#list>)
(<#list fields as field><#if field.columnName != "${pk}"><#noparse>#</#noparse>{${field.attName}}<#sep>,</#if></#list>) </insert>
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into ${TempTable}
(<#list columns as column><#if column.columnName != pkColumn.columnName || pkColumn.isIncrement!=1>${column.columnName}<#sep>,</#if></#list>)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(<#list columns as column><#if column.columnName != pkColumn.columnName || pkColumn.isIncrement!=1><#noparse>#</#noparse>{item.${column.javaField}}<#sep>,</#if></#list>)
</foreach>
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into ${sourceTableName}
(<#list fields as field><#if field.columnName != "${pk}">${field.columnName}<#sep>,</#if></#list>)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(<#list fields as field><#if field.columnName != "${pk}"><#noparse>#</#noparse>{item.${field.attName}}<#sep>,</#if></#list>)
</foreach>
</insert>
<#else>
<insert id="insert" parameterType="${entityClassName}Entity" >
insert into ${sourceTableName}
(<#list fields as field>${field.columnName}<#sep>,</#list>)
VALUES
(<#list fields as field><#noparse>#</#noparse>{${field.attName}}<#sep>,</#list>)
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into ${sourceTableName}
(<#list fields as field>${field.columnName}<#sep>,</#list>)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(<#list fields as field><#noparse>#</#noparse>{item.${field.attName}}<#sep>,</#list>)
</foreach>
</insert>
</#if>
<!-- 根据ParamDto更新 --> <!-- 根据ParamDto更新 -->
<update id="update" parameterType="paramDto"> <update id="update" parameterType="paramDto">
<#if isSubmeter??> update ${TempTable} as a
update <#noparse>$</#noparse>{tableName} as a
<#else>
update ${sourceTableName} as a
</#if>
set set
<trim suffixOverrides="," suffix=""> <trim suffixOverrides="," suffix="">
<#list fields as field> <#list columns as column>
<#if field.columnName != "id"> <#-- 非主键更新 -->
<if test="(colPickMode==0 and data.containsKey('${field.attName}')) or (colPickMode==1 and !data.containsKey('${field.attName}'))"> <#if column.columnName != pkColumn.columnName>
a.${field.columnName}=<#noparse>#</#noparse>{data.${field.attName}}, <if test="(colPickMode==0 and data.containsKey('${column.javaField}')) or (colPickMode==1 and !data.containsKey('${column.javaField}'))">
a.${column.columnName}=<#noparse>#</#noparse>{data.${column.javaField}},
</if> </if>
<#if field.typeName == "java.lang.Integer"||field.typeName == "java.lang.Long"||field.typeName == "BigDecimal"> <#if column.javaType == "Integer"||column.javaType == "Long"||column.javaType == "BigDecimal">
<if test="(colPickMode==0 and data.containsKey('${field.attName}Increment')) or (colPickMode==1 and !data.containsKey('${field.attName}Increment'))"> <if test="(colPickMode==0 and data.containsKey('${column.javaField}Increment')) or (colPickMode==1 and !data.containsKey('${column.javaField}Increment'))">
a.${field.columnName}=ifnull(a.${field.columnName},0) + <#noparse>#</#noparse>{data.${field.attName}Increment}, a.${column.columnName}=ifnull(a.${column.columnName},0) + <#noparse>#</#noparse>{data.${column.javaField}Increment},
</if> </if>
</#if> </#if>
</#if> </#if>
...@@ -106,29 +119,29 @@ ...@@ -106,29 +119,29 @@
</update> </update>
<!-- 批量更新 --> <!-- 批量更新 -->
<update id="updateBatch" parameterType="paramDto"> <update id="updateBatch" parameterType="paramDto">
update ${sourceTableName} as a update ${TempTable} as a
<trim prefix="set" suffixOverrides=","> <trim prefix="set" suffixOverrides=",">
<#list fields as field> <#list columns as column>
<#if field.columnName != "id"> <#if column.columnName != pkColumn.columnName>
<#if field.typeName == "String"||field.typeName == "java.util.Date"> <#if column.javaType == "String"||column.javaType == "Date">
<trim prefix="${field.columnName}=(case" suffix="ELSE ${field.columnName} end),"> <trim prefix="${column.columnName}=(case" suffix="ELSE ${column.columnName} end),">
<foreach collection="data.dataList" item="item" index="index" separator="" > <foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('${field.attName}')) or (colPickMode==1 and !item.containsKey('${field.attName}'))"> <if test="(colPickMode==0 and item.containsKey('${column.javaField}')) or (colPickMode==1 and !item.containsKey('${column.javaField}'))">
when a.id=<#noparse>#</#noparse>{item.id} then <#noparse>#</#noparse>{item.${field.attName}} when a.${pkColumn.columnName}=<#noparse>#</#noparse>{item.${pkColumn.javaField}} then <#noparse>#</#noparse>{item.${column.javaField}}
</if> </if>
</foreach> </foreach>
</trim> </trim>
</#if> </#if>
<#if field.typeName == "java.lang.Integer"||field.typeName == "java.lang.Long"||field.typeName == "BigDecimal"> <#if column.javaType == "java.lang.Integer"||column.javaType == "java.lang.Long"||column.javaType == "BigDecimal">
<trim prefix="${field.columnName}=(case" suffix="ELSE ${field.columnName} end),"> <trim prefix="${column.columnName}=(case" suffix="ELSE ${column.columnName} end),">
<foreach collection="data.dataList" item="item" index="index" separator="" > <foreach collection="data.dataList" item="item" index="index" separator="" >
<choose> <choose>
<when test="(colPickMode==0 and item.containsKey('${field.attName}')) or (colPickMode==1 and !item.containsKey('${field.attName}'))"> <when test="(colPickMode==0 and item.containsKey('${column.javaField}')) or (colPickMode==1 and !item.containsKey('${column.javaField}'))">
when a.id=<#noparse>#</#noparse>{item.id} then <#noparse>#</#noparse>{item.${field.attName}} when a.${pkColumn.columnName}=<#noparse>#</#noparse>{item.${pkColumn.javaField}} then <#noparse>#</#noparse>{item.${column.javaField}}
</when> </when>
<when test="(colPickMode==0 and item.containsKey('${field.attName}Increment')) or (colPickMode==1 and !item.containsKey('${field.attName}Increment'))"> <when test="(colPickMode==0 and item.containsKey('${column.javaField}Increment')) or (colPickMode==1 and !item.containsKey('${column.javaField}Increment'))">
when a.id=<#noparse>#</#noparse>{item.id} then ifnull(a.${field.columnName},0) + <#noparse>#</#noparse>{item.${field.attName}Increment} when a.${pkColumn.columnName}=<#noparse>#</#noparse>{item.${pkColumn.javaField}} then ifnull(a.${column.columnName},0) + <#noparse>#</#noparse>{item.${column.javaField}Increment}
</when> </when>
</choose> </choose>
</foreach> </foreach>
...@@ -137,31 +150,31 @@ ...@@ -137,31 +150,31 @@
</#if> </#if>
</#list> </#list>
</trim> </trim>
where ${pk} in where ${pkColumn.columnName} in
<foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")"> <foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")">
<#noparse>#</#noparse>{item.id} <#noparse>#</#noparse>{item.${pkColumn.javaField}}
</foreach> </foreach>
</update> </update>
<!-- 根据主健查询 --> <!-- 根据主健查询 -->
<select id="getByKey" parameterType="paramDto" resultMap="${entityClassName}Entity-Map"> <select id="getByKey" parameterType="paramDto" resultMap="${ClassName}Entity-Map">
select <include refid="_columns"/> select <include refid="_columns"/>
from ${sourceTableName} as a from ${TempTable} as a
where a.${pk}=<#noparse>#</#noparse>{condition.id} where a.${pkColumn.columnName}=<#noparse>#</#noparse>{condition.${pkColumn.javaField}}
</select> </select>
<!-- 根据主健删除 --> <!-- 根据主健删除 -->
<delete id="deleteByKey" parameterType="paramDto"> <delete id="deleteByKey" parameterType="paramDto">
delete a.* from ${sourceTableName} as a where a.${pk}=<#noparse>#</#noparse>{condition.id} delete a.* from ${TempTable} as a where a.${pkColumn.columnName}=<#noparse>#</#noparse>{condition.${pkColumn.javaField}}
</delete> </delete>
<!-- 根据主健删除一批,针对单一主健有效 --> <!-- 根据主健删除一批,针对单一主健有效 -->
<delete id="deleteByKeys"> <delete id="deleteByKeys">
delete from ${sourceTableName} where ${pk} in delete from ${TempTable} where ${pkColumn.columnName} in
<foreach collection="array" item="item" index="index" open="(" separator="," close=")"> <foreach collection="array" item="item" index="index" open="(" separator="," close=")">
<#noparse>#</#noparse>{item} <#noparse>#</#noparse>{item}
</foreach> </foreach>
</delete> </delete>
<!-- 根据paramDto删除一批 --> <!-- 根据paramDto删除一批 -->
<delete id="deleteByMap" parameterType="paramDto"> <delete id="deleteByMap" parameterType="paramDto">
delete a.* from ${sourceTableName} as a delete a.* from ${TempTable} as a
<trim suffixOverrides="where" suffix=""> <trim suffixOverrides="where" suffix="">
where where
<trim prefixOverrides="and" prefix=""> <trim prefixOverrides="and" prefix="">
...@@ -170,9 +183,9 @@ ...@@ -170,9 +183,9 @@
</trim> </trim>
</delete> </delete>
<!-- 获取列表 --> <!-- 获取列表 -->
<select id="getList" parameterType="paramDto" resultMap="${entityClassName}Entity-Map"> <select id="getList" parameterType="paramDto" resultMap="${ClassName}Entity-Map">
select <include refid="_columns"/> select <include refid="_columns"/>
from ${sourceTableName} as a from ${TempTable} as a
<trim suffixOverrides="where" suffix=""> <trim suffixOverrides="where" suffix="">
where where
<trim prefixOverrides="and" prefix=""> <trim prefixOverrides="and" prefix="">
...@@ -184,7 +197,7 @@ ...@@ -184,7 +197,7 @@
<!-- 获取 --> <!-- 获取 -->
<select id="getListCount" parameterType="paramDto" resultType="int"> <select id="getListCount" parameterType="paramDto" resultType="int">
select count(1) select count(1)
from ${sourceTableName} as a from ${TempTable} as a
<trim suffixOverrides="where" suffix=""> <trim suffixOverrides="where" suffix="">
where where
<trim prefixOverrides="and" prefix=""> <trim prefixOverrides="and" prefix="">
...@@ -232,63 +245,63 @@ ...@@ -232,63 +245,63 @@
<if test="conditionParamRef.containsKey('id')"> <if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null"> <if test="conditionParamRef.id != null">
<#noparse>${_conditionType_}</#noparse> a.${pk}=<#noparse>#{${_conditionParam_}.id}</#noparse> <#noparse>${_conditionType_}</#noparse> a.${pkColumn.columnName}=<#noparse>#{${_conditionParam_}.id}</#noparse>
</if> </if>
</if> </if>
<#list fields as field> <#list columns as column>
<#if field.typeName == "java.lang.Long"||field.typeName == "java.lang.Integer"||field.typeName == "BigDecimal"> <#if column.javaType == "Long"||column.javaType == "Integer"||column.javaType == "BigDecimal">
<if test="conditionParamRef.containsKey('${field.attName}')"> <if test="conditionParamRef.containsKey('${column.javaField}')">
<if test="conditionParamRef.${field.attName} != null "> <if test="conditionParamRef.${column.javaField} != null ">
<#noparse>${_conditionType_}</#noparse> a.${field.columnName} = <#noparse>#{${_conditionParam_}</#noparse>.${field.attName}} <#noparse>${_conditionType_}</#noparse> a.${column.columnName} = <#noparse>#{${_conditionParam_}</#noparse>.${column.javaField}}
</if> </if>
<if test="conditionParamRef.${field.attName} == null"> <if test="conditionParamRef.${column.javaField} == null">
<#noparse>${_conditionType_}</#noparse> a.${field.columnName} is null <#noparse>${_conditionType_}</#noparse> a.${column.columnName} is null
</if> </if>
</if> </if>
<if test="conditionParamRef.containsKey('${field.attName}List')"> <if test="conditionParamRef.containsKey('${column.javaField}List')">
<#noparse>${_conditionType_}</#noparse> a.${field.columnName} in <#noparse>${_conditionType_}</#noparse> a.${column.columnName} in
<foreach collection="conditionParamRef.${field.attName}List" open="(" close=")" index="index" item="item" separator=","> <foreach collection="conditionParamRef.${column.javaField}List" open="(" close=")" index="index" item="item" separator=",">
<#noparse>#{item}</#noparse> <#noparse>#{item}</#noparse>
</foreach> </foreach>
</if> </if>
<if test="conditionParamRef.containsKey('${field.attName}Start') and conditionParamRef.${field.attName}Start != null"> <if test="conditionParamRef.containsKey('${column.javaField}Start') and conditionParamRef.${column.javaField}Start != null">
<#noparse>${_conditionType_}</#noparse> a.${field.columnName} <![CDATA[ >= ]]> <#noparse>#{${_conditionParam_}</#noparse>.${field.attName}Start} <#noparse>${_conditionType_}</#noparse> a.${column.columnName} <![CDATA[ >= ]]> <#noparse>#{${_conditionParam_}</#noparse>.${column.javaField}Start}
</if> </if>
<if test="conditionParamRef.containsKey('${field.attName}End') and conditionParamRef.${field.attName}End != null"> <if test="conditionParamRef.containsKey('${column.javaField}End') and conditionParamRef.${column.javaField}End != null">
<#noparse>${_conditionType_}</#noparse> a.${field.columnName} <![CDATA[ <= ]]> <#noparse>#{${_conditionParam_}</#noparse>.${field.attName}End} <#noparse>${_conditionType_}</#noparse> a.${column.columnName} <![CDATA[ <= ]]> <#noparse>#{${_conditionParam_}</#noparse>.${column.javaField}End}
</if> </if>
</#if> </#if>
<#if field.typeName == "String"> <#if column.javaType == "String">
<if test="conditionParamRef.containsKey('${field.attName}')"> <if test="conditionParamRef.containsKey('${column.javaField}')">
<if test="conditionParamRef.${field.attName} != null and conditionParamRef.${field.attName} != ''"> <if test="conditionParamRef.${column.javaField} != null and conditionParamRef.${column.javaField} != ''">
<#noparse>${_conditionType_}</#noparse> a.${field.columnName} like <#noparse>#{${_conditionParam_}</#noparse>.${field.attName}} <#noparse>${_conditionType_}</#noparse> a.${column.columnName} like <#noparse>#{${_conditionParam_}</#noparse>.${column.javaField}}
</if> </if>
<if test="conditionParamRef.${field.attName} == null"> <if test="conditionParamRef.${column.javaField} == null">
<#noparse>${_conditionType_}</#noparse> a.${field.columnName} is null <#noparse>${_conditionType_}</#noparse> a.${column.columnName} is null
</if> </if>
</if> </if>
<if test="conditionParamRef.containsKey('${field.attName}List')"> <if test="conditionParamRef.containsKey('${column.javaField}List')">
<#noparse>${_conditionType_}</#noparse> a.${field.columnName} in <#noparse>${_conditionType_}</#noparse> a.${column.columnName} in
<foreach collection="conditionParamRef.${field.attName}List" open="(" close=")" index="index" item="item" separator=","> <foreach collection="conditionParamRef.${column.javaField}List" open="(" close=")" index="index" item="item" separator=",">
<#noparse>#</#noparse>{item} <#noparse>#</#noparse>{item}
</foreach> </foreach>
</if> </if>
</#if> </#if>
<#if field.typeName == "java.util.Date"> <#if column.javaType == "java.util.Date">
<if test="conditionParamRef.containsKey('${field.attName}')"> <if test="conditionParamRef.containsKey('${column.javaField}')">
<if test="conditionParamRef.${field.attName} != null "> <if test="conditionParamRef.${column.javaField} != null ">
<#noparse>$</#noparse>{_conditionType_} a.${field.columnName} = <#noparse>#{$</#noparse>{_conditionParam_}.${field.attName}} <#noparse>$</#noparse>{_conditionType_} a.${column.columnName} = <#noparse>#{$</#noparse>{_conditionParam_}.${column.javaField}}
</if> </if>
<if test="conditionParamRef.${field.attName} == null"> <if test="conditionParamRef.${column.javaField} == null">
<#noparse>$</#noparse>{_conditionType_} a.${field.columnName} is null <#noparse>$</#noparse>{_conditionType_} a.${column.columnName} is null
</if> </if>
</if> </if>
<if test="conditionParamRef.containsKey('${field.attName}Start') and conditionParamRef.${field.attName}Start != null and conditionParamRef.${field.attName}Start!=''"> <if test="conditionParamRef.containsKey('${column.javaField}Start') and conditionParamRef.${column.javaField}Start != null and conditionParamRef.${column.javaField}Start!=''">
<#noparse>$</#noparse>{_conditionType_} a.${field.columnName} <![CDATA[ >= ]]> STR_TO_DATE(left(concat(<#noparse>#{$</#noparse>{_conditionParam_}.${field.attName}Start},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') <#noparse>$</#noparse>{_conditionType_} a.${column.columnName} <![CDATA[ >= ]]> STR_TO_DATE(left(concat(<#noparse>#{$</#noparse>{_conditionParam_}.${column.javaField}Start},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if> </if>
<if test="conditionParamRef.containsKey('${field.attName}End') and conditionParamRef.${field.attName}End != null and conditionParamRef.${field.attName}End!=''"> <if test="conditionParamRef.containsKey('${column.javaField}End') and conditionParamRef.${column.javaField}End != null and conditionParamRef.${column.javaField}End!=''">
<#noparse>$</#noparse>{_conditionType_} a.${field.columnName} <![CDATA[ <= ]]> STR_TO_DATE(left(concat(<#noparse>#{$</#noparse>{_conditionParam_}.${field.attName}End},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') <#noparse>$</#noparse>{_conditionType_} a.${column.columnName} <![CDATA[ <= ]]> STR_TO_DATE(left(concat(<#noparse>#{$</#noparse>{_conditionParam_}.${column.javaField}End},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if> </if>
</#if> </#if>
</#list> </#list>
...@@ -305,10 +318,10 @@ ...@@ -305,10 +318,10 @@
<if test="(orderColList == null or orderColList.isEmpty()) and orderCol != null and !orderCol.isEmpty()"> <if test="(orderColList == null or orderColList.isEmpty()) and orderCol != null and !orderCol.isEmpty()">
order by order by
<trim suffixOverrides="," suffix=""> <trim suffixOverrides="," suffix="">
<#list fields as field> <#list columns as column>
<if test="orderCol.containsKey('${field.attName}')"> <if test="orderCol.containsKey('${column.javaField}')">
a.${field.columnName} a.${column.columnName}
<if test='orderCol.${field.attName} != null and "DESC".equalsIgnoreCase(orderCol.${field.attName})'>DESC</if> <if test='orderCol.${column.javaField} != null and "DESC".equalsIgnoreCase(orderCol.${column.javaField})'>DESC</if>
, ,
</if> </if>
</#list> </#list>
......
package ${entityPackageName};
import com.mortals.framework.dao.ICRUDSubmeterDao;
import ${pack}.model.${entityClassName}Entity;
/**
* <p>Title: ${entityDesc}</p>
* <p>Description: ${entityClassName}Dao DAO接口 </p>
* @author
* @version 1.0.0
*/
public interface ${entityClassName}Dao extends ICRUDSubmeterDao<${entityClassName}Entity,Long>{
}
package ${entityPackageName};
import org.springframework.stereotype.Repository;
import com.mortals.framework.common.code.TaskExcuteStrategy;
import com.mortals.framework.dao.ibatis.SubmeterDaoImpl;
import com.mortals.framework.model.TableParam;
import com.mortals.framework.model.TableStrategy;
import ${pack}.dao.${entityClassName}Dao;
import ${pack}.model.${entityClassName}Entity;
/**
* <p>Title: ${entityDesc}</p>
* <p>Description: ${entityClassName}DaoImpl DAO接口 </p>
* @author
* @version 1.0.0
*/
@Repository("${entityClassName?uncap_first}Dao")
public class ${entityClassName}DaoImpl extends SubmeterDaoImpl<${entityClassName}Entity,Long> implements ${entityClassName}Dao {
@Override
protected TableStrategy getTableStrategy()
{
return new TableStrategy("mortals_iot_zd_${entityClassName?lower_case}_<#noparse>$</#noparse>{unionTime}", TableStrategy.${STRATEGY});
}
@Override
public TableParam getTableParam(${entityClassName}Entity entity)
{
TableParam param = new TableParam();
return param;
}
}
package ${entityPackageName};
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.mortals.framework.web.BaseCRUDJsonController;
import org.springframework.web.bind.annotation.PostMapping;
import com.alibaba.fastjson.JSONObject;
import ${pack}.model.${entityClassName}Entity;
import ${pack}.service.${entityClassName}Service;
/**
* <p>Title: ${entityDesc}</p>
* <p>Description: ${entityClassName}Controller </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
@RestController
@RequestMapping("${RequestMapping}")
public class ${entityClassName}Controller extends BaseCRUDJsonController<${entityClassName}Service,${entityClassName}Form,${entityClassName}Entity,Long> {
public ${entityClassName}Controller(){
super.setFormClass(${entityClassName}Form.class);
super.setModuleDesc( "${entityDesc}");
}
/**
* 查询${entityDesc}
*/
@PostMapping(value="list")
public String list(${entityClassName}Form form) {
try{
return super.list(form);
}catch(Exception e){
log.error("查询${entityDesc}列表错误",e);
JSONObject ret = new JSONObject();
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
ret.put(KEY_RESULT_MSG, super.convertException(e));
return ret.toJSONString();
}
}
/**
* 添加${entityDesc}
*/
@PostMapping(value="add")
public String add(${entityClassName}Form form) {
try{
return super.add(form);
}catch(Exception e){
log.error("添加${entityDesc}错误",e);
JSONObject ret = new JSONObject();
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
ret.put(KEY_RESULT_MSG, super.convertException(e));
return ret.toJSONString();
}
}
/**
* 编辑${entityDesc}
*/
@PostMapping(value="edit")
public String edit(${entityClassName}Form form) {
try{
return super.edit(form);
}catch(Exception e){
log.error("编辑${entityDesc}错误",e);
JSONObject ret = new JSONObject();
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
ret.put(KEY_RESULT_MSG, super.convertException(e));
return ret.toJSONString();
}
}
/**
* 保存${entityDesc}
*/
@PostMapping(value="save")
public String save(${entityClassName}Form form) {
try{
return super.save(request, response, form);
}catch(Exception e){
log.error("保存${entityDesc}错误",e);
JSONObject ret = new JSONObject();
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
ret.put(KEY_RESULT_MSG, super.convertException(e));
return ret.toJSONString();
}
}
/**
* 删除${entityDesc}
*/
@PostMapping(value="delete")
public String delete(${entityClassName}Form form) {
try{
return super.delete(request, response, form);
}catch(Exception e){
log.error("删除${entityDesc}错误",e);
JSONObject ret = new JSONObject();
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
ret.put(KEY_RESULT_MSG, super.convertException(e));
return ret.toJSONString();
}
}
/**
* 查看${entityDesc}
*/
@PostMapping(value="view")
public String view(${entityClassName}Form form) {
try{
return super.view(request, response, form);
}catch(Exception e){
log.error("查看${entityDesc}错误",e);
JSONObject ret = new JSONObject();
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
ret.put(KEY_RESULT_MSG, super.convertException(e));
return ret.toJSONString();
}
}
}
\ No newline at end of file
package ${packageName}.${businessName}.web;
<#if table.tplCategory=="crud" >
<#assign Controller = "BaseCRUDJsonMappingController">
<#elseif table.tplCategory=="tree">
<#assign Controller = "BaseTreeCRUDJsonMappingController">
<#else>
<#assign Controller = "BaseCRUDJsonMappingController">
</#if>
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.${Controller};
import com.mortals.framework.common.IBaseEnum;
import com.mortals.framework.common.code.YesNo;
import ${packageName}.${businessName}.model.${ClassName}Entity;
import ${packageName}.${businessName}.service.${ClassName}Service;
/**
* ${ClassName}Controller
*
* ${functionName} 控制器
*
* @author ${author}
* @date ${datetime}
*/
@RestController
@RequestMapping("${RequestMapping}")
public class ${ClassName}Controller extends ${Controller}<${ClassName}Service,${ClassName}Form,${ClassName}Entity,Long> {
public ${ClassName}Controller(){
super.setFormClass(${ClassName}Form.class);RequestMapping
super.setModuleDesc( "${functionName}");
}
@Override
protected void init(HttpServletRequest request, HttpServletResponse response, ${ClassName}Form form, Map<String, Object> model, Context context) {
this.addDict(model, "status", IBaseEnum.getEnumMap(YesNo.class));
super.init(request, response, form, model, context);
}
}
\ No newline at end of file
package ${entityPackageName};
import com.mortals.framework.web.BaseCRUDFormLong;
import ${pack}.model.${entityClassName}Entity;
import ${pack}.model.${entityClassName}Query;
/**
* <p>Title: ${entityDesc}</p>
* <p>Description: ${entityClassName}Form </p>
* @author
* @version 1.0.0
*/
public class ${entityClassName}Form extends BaseCRUDFormLong<${entityClassName}Entity> {
private ${entityClassName}Entity entity = new ${entityClassName}Entity();
private ${entityClassName}Query query = new ${entityClassName}Query();
public ${entityClassName}Form(){
}
@Override
public ${entityClassName}Entity getEntity() {
return entity;
}
public void set${entityClassName}(${entityClassName}Entity entity) {
this.entity = entity;
}
@Override
public ${entityClassName}Query getQuery() {
return query;
}
public void setQuery(${entityClassName}Query query) {
this.query = query;
}
}
\ No newline at end of file
package ${packageName}.${businessName}.web;
<#if pkColumn??&&pkColumn.javaType=="String" >
<#assign Form = "BaseCRUDFormStr">
<#elseif pkColumn??&&pkColumn.javaType=="Integer">
<#assign Form = "BaseCRUDFormInt">
<#elseif pkColumn??&&pkColumn.javaType=="Long">
<#assign Form = "BaseCRUDFormLong">
<#else>
<#assign Form = "BaseCRUDFormLong">
</#if>
import com.mortals.framework.web.${Form};
import ${packageName}.${businessName}.model.${ClassName}Entity;
import ${packageName}.${businessName}.model.${ClassName}Query;
/**
* ${ClassName}
*
* ${functionName} Form
*
* @author ${author}
* @date ${datetime}
*/
public class ${ClassName}Form extends ${Form}<${ClassName}Entity> {
private ${ClassName}Entity entity = new ${ClassName}Entity();
private ${ClassName}Query query = new ${ClassName}Query();
public ${ClassName}Form(){
}
@Override
public ${ClassName}Entity getEntity() {
return entity;
}
public void set${ClassName}(${ClassName}Entity entity) {
this.entity = entity;
}
@Override
public ${ClassName}Query getQuery() {
return query;
}
public void setQuery(${ClassName}Query query) {
this.query = query;
}
}
\ No newline at end of file
package ${entityPackageName};
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.mortals.framework.web.BaseCRUDJsonMappingController;
import ${pack}.model.${entityClassName}Entity;
import ${pack}.service.${entityClassName}Service;
/**
* <p>Title: ${entityDesc}</p>
* <p>Description: ${entityClassName}Controller </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author zxfei
* @version 1.0.0
*/
@RestController
@RequestMapping("${RequestMapping}")
public class ${entityClassName}Controller extends BaseCRUDJsonMappingController<${entityClassName}Service,${entityClassName}Form,${entityClassName}Entity,Long> {
public ${entityClassName}Controller(){
super.setFormClass(${entityClassName}Form.class);
super.setModuleDesc("${entityDesc}");
}
}
\ No newline at end of file
<#macro compress_single_line> -- ----------------------------
<#local captured><#nested></#local> -- ${functionName}表
${ captured?replace("\\n\\r", "", "rm") } -- ----------------------------
</#macro> DROP TABLE IF EXISTS `${tableName}`;
<#list tables as table> CREATE TABLE ${tableName}(
DROP TABLE IF EXISTS `${table.tableName}`; <#list columns as column>
<@compress_single_line> <#if column.isIncrement==1 >
CREATE TABLE `${table.tableName}`( <#assign autoInc>auto_increment</#assign>
<#list table.fields as field> <#else>
<#if (field.pk)??> <#assign autoInc></#assign>
<#if field.autoInc=='true'>
`${field.columnName}` ${field.sourceColumnType} NOT NULL auto_increment COMMENT '${field.remarks}',
<#else >
`${field.columnName}` ${field.sourceColumnType} NOT NULL COMMENT '${field.remarks}',
</#if> </#if>
<#if column.isRequired==1 >
<#assign Required>NOT NULL</#assign>
<#else> <#else>
`${field.columnName}` ${field.sourceColumnType} ${ (field.isNotNull == '是') ?string('NOT NULL','DEFAULT NULL')}<#if (field.defaultValue)??> default '${field.defaultValue}'</#if> COMMENT '${field.remarks}', <#assign Required></#assign>
</#if> </#if>
</#list> <#if column.isRequired==1 >
PRIMARY KEY (`${table.pk}`) <#assign Required>NOT NULL</#assign>
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='${table.tableDesc}'; <#else>
</@compress_single_line> <#assign Required></#assign>
</#if>
<#if column.javaType=="String" >
<#assign Type>CHARACTER SET utf8 COLLATE utf8_general_ci</#assign>
<#else>
<#assign Type></#assign>
</#if>
<#if column.defaultValue??>
<#assign Default>DEFAULT '${column.defaultValue}'</#assign>
<#else>
<#assign Default>DEFAULT NULL</#assign>
</#if>
`${column.columnName}` ${column.columnType} ${Required} ${Default} ${Type} ${autoInc} COMMENT '${column.columnComment}',
</#list> </#list>
PRIMARY KEY (`${pkColumn.columnName}`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='${functionName}';
<#list menus as menu>
<#--INSERT INTO `mortals_iot_menu` VALUES ('${menu.id}', '${menu.name}', '${menu.path}', '${menu.parentId}', '${menu.orderId}', '1', '0', '0','', '${menu.imgPath}', '', '', '0', '0', '3', null, null, null);-->
INSERT INTO `mortals_xhx_menu` VALUES ('${menu.id}', '${menu.name}', '${menu.path}', '${menu.parentId}', '${menu.orderId}','1','0','0','', null, '', '', '0', '0', '3',null, null, null);
</#list>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment