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

编写系统代码生成模块

parent be4fe6cf
......@@ -34,7 +34,7 @@ instance.interceptors.request.use(config => {
// config.headers.timestamp = Math.floor(new Date().getTime() / 1000)
// config.headers.token = sessionStorage.getItem('token') || ''
console.log("request config",config);
//console.log("request config",config);
return config;
......
......@@ -8,8 +8,6 @@ import MySwitch from '@/components/Switch';
import Confirm from '@/components/Confirm';
import FormField from '@/components/FormField';
import Upload from '@/components/Upload';
import TreeTable from '@/components/TreeTable.vue';
import TopicInfo from '@/components/TopicInfo.vue';
const Prototype = function() {};
......@@ -23,8 +21,6 @@ Prototype.install = (Vue, options) => {
Vue.component('MySwitch', MySwitch) // 拨动开关
Vue.component('Confirm', Confirm) // 局部确认窗口
Vue.component('Upload', Upload) // 文件上传
Vue.component('TreeTable', TreeTable) // 文件上传
Vue.component('TopicInfo', TopicInfo) // 文件上传
}
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'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import './assets/less/base.less'
import './assets/less/org-tree.less'
import App from './App.vue'
import router from './router'
import store from './store'
......
package com.mortals.xhx.base.system.gentable.model;
import java.util.Date;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.common.utils.StringUtils;
/**
*
* Description:GentableColumn
* date: 2021-9-28 10:10:15
* date: 2021-9-29 18:10:02
*/
public class GentableColumnEntity extends BaseEntityLong {
private static final long serialVersionUID = 1632795015375L;
public class GentableColumnEntity extends BaseEntityLong{
private static final long serialVersionUID = 1632910202558L;
/**
......@@ -83,6 +83,11 @@ public class GentableColumnEntity extends BaseEntityLong {
*/
private Integer htmlType;
/**
* 默认值
*/
private String defaultValue;
/**
* 排序
*/
......@@ -108,353 +113,290 @@ public class GentableColumnEntity extends BaseEntityLong {
*/
private String createUser;
public GentableColumnEntity() {
public GentableColumnEntity(){
}
/**
* 获取 所属表编号
*
* @return tableId
*/
public Long getTableId() {
return this.tableId;
}
/**
* 设置 所属表编号
*
* @param tableId
*/
public void setTableId(Long tableId) {
this.tableId = tableId;
}
/**
* 获取 列名称
*
* @return columnName
*/
public String getColumnName() {
return this.columnName;
}
/**
* 设置 列名称
*
* @param columnName
*/
public void setColumnName(String columnName) {
this.columnName = columnName;
}
/**
* 获取 列描述
*
* @return columnComment
*/
public String getColumnComment() {
return this.columnComment;
}
/**
* 设置 列描述
*
* @param columnComment
*/
public void setColumnComment(String columnComment) {
this.columnComment = columnComment;
}
/**
* 获取 列类型
*
* @return columnType
*/
public String getColumnType() {
return this.columnType;
}
/**
* 设置 列类型
*
* @param columnType
*/
public void setColumnType(String columnType) {
this.columnType = columnType;
}
/**
* 获取 JAVA类型
*
* @return javaType
*/
public String getJavaType() {
return this.javaType;
}
/**
* 设置 JAVA类型
*
* @param javaType
*/
public void setJavaType(String javaType) {
this.javaType = javaType;
}
/**
* 获取 JAVA字段名
*
* @return javaField
*/
public String getJavaField() {
return this.javaField;
}
/**
* 设置 JAVA字段名
*
* @param javaField
*/
public void setJavaField(String javaField) {
this.javaField = javaField;
}
/**
* 获取 是否primaryKey(0否,1 是)
*
* @return isPrimaryKey
*/
public Integer getIsPrimaryKey() {
return this.isPrimaryKey;
}
/**
* 设置 是否primaryKey(0否,1 是)
*
* @param isPrimaryKey
*/
public void setIsPrimaryKey(Integer isPrimaryKey) {
this.isPrimaryKey = isPrimaryKey;
}
/**
* 获取 是否自增(0否,1 是)
*
* @return isIncrement
*/
public Integer getIsIncrement() {
return this.isIncrement;
}
/**
* 设置 是否自增(0否,1 是)
*
* @param isIncrement
*/
public void setIsIncrement(Integer isIncrement) {
this.isIncrement = isIncrement;
}
/**
* 获取 是否必填(0否,1 是)
*
* @return isRequired
*/
public Integer getIsRequired() {
return this.isRequired;
}
/**
* 设置 是否必填(0否,1 是)
*
* @param isRequired
*/
public void setIsRequired(Integer isRequired) {
this.isRequired = isRequired;
}
/**
* 获取 是否为插入字段(0否,1 是)
*
* @return isInsert
*/
public Integer getIsInsert() {
return this.isInsert;
}
/**
* 设置 是否为插入字段(0否,1 是)
*
* @param isInsert
*/
public void setIsInsert(Integer isInsert) {
this.isInsert = isInsert;
}
/**
* 获取 是否编辑字段(0否,1 是)
*
* @return isEdit
*/
public Integer getIsEdit() {
return this.isEdit;
}
/**
* 设置 是否编辑字段(0否,1 是)
*
* @param isEdit
*/
public void setIsEdit(Integer isEdit) {
this.isEdit = isEdit;
}
/**
* 获取 是否列表字段(0否,1 是)
*
* @return isList
*/
public Integer getIsList() {
return this.isList;
}
/**
* 设置 是否列表字段(0否,1 是)
*
* @param isList
*/
public void setIsList(Integer isList) {
this.isList = isList;
}
/**
* 获取 是否查询字段(0否,1 是)
*
* @return isQuery
*/
public Integer getIsQuery() {
return this.isQuery;
}
/**
* 设置 是否查询字段(0否,1 是)
*
* @param isQuery
*/
public void setIsQuery(Integer isQuery) {
this.isQuery = isQuery;
}
/**
* 获取 显示类型(1.文本框、2.文本域、3.下拉框、4.复选框、5.单选框、6.日期控件)
*
* @return htmlType
*/
public Integer getHtmlType() {
return this.htmlType;
}
/**
* 设置 显示类型(1.文本框、2.文本域、3.下拉框、4.复选框、5.单选框、6.日期控件)
*
* @param htmlType
*/
public void setHtmlType(Integer htmlType) {
this.htmlType = htmlType;
}
/**
* 获取 默认值
* @return defaultValue
*/
public String getDefaultValue() {
return this.defaultValue;
}
/**
* 设置 默认值
* @param defaultValue
*/
public void setDefaultValue(String defaultValue) {
this.defaultValue = defaultValue;
}
/**
* 获取 排序
*
* @return sort
*/
public Integer getSort() {
return this.sort;
}
/**
* 设置 排序
*
* @param sort
*/
public void setSort(Integer sort) {
this.sort = sort;
}
/**
* 获取 变更时间
*
* @return updateTime
*/
public Date getUpdateTime() {
return this.updateTime;
}
/**
* 设置 变更时间
*
* @param updateTime
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
/**
* 获取 变更用户loginName
*
* @return updateUser
*/
public String getUpdateUser() {
return this.updateUser;
}
/**
* 设置 变更用户loginName
*
* @param updateUser
*/
public void setUpdateUser(String updateUser) {
this.updateUser = updateUser;
}
/**
* 获取 创建时间
*
* @return createTime
*/
public Date getCreateTime() {
return this.createTime;
}
/**
* 设置 创建时间
*
* @param createTime
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 获取 创建用户loginName
*
* @return createUser
*/
public String getCreateUser() {
return this.createUser;
}
/**
* 设置 创建用户loginName
*
* @param createUser
*/
public void setCreateUser(String createUser) {
this.createUser = createUser;
}
public boolean isSuperColumn() {
return isSuperColumn(this.javaField);
}
......@@ -462,7 +404,8 @@ public class GentableColumnEntity extends BaseEntityLong {
public static boolean isSuperColumn(String javaField) {
return StringUtils.equalsAnyIgnoreCase(javaField,
// BaseEntity
"createUser", "createTime", "updateUser", "updateTime","createUserId","updateUserId",
"id","createUser", "createTime", "updateUser",
"updateTime","createUserId","updateUserId",
// TreeEntity
"parentName", "parentId", "orderNum", "ancestors");
}
......@@ -471,7 +414,6 @@ public class GentableColumnEntity extends BaseEntityLong {
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null)
......@@ -485,7 +427,7 @@ public class GentableColumnEntity extends BaseEntityLong {
return false;
}
public String toString() {
public String toString(){
StringBuilder sb = new StringBuilder("");
sb
.append(",id:").append(getId())
......@@ -503,6 +445,7 @@ public class GentableColumnEntity extends BaseEntityLong {
.append(",isList:").append(getIsList())
.append(",isQuery:").append(getIsQuery())
.append(",htmlType:").append(getHtmlType())
.append(",defaultValue:").append(getDefaultValue())
.append(",sort:").append(getSort())
.append(",updateTime:").append(getUpdateTime())
.append(",updateUser:").append(getUpdateUser())
......@@ -512,7 +455,7 @@ public class GentableColumnEntity extends BaseEntityLong {
return sb.toString();
}
public void initAttrValue() {
public void initAttrValue(){
this.tableId = null;
this.columnName = null;
this.columnComment = null;
......@@ -527,6 +470,7 @@ public class GentableColumnEntity extends BaseEntityLong {
this.isList = null;
this.isQuery = null;
this.htmlType = null;
this.defaultValue = null;
this.sort = null;
this.updateTime = 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 {
*/
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;
import com.mortals.xhx.base.system.gentable.model.GentableQuery;
import java.util.List;
import java.util.Map;
/**
* <p>Title: 代码生成业务表</p>
......@@ -56,6 +57,13 @@ public interface GentableService extends ICRUDService<GentableEntity,Long> {
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;
import com.mortals.xhx.common.code.CacheServiceTypeEnum;
import com.mortals.xhx.common.code.DividedTableTypeEnum;
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.utils.FreeMarkerUtils;
import com.mortals.xhx.common.utils.GenUtils;
import com.mortals.xhx.common.utils.StringUtils;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -28,9 +32,7 @@ import org.springframework.util.ObjectUtils;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
......@@ -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
protected void updateAfter(GentableEntity entity, Context context) throws AppException {
if (!ObjectUtils.isEmpty(entity.getColumns())) {
gentableColumnService.update(entity.getColumns());
}
super.updateAfter(entity, context);
}
......@@ -142,42 +183,39 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
private void generatorCode(String tableName, ZipOutputStream zip) {
GentableEntity gentableEntity = this.selectOne(new GentableQuery().tableName(tableName));
if (!ObjectUtils.isEmpty(gentableEntity)) {
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");
StringWriter sw = new StringWriter();
// VelocityInitializer.initVelocity();
//
// VelocityContext context = VelocityUtils.prepareContext(table);
//
// // 获取模板列表
// List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory());
// for (String template : templates) {
// // 渲染模板
// StringWriter sw = new StringWriter();
// Template tpl = Velocity.getTemplate(template, Constants.UTF8);
// tpl.merge(context, sw);
// try {
// // 添加到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);
// }
// }
//通过模板生成不同的业务类
try {
template.process(data, sw);
System.out.println(sw.toString());
// 添加到zip
zip.putNextEntry(new ZipEntry(FreeMarkerUtils.getFileName(template.getName(), gentableEntity)));
IOUtils.write(sw.toString(), zip, Constant.UTF8);
IOUtils.closeQuietly(sw);
zip.flush();
zip.closeEntry();
} catch (Exception e) {
log.error("渲染模板失败,表名:" + gentableEntity.getTableName(), e);
}
}
}
......@@ -220,8 +258,19 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
if (StringUtils.isNotEmpty(subTableName)) {
GentableEntity gentableEntity = this.selectOne(new GentableQuery().tableName(subTableName));
if (!ObjectUtils.isEmpty(gentableEntity)) {
List<GentableColumnEntity> columnEntities = gentableColumnService.find(new GentableColumnQuery().tableId(gentableEntity.getId()));
gentableEntity.setColumns(columnEntities);
setPkColumn(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;
import com.mortals.xhx.base.system.gentable.service.GentableColumnService;
import com.mortals.xhx.base.system.gentable.service.GentableService;
import com.mortals.xhx.common.code.*;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -18,6 +19,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -133,26 +135,63 @@ public class GentableController extends BaseCRUDJsonMappingController<GentableSe
/**
* 通过表名生成代码
*
* @param tableName
* @return
*/
@PostMapping("/genCode")
public String genCode(@RequestParam(value = "tableName") String tableName) {
public void genCode(@RequestParam(value = "tableName") String tableName) {
Map<String, Object> model = new HashMap<>();
JSONObject ret = new JSONObject();
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;
try {
Map<String, String> model = this.service.previewCode(id);
ret.put(KEY_RESULT_DATA, model);
recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) {
code = VALUE_RESULT_FAILURE;
this.doException(request, busiDesc, model, e);
}
ret.put(KEY_RESULT_CODE, code);
ret.put(KEY_RESULT_DATA, model);
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;
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 */
public final static String BASEMANAGER_VERSION = "Z-BASE.MANAGER-S1.0.0";
......
......@@ -6,110 +6,177 @@ package com.mortals.xhx.common.key;
* @author: zxfei
* @date: 2021/9/28 15:43
*/
public class GenConstants
{
/** 单表(增删改查) */
public class GenConstants {
/**
* 单表(增删改查)
*/
public static final String TPL_CRUD = "crud";
/** 树表(增删改查) */
/**
* 树表(增删改查)
*/
public static final String TPL_TREE = "tree";
/** 主子表(增删改查) */
/**
* 主子表(增删改查)
*/
public static final String TPL_SUB = "sub";
/** 树编码字段 */
/**
* 树编码字段
*/
public static final String TREE_CODE = "treeCode";
/** 树父编码字段 */
/**
* 树父编码字段
*/
public static final String TREE_PARENT_CODE = "treeParentCode";
/** 树名称字段 */
/**
* 树名称字段
*/
public static final String TREE_NAME = "treeName";
/** 上级菜单ID字段 */
/**
* 上级菜单ID字段
*/
public static final String PARENT_MENU_ID = "parentMenuId";
/** 上级菜单名称字段 */
/**
* 上级菜单名称字段
*/
public static final String PARENT_MENU_NAME = "parentMenuName";
/** 数据库字符串类型 */
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_NUMBER = { "tinyint", "smallint", "mediumint", "int", "number", "integer",
"bit", "bigint", "float", "double", "decimal" };
/** 页面不需要编辑字段 */
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[] COLUMNNAME_NOT_QUERY = { "id", "create_by", "create_time", "del_flag", "update_by",
"update_time", "remark" };
/** Entity基类字段 */
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[] 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_NUMBER = {"tinyint", "smallint", "mediumint", "int", "number", "integer",
"bit", "bigint", "float", "double", "decimal"};
/**
* 页面不需要编辑字段
*/
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[] 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_TEXTAREA = "textarea";
/** 下拉框 */
/**
* 下拉框
*/
public static final String HTML_SELECT = "select";
/** 单选框 */
/**
* 单选框
*/
public static final String HTML_RADIO = "radio";
/** 复选框 */
/**
* 复选框
*/
public static final String HTML_CHECKBOX = "checkbox";
/** 日期控件 */
/**
* 日期控件
*/
public static final String HTML_DATETIME = "datetime";
/** 图片上传控件 */
/**
* 图片上传控件
*/
public static final String HTML_IMAGE_UPLOAD = "imageUpload";
/** 文件上传控件 */
/**
* 文件上传控件
*/
public static final String HTML_FILE_UPLOAD = "fileUpload";
/** 富文本控件 */
/**
* 富文本控件
*/
public static final String HTML_EDITOR = "editor";
/** 字符串类型 */
/**
* 字符串类型
*/
public static final String TYPE_STRING = "String";
/** 整型 */
/**
* 整型
*/
public static final String TYPE_INTEGER = "Integer";
/** 长整型 */
/**
* 长整型
*/
public static final String TYPE_LONG = "Long";
/** 浮点型 */
/**
* 浮点型
*/
public static final String TYPE_DOUBLE = "Double";
/** 高精度计算类型 */
/**
* 高精度计算类型
*/
public static final String TYPE_BIGDECIMAL = "BigDecimal";
/** 时间类型 */
/**
* 时间类型
*/
public static final String TYPE_DATE = "Date";
/** 模糊查询 */
/**
* 模糊查询
*/
public static final String QUERY_LIKE = "LIKE";
/** 需要 */
/**
* 需要
*/
public static final Integer REQUIRE = 1;
}
package com.mortals.xhx.common.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
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.GentableEntity;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.key.GenConstants;
import freemarker.cache.ClassTemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.TemplateExceptionHandler;
import lombok.SneakyThrows;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import static com.mortals.xhx.common.utils.GenUtils.getBusinessName;
public class FreeMarkerUtils {
......@@ -43,14 +47,22 @@ public class FreeMarkerUtils {
/**
* 初始化freeMaker方法
*/
@SneakyThrows
public static void initFreeMarker() {
//初始化模板引擎
cfg = new Configuration(Configuration.VERSION_2_3_29);
ClassLoader loader = FreeMarkerUtils.class.getClassLoader();
//指定模板文件存放的地方
cfg.setClassLoaderForTemplateLoading(FreeMarkerUtils.class.getClassLoader(), "/template/java");
cfg.setClassLoaderForTemplateLoading(FreeMarkerUtils.class.getClassLoader(), "/template/sql");
cfg.setClassLoaderForTemplateLoading(FreeMarkerUtils.class.getClassLoader(), "/template/vue");
cfg.setClassLoaderForTemplateLoading(FreeMarkerUtils.class.getClassLoader(), "/template/xml");
cfg.setDirectoryForTemplateLoading(new File(System.getProperty("user.dir") + "\\government-manager\\target\\classes\\template\\java"));
//cfg.setDirectoryForTemplateLoading(new File(System.getProperty("user.dir") + "\\government-manager\\target\\classes\\template\\xml\\"));
//cfg.set
// 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");
//设置异常的处理方式
......@@ -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) {
try {
......@@ -86,7 +126,8 @@ public class FreeMarkerUtils {
data.put("tplCategory", genTable.getTplCategory());
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", StringUtils.uncapitalize(genTable.getClassName()));
data.put("moduleName", genTable.getModuleName());
......@@ -99,13 +140,18 @@ public class FreeMarkerUtils {
data.put("pkColumn", genTable.getPkColumn());
data.put("importList", getImportList(genTable));
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)) {
setTreeFreeMarkerData(data, genTable);
}
if (GenConstants.TPL_SUB.equals(tplCategory)) {
setSubFreeMarkerData(data, genTable);
}
// System.out.println(JSON.toJSONString(data));
return data;
}
......@@ -237,7 +283,7 @@ public class FreeMarkerUtils {
for (GentableColumnEntity column : columns) {
if (!column.isSuperColumn() && GenConstants.TYPE_DATE.equals(column.getJavaType())) {
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())) {
importList.add("java.math.BigDecimal");
}
......@@ -268,6 +314,9 @@ public class FreeMarkerUtils {
//实体类输出路径
if (template.contains("entity.ftl")) {
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;
import cn.hutool.core.util.StrUtil;
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.GentableEntity;
......@@ -11,6 +12,7 @@ import org.apache.commons.lang3.RegExUtils;
import java.util.Arrays;
import java.util.Date;
import java.util.stream.Collectors;
/**
* 代码生成器 工具类
......@@ -43,7 +45,7 @@ public class GenUtils {
column.setCreateUser(table.getCreateUser());
column.setCreateTime(new Date());
// 设置java字段名
column.setJavaField(StringUtils.toCamelCase(columnName));
column.setJavaField(StrUtil.toCamelCase(columnName));
// 设置默认类型
column.setJavaType(GenConstants.TYPE_STRING);
......@@ -144,9 +146,19 @@ public class GenUtils {
* @return 业务名
*/
public static String getBusinessName(String tableName) {
int lastIndex = tableName.lastIndexOf("_");
int nameLength = tableName.length();
String businessName = StringUtils.substring(tableName, lastIndex + 1, nameLength);
//替换前缀
boolean autoRemovePre = GenConfig.getAutoRemovePre();
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;
}
......@@ -222,4 +234,15 @@ public class GenUtils {
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.*;
* @author: zxfei
* @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 char SEPARATOR = '_';
/**
* 获取参数不为空值
*
*
* @param value defaultValue 要判断的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;
}
/**
* * 判断一个Collection是否为空, 包含List,Set,Queue
*
*
* @param coll 要判断的Collection
* @return true:为空 false:非空
*/
public static boolean isEmpty(Collection<?> coll)
{
public static boolean isEmpty(Collection<?> coll) {
return isNull(coll) || coll.isEmpty();
}
/**
* * 判断一个Collection是否非空,包含List,Set,Queue
*
*
* @param coll 要判断的Collection
* @return true:非空 false:空
*/
public static boolean isNotEmpty(Collection<?> coll)
{
public static boolean isNotEmpty(Collection<?> coll) {
return !isEmpty(coll);
}
/**
* * 判断一个对象数组是否为空
*
*
* @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);
}
/**
* * 判断一个对象数组是否非空
*
*
* @param objects 要判断的对象数组
* @return true:非空 false:空
*/
public static boolean isNotEmpty(Object[] objects)
{
public static boolean isNotEmpty(Object[] objects) {
return !isEmpty(objects);
}
/**
* * 判断一个Map是否为空
*
*
* @param map 要判断的Map
* @return true:为空 false:非空
*/
public static boolean isEmpty(Map<?, ?> map)
{
public static boolean isEmpty(Map<?, ?> map) {
return isNull(map) || map.isEmpty();
}
/**
* * 判断一个Map是否为空
*
*
* @param map 要判断的Map
* @return true:非空 false:空
*/
public static boolean isNotEmpty(Map<?, ?> map)
{
public static boolean isNotEmpty(Map<?, ?> map) {
return !isEmpty(map);
}
/**
* * 判断一个字符串是否为空串
*
*
* @param str String
* @return true:为空 false:非空
*/
public static boolean isEmpty(String str)
{
public static boolean isEmpty(String str) {
return isNull(str) || NULLSTR.equals(str.trim());
}
/**
* * 判断一个字符串是否为非空串
*
*
* @param str String
* @return true:非空串 false:空串
*/
public static boolean isNotEmpty(String str)
{
public static boolean isNotEmpty(String str) {
return !isEmpty(str);
}
/**
* * 判断一个对象是否为空
*
*
* @param object Object
* @return true:为空 false:非空
*/
public static boolean isNull(Object object)
{
public static boolean isNull(Object object) {
return object == null;
}
/**
* * 判断一个对象是否非空
*
*
* @param object Object
* @return true:非空 false:空
*/
public static boolean isNotNull(Object object)
{
public static boolean isNotNull(Object object) {
return !isNull(object);
}
/**
* * 判断一个对象是否是数组类型(Java基本型别的数组)
*
*
* @param object 对象
* @return true:是数组 false:不是数组
*/
public static boolean isArray(Object object)
{
public static boolean isArray(Object object) {
return isNotNull(object) && object.getClass().isArray();
}
/**
* 去空格
*/
public static String trim(String str)
{
public static String trim(String str) {
return (str == null ? "" : str.trim());
}
/**
* 截取字符串
*
* @param str 字符串
*
* @param str 字符串
* @param start 开始
* @return 结果
*/
public static String substring(final String str, int start)
{
if (str == null)
{
public static String substring(final String str, int start) {
if (str == null) {
return NULLSTR;
}
if (start < 0)
{
if (start < 0) {
start = str.length() + start;
}
if (start < 0)
{
if (start < 0) {
start = 0;
}
if (start > str.length())
{
if (start > str.length()) {
return NULLSTR;
}
......@@ -190,44 +175,36 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 截取字符串
*
* @param str 字符串
*
* @param str 字符串
* @param start 开始
* @param end 结束
* @param end 结束
* @return 结果
*/
public static String substring(final String str, int start, int end)
{
if (str == null)
{
public static String substring(final String str, int start, int end) {
if (str == null) {
return NULLSTR;
}
if (end < 0)
{
if (end < 0) {
end = str.length() + end;
}
if (start < 0)
{
if (start < 0) {
start = str.length() + start;
}
if (end > str.length())
{
if (end > str.length()) {
end = str.length();
}
if (start > end)
{
if (start > end) {
return NULLSTR;
}
if (start < 0)
{
if (start < 0) {
start = 0;
}
if (end < 0)
{
if (end < 0) {
end = 0;
}
......@@ -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 \{} for a<br>
* 转义\: format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>
*
*
* @param template 文本模板,被替换的部分用 {} 表示
* @param params 参数值
* @param params 参数值
* @return 格式化后的文本
*/
public static String format(String template, Object... params)
{
if (isEmpty(params) || isEmpty(template))
{
public static String format(String template, Object... params) {
if (isEmpty(params) || isEmpty(template)) {
return template;
}
return StrFormatter.format(template, params);
......@@ -258,47 +233,40 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 字符串转set
*
*
* @param str 字符串
* @param sep 分隔符
* @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));
}
/**
* 字符串转list
*
* @param str 字符串
* @param sep 分隔符
*
* @param str 字符串
* @param sep 分隔符
* @param filterBlank 过滤纯空白
* @param trim 去掉首尾空白
* @param trim 去掉首尾空白
* @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>();
if (StringUtils.isEmpty(str))
{
if (StringUtils.isEmpty(str)) {
return list;
}
// 过滤空白字符串
if (filterBlank && StringUtils.isBlank(str))
{
if (filterBlank && StringUtils.isBlank(str)) {
return list;
}
String[] split = str.split(sep);
for (String string : split)
{
if (filterBlank && StringUtils.isBlank(string))
{
for (String string : split) {
if (filterBlank && StringUtils.isBlank(string)) {
continue;
}
if (trim)
{
if (trim) {
string = string.trim();
}
list.add(string);
......@@ -310,10 +278,8 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 下划线转驼峰命名
*/
public static String toUnderScoreCase(String str)
{
if (str == null)
{
public static String toUnderScoreCase(String str) {
if (str == null) {
return null;
}
StringBuilder sb = new StringBuilder();
......@@ -323,31 +289,23 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
boolean curreCharIsUpperCase = 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);
if (i > 0)
{
if (i > 0) {
preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1));
}
else
{
} else {
preCharIsUpperCase = false;
}
curreCharIsUpperCase = Character.isUpperCase(c);
if (i < (str.length() - 1))
{
if (i < (str.length() - 1)) {
nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1));
}
if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase)
{
if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) {
sb.append(SEPARATOR);
}
else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase)
{
} else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase) {
sb.append(SEPARATOR);
}
sb.append(Character.toLowerCase(c));
......@@ -358,19 +316,15 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 是否包含字符串
*
* @param str 验证字符串
*
* @param str 验证字符串
* @param strs 字符串组
* @return 包含返回true
*/
public static boolean inStringIgnoreCase(String str, String... strs)
{
if (str != null && strs != null)
{
for (String s : strs)
{
if (str.equalsIgnoreCase(trim(s)))
{
public static boolean inStringIgnoreCase(String str, String... strs) {
if (str != null && strs != null) {
for (String s : strs) {
if (str.equalsIgnoreCase(trim(s))) {
return true;
}
}
......@@ -380,31 +334,25 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 将下划线大写方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。 例如:HELLO_WORLD->HelloWorld
*
*
* @param name 转换前的下划线大写方式命名的字符串
* @return 转换后的驼峰式命名的字符串
*/
public static String convertToCamelCase(String name)
{
public static String convertToCamelCase(String name) {
StringBuilder result = new StringBuilder();
// 快速检查
if (name == null || name.isEmpty())
{
if (name == null || name.isEmpty()) {
// 没必要转换
return "";
}
else if (!name.contains("_"))
{
} else if (!name.contains("_")) {
// 不含下划线,仅将首字母大写
return name.substring(0, 1).toUpperCase() + name.substring(1);
}
// 用下划线将原始字符串分割
String[] camels = name.split("_");
for (String camel : camels)
{
for (String camel : camels) {
// 跳过原始字符串中开头、结尾的下换线或双重下划线
if (camel.isEmpty())
{
if (camel.isEmpty()) {
continue;
}
// 首字母大写
......@@ -417,39 +365,43 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 驼峰式命名法 例如:user_name->userName
*/
public static String toCamelCase(String s)
{
if (s == null)
{
public static String toCamelCase(String s) {
if (s == null) {
return null;
}
s = s.toLowerCase();
// s = s.toLowerCase();
StringBuilder sb = new StringBuilder(s.length());
boolean upperCase = false;
for (int i = 0; i < s.length(); i++)
{
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == SEPARATOR)
{
if (c == SEPARATOR) {
upperCase = true;
}
else if (upperCase)
{
} else if (upperCase) {
sb.append(Character.toUpperCase(c));
upperCase = false;
}
else
{
sb.append(c);
} else {
if(i==0){
sb.append(Character.toLowerCase(c));
}else {
sb.append(c);
}
}
}
return sb.toString();
}
@SuppressWarnings("unchecked")
public static <T> T cast(Object obj)
{
public static <T> T cast(Object 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;
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 com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.module.matter.dao.MatterDatumDao;
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>
* <p>Description: MatterDatumDaoImpl DAO接口 </p>
* @author
* @version 1.0.0
*/
* 事项申请材料DaoImpl DAO接口
*
* @author zxfei
* @date 2021-09-30
*/
@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;
import java.math.BigDecimal;
import java.util.Date;
import com.mortals.framework.model.BaseEntityLong;
/**
......@@ -31,6 +32,9 @@ public class MatterEntity extends MatterEntityExt{
*/
private String groupName;
/**
* 区域编码
*/
......
......@@ -5,6 +5,6 @@ gen:
# 默认生成包路径 module 需改成自己的模块名称 如 system monitor tool
packageName: com.mortals.xhx.module
# 自动去除表前缀,默认是false
autoRemovePre: false
autoRemovePre: true
# 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
tablePrefix: sys_,mortals_xhx_,mortals_iot_
\ No newline at end of file
......@@ -20,6 +20,7 @@
<result property="isList" column="isList" />
<result property="isQuery" column="isQuery" />
<result property="htmlType" column="htmlType" />
<result property="defaultValue" column="defaultValue" />
<result property="sort" column="sort" />
<result property="updateTime" column="updateTime" />
<result property="updateUser" column="updateUser" />
......@@ -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')))">
a.htmlType as htmlType,
</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')))">
a.sort as sort,
</if>
......@@ -95,18 +99,18 @@
<!-- 新增 -->
<insert id="insert" parameterType="GentableColumnEntity" useGeneratedKeys="true" keyProperty="id">
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
(#{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 id="insertBatch" parameterType="paramDto">
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
<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>
</insert>
<!-- 根据ParamDto更新 -->
......@@ -183,6 +187,9 @@
<if test="(colPickMode==0 and data.containsKey('htmlTypeIncrement')) or (colPickMode==1 and !data.containsKey('htmlTypeIncrement'))">
a.htmlType=ifnull(a.htmlType,0) + #{data.htmlTypeIncrement},
</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'))">
a.sort=#{data.sort},
</if>
......@@ -372,6 +379,14 @@
</foreach>
</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),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
......@@ -800,6 +815,21 @@
${_conditionType_} a.htmlType <![CDATA[ <= ]]> #{${_conditionParam_}.htmlTypeEnd}
</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.sort != null ">
${_conditionType_} a.sort = #{${_conditionParam_}.sort}
......@@ -969,6 +999,11 @@
<if test='orderCol.htmlType != null and "DESC".equalsIgnoreCase(orderCol.htmlType)'>DESC</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')">
a.sort
<if test='orderCol.sort != null and "DESC".equalsIgnoreCase(orderCol.sort)'>DESC</if>
......
......@@ -7,6 +7,7 @@
<select id="selectDbTableColumnsByName" parameterType="String" resultMap="GentableColumnEntity-Map">
SELECT
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 column_key = 'PRI' THEN '1' ELSE '0' END ) AS isPrimaryKey,
ordinal_position AS sort,
......@@ -17,7 +18,7 @@
information_schema.COLUMNS
WHERE
table_schema = ( SELECT DATABASE ( ) )
AND table_name = 'mortals_xhx_accept'
AND table_name = #{tableName}
ORDER BY
ordinal_position
</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"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"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">
<#list fields as field>
<result property="${field.attName}" column="${field.columnName}" />
<resultMap type="${ClassName}Entity" id="${ClassName}Entity-Map">
<#list columns as column>
<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>
</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">
CREATE TABLE `<#noparse>$</#noparse>{tableName}`(
<#list fields as field>
<#if (field.pk)??>
<#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}',
CREATE TABLE ${TempTable}(
<#list columns as column>
<#if column.isIncrement?? && column.isIncrement==1 >
<#assign autoInc>auto_isIncrement</#assign>
<#else>
<#assign autoInc></#assign>
</#if>
<#else>
`${field.columnName}` ${field.sourceColumnType} ${ (field.isNotNull == '是') ?string('NOT NULL','DEFAULT NULL')}<#if (field.defaultValue)??> default '${field.defaultValue}'</#if> COMMENT '${field.remarks}',
</#if>
<#if column.isRequired?? && column.isRequired==1 >
<#assign Required>NOT NULL</#assign>
<#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>
PRIMARY KEY (`${pk}`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='${entityPackageDesc}';
PRIMARY KEY (`${pkColumn.columnName}`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='${functionName}';
</update>
</#if>
<!-- 表所有列 -->
<sql id="_columns">
<trim suffixOverrides="," suffix="">
<#list fields as field>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('${field.attName}') or colPickMode == 1 and data.containsKey('${field.attName}')))">
a.${field.columnName} as ${field.columnName},
<#list columns as column>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('${column.javaField}') or colPickMode == 1 and data.containsKey('${column.javaField}')))">
a.${column.columnName} as ${column.javaField},
</if>
</#list>
</trim>
</sql>
<!-- 新增 -->
<#if auto_inc=="true">
<insert id="insert" parameterType="${entityClassName}Entity" useGeneratedKeys="true" keyProperty="${pk}">
insert into ${sourceTableName}
(<#list fields as field><#if field.columnName != "${pk}">${field.columnName}<#sep>,</#if></#list>)
VALUES
(<#list fields as field><#if field.columnName != "${pk}"><#noparse>#</#noparse>{${field.attName}}<#sep>,</#if></#list>)
</insert>
<!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="${ClassName}Entity" <#if pkColumn.isIncrement?? && pkColumn.isIncrement==1> useGeneratedKeys="true" keyProperty="${pkColumn.javaField}"</#if>>
insert into ${TempTable}
(<#list columns as column><#if column.columnName != pkColumn.columnName || pkColumn.isIncrement!=1>${column.columnName}<#sep>,</#if></#list>)
VALUES
(<#list columns as column><#if column.columnName != pkColumn.columnName || pkColumn.isIncrement!=1><#noparse>#</#noparse>{${column.javaField}}<#sep>,</#if></#list>)
</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更新 -->
<update id="update" parameterType="paramDto">
<#if isSubmeter??>
update <#noparse>$</#noparse>{tableName} as a
<#else>
update ${sourceTableName} as a
</#if>
update ${TempTable} as a
set
<trim suffixOverrides="," suffix="">
<#list fields as field>
<#if field.columnName != "id">
<if test="(colPickMode==0 and data.containsKey('${field.attName}')) or (colPickMode==1 and !data.containsKey('${field.attName}'))">
a.${field.columnName}=<#noparse>#</#noparse>{data.${field.attName}},
<#list columns as column>
<#-- 非主键更新 -->
<#if column.columnName != pkColumn.columnName>
<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 field.typeName == "java.lang.Integer"||field.typeName == "java.lang.Long"||field.typeName == "BigDecimal">
<if test="(colPickMode==0 and data.containsKey('${field.attName}Increment')) or (colPickMode==1 and !data.containsKey('${field.attName}Increment'))">
a.${field.columnName}=ifnull(a.${field.columnName},0) + <#noparse>#</#noparse>{data.${field.attName}Increment},
<#if column.javaType == "Integer"||column.javaType == "Long"||column.javaType == "BigDecimal">
<if test="(colPickMode==0 and data.containsKey('${column.javaField}Increment')) or (colPickMode==1 and !data.containsKey('${column.javaField}Increment'))">
a.${column.columnName}=ifnull(a.${column.columnName},0) + <#noparse>#</#noparse>{data.${column.javaField}Increment},
</if>
</#if>
</#if>
......@@ -106,29 +119,29 @@
</update>
<!-- 批量更新 -->
<update id="updateBatch" parameterType="paramDto">
update ${sourceTableName} as a
update ${TempTable} as a
<trim prefix="set" suffixOverrides=",">
<#list fields as field>
<#list columns as column>
<#if field.columnName != "id">
<#if field.typeName == "String"||field.typeName == "java.util.Date">
<trim prefix="${field.columnName}=(case" suffix="ELSE ${field.columnName} end),">
<#if column.columnName != pkColumn.columnName>
<#if column.javaType == "String"||column.javaType == "Date">
<trim prefix="${column.columnName}=(case" suffix="ELSE ${column.columnName} end),">
<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}'))">
when a.id=<#noparse>#</#noparse>{item.id} then <#noparse>#</#noparse>{item.${field.attName}}
<if test="(colPickMode==0 and item.containsKey('${column.javaField}')) or (colPickMode==1 and !item.containsKey('${column.javaField}'))">
when a.${pkColumn.columnName}=<#noparse>#</#noparse>{item.${pkColumn.javaField}} then <#noparse>#</#noparse>{item.${column.javaField}}
</if>
</foreach>
</trim>
</#if>
<#if field.typeName == "java.lang.Integer"||field.typeName == "java.lang.Long"||field.typeName == "BigDecimal">
<trim prefix="${field.columnName}=(case" suffix="ELSE ${field.columnName} end),">
<#if column.javaType == "java.lang.Integer"||column.javaType == "java.lang.Long"||column.javaType == "BigDecimal">
<trim prefix="${column.columnName}=(case" suffix="ELSE ${column.columnName} end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('${field.attName}')) or (colPickMode==1 and !item.containsKey('${field.attName}'))">
when a.id=<#noparse>#</#noparse>{item.id} then <#noparse>#</#noparse>{item.${field.attName}}
<when test="(colPickMode==0 and item.containsKey('${column.javaField}')) or (colPickMode==1 and !item.containsKey('${column.javaField}'))">
when a.${pkColumn.columnName}=<#noparse>#</#noparse>{item.${pkColumn.javaField}} then <#noparse>#</#noparse>{item.${column.javaField}}
</when>
<when test="(colPickMode==0 and item.containsKey('${field.attName}Increment')) or (colPickMode==1 and !item.containsKey('${field.attName}Increment'))">
when a.id=<#noparse>#</#noparse>{item.id} then ifnull(a.${field.columnName},0) + <#noparse>#</#noparse>{item.${field.attName}Increment}
<when test="(colPickMode==0 and item.containsKey('${column.javaField}Increment')) or (colPickMode==1 and !item.containsKey('${column.javaField}Increment'))">
when a.${pkColumn.columnName}=<#noparse>#</#noparse>{item.${pkColumn.javaField}} then ifnull(a.${column.columnName},0) + <#noparse>#</#noparse>{item.${column.javaField}Increment}
</when>
</choose>
</foreach>
......@@ -137,31 +150,31 @@
</#if>
</#list>
</trim>
where ${pk} in
where ${pkColumn.columnName} in
<foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")">
<#noparse>#</#noparse>{item.id}
<#noparse>#</#noparse>{item.${pkColumn.javaField}}
</foreach>
</update>
<!-- 根据主健查询 -->
<select id="getByKey" parameterType="paramDto" resultMap="${entityClassName}Entity-Map">
<select id="getByKey" parameterType="paramDto" resultMap="${ClassName}Entity-Map">
select <include refid="_columns"/>
from ${sourceTableName} as a
where a.${pk}=<#noparse>#</#noparse>{condition.id}
from ${TempTable} as a
where a.${pkColumn.columnName}=<#noparse>#</#noparse>{condition.${pkColumn.javaField}}
</select>
<!-- 根据主健删除 -->
<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 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=")">
<#noparse>#</#noparse>{item}
</foreach>
</delete>
<!-- 根据paramDto删除一批 -->
<delete id="deleteByMap" parameterType="paramDto">
delete a.* from ${sourceTableName} as a
delete a.* from ${TempTable} as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
......@@ -170,9 +183,9 @@
</trim>
</delete>
<!-- 获取列表 -->
<select id="getList" parameterType="paramDto" resultMap="${entityClassName}Entity-Map">
<select id="getList" parameterType="paramDto" resultMap="${ClassName}Entity-Map">
select <include refid="_columns"/>
from ${sourceTableName} as a
from ${TempTable} as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
......@@ -184,7 +197,7 @@
<!-- 获取 -->
<select id="getListCount" parameterType="paramDto" resultType="int">
select count(1)
from ${sourceTableName} as a
from ${TempTable} as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
......@@ -232,63 +245,63 @@
<if test="conditionParamRef.containsKey('id')">
<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>
<#list fields as field>
<#if field.typeName == "java.lang.Long"||field.typeName == "java.lang.Integer"||field.typeName == "BigDecimal">
<if test="conditionParamRef.containsKey('${field.attName}')">
<if test="conditionParamRef.${field.attName} != null ">
<#noparse>${_conditionType_}</#noparse> a.${field.columnName} = <#noparse>#{${_conditionParam_}</#noparse>.${field.attName}}
<#list columns as column>
<#if column.javaType == "Long"||column.javaType == "Integer"||column.javaType == "BigDecimal">
<if test="conditionParamRef.containsKey('${column.javaField}')">
<if test="conditionParamRef.${column.javaField} != null ">
<#noparse>${_conditionType_}</#noparse> a.${column.columnName} = <#noparse>#{${_conditionParam_}</#noparse>.${column.javaField}}
</if>
<if test="conditionParamRef.${field.attName} == null">
<#noparse>${_conditionType_}</#noparse> a.${field.columnName} is null
<if test="conditionParamRef.${column.javaField} == null">
<#noparse>${_conditionType_}</#noparse> a.${column.columnName} is null
</if>
</if>
<if test="conditionParamRef.containsKey('${field.attName}List')">
<#noparse>${_conditionType_}</#noparse> a.${field.columnName} in
<foreach collection="conditionParamRef.${field.attName}List" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('${column.javaField}List')">
<#noparse>${_conditionType_}</#noparse> a.${column.columnName} in
<foreach collection="conditionParamRef.${column.javaField}List" open="(" close=")" index="index" item="item" separator=",">
<#noparse>#{item}</#noparse>
</foreach>
</if>
<if test="conditionParamRef.containsKey('${field.attName}Start') and conditionParamRef.${field.attName}Start != null">
<#noparse>${_conditionType_}</#noparse> a.${field.columnName} <![CDATA[ >= ]]> <#noparse>#{${_conditionParam_}</#noparse>.${field.attName}Start}
<if test="conditionParamRef.containsKey('${column.javaField}Start') and conditionParamRef.${column.javaField}Start != null">
<#noparse>${_conditionType_}</#noparse> a.${column.columnName} <![CDATA[ >= ]]> <#noparse>#{${_conditionParam_}</#noparse>.${column.javaField}Start}
</if>
<if test="conditionParamRef.containsKey('${field.attName}End') and conditionParamRef.${field.attName}End != null">
<#noparse>${_conditionType_}</#noparse> a.${field.columnName} <![CDATA[ <= ]]> <#noparse>#{${_conditionParam_}</#noparse>.${field.attName}End}
<if test="conditionParamRef.containsKey('${column.javaField}End') and conditionParamRef.${column.javaField}End != null">
<#noparse>${_conditionType_}</#noparse> a.${column.columnName} <![CDATA[ <= ]]> <#noparse>#{${_conditionParam_}</#noparse>.${column.javaField}End}
</if>
</#if>
<#if field.typeName == "String">
<if test="conditionParamRef.containsKey('${field.attName}')">
<if test="conditionParamRef.${field.attName} != null and conditionParamRef.${field.attName} != ''">
<#noparse>${_conditionType_}</#noparse> a.${field.columnName} like <#noparse>#{${_conditionParam_}</#noparse>.${field.attName}}
<#if column.javaType == "String">
<if test="conditionParamRef.containsKey('${column.javaField}')">
<if test="conditionParamRef.${column.javaField} != null and conditionParamRef.${column.javaField} != ''">
<#noparse>${_conditionType_}</#noparse> a.${column.columnName} like <#noparse>#{${_conditionParam_}</#noparse>.${column.javaField}}
</if>
<if test="conditionParamRef.${field.attName} == null">
<#noparse>${_conditionType_}</#noparse> a.${field.columnName} is null
<if test="conditionParamRef.${column.javaField} == null">
<#noparse>${_conditionType_}</#noparse> a.${column.columnName} is null
</if>
</if>
<if test="conditionParamRef.containsKey('${field.attName}List')">
<#noparse>${_conditionType_}</#noparse> a.${field.columnName} in
<foreach collection="conditionParamRef.${field.attName}List" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('${column.javaField}List')">
<#noparse>${_conditionType_}</#noparse> a.${column.columnName} in
<foreach collection="conditionParamRef.${column.javaField}List" open="(" close=")" index="index" item="item" separator=",">
<#noparse>#</#noparse>{item}
</foreach>
</if>
</#if>
<#if field.typeName == "java.util.Date">
<if test="conditionParamRef.containsKey('${field.attName}')">
<if test="conditionParamRef.${field.attName} != null ">
<#noparse>$</#noparse>{_conditionType_} a.${field.columnName} = <#noparse>#{$</#noparse>{_conditionParam_}.${field.attName}}
<#if column.javaType == "java.util.Date">
<if test="conditionParamRef.containsKey('${column.javaField}')">
<if test="conditionParamRef.${column.javaField} != null ">
<#noparse>$</#noparse>{_conditionType_} a.${column.columnName} = <#noparse>#{$</#noparse>{_conditionParam_}.${column.javaField}}
</if>
<if test="conditionParamRef.${field.attName} == null">
<#noparse>$</#noparse>{_conditionType_} a.${field.columnName} is null
<if test="conditionParamRef.${column.javaField} == null">
<#noparse>$</#noparse>{_conditionType_} a.${column.columnName} is null
</if>
</if>
<if test="conditionParamRef.containsKey('${field.attName}Start') and conditionParamRef.${field.attName}Start != null and conditionParamRef.${field.attName}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')
<if test="conditionParamRef.containsKey('${column.javaField}Start') and conditionParamRef.${column.javaField}Start != null and conditionParamRef.${column.javaField}Start!=''">
<#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 test="conditionParamRef.containsKey('${field.attName}End') and conditionParamRef.${field.attName}End != null and conditionParamRef.${field.attName}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')
<if test="conditionParamRef.containsKey('${column.javaField}End') and conditionParamRef.${column.javaField}End != null and conditionParamRef.${column.javaField}End!=''">
<#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>
</#list>
......@@ -305,10 +318,10 @@
<if test="(orderColList == null or orderColList.isEmpty()) and orderCol != null and !orderCol.isEmpty()">
order by
<trim suffixOverrides="," suffix="">
<#list fields as field>
<if test="orderCol.containsKey('${field.attName}')">
a.${field.columnName}
<if test='orderCol.${field.attName} != null and "DESC".equalsIgnoreCase(orderCol.${field.attName})'>DESC</if>
<#list columns as column>
<if test="orderCol.containsKey('${column.javaField}')">
a.${column.columnName}
<if test='orderCol.${column.javaField} != null and "DESC".equalsIgnoreCase(orderCol.${column.javaField})'>DESC</if>
,
</if>
</#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>
${ captured?replace("\\n\\r", "", "rm") }
</#macro>
<#list tables as table>
DROP TABLE IF EXISTS `${table.tableName}`;
<@compress_single_line>
CREATE TABLE `${table.tableName}`(
<#list table.fields as field>
<#if (field.pk)??>
<#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}',
-- ----------------------------
-- ${functionName}表
-- ----------------------------
DROP TABLE IF EXISTS `${tableName}`;
CREATE TABLE ${tableName}(
<#list columns as column>
<#if column.isIncrement==1 >
<#assign autoInc>auto_increment</#assign>
<#else>
<#assign autoInc></#assign>
</#if>
<#if column.isRequired==1 >
<#assign Required>NOT NULL</#assign>
<#else>
`${field.columnName}` ${field.sourceColumnType} ${ (field.isNotNull == '是') ?string('NOT NULL','DEFAULT NULL')}<#if (field.defaultValue)??> default '${field.defaultValue}'</#if> COMMENT '${field.remarks}',
</#if>
</#list>
PRIMARY KEY (`${table.pk}`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='${table.tableDesc}';
</@compress_single_line>
<#assign Required></#assign>
</#if>
<#if column.isRequired==1 >
<#assign Required>NOT NULL</#assign>
<#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>
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