idea插件easy code代码生成模版
entity
##导入宏定义
$!define
$!prefix
##保存文件(宏定义)
#save("/entity${prefixPathPipe}", "Entity.java")
##包路径(宏定义)
#setPackageSuffix("entity${prefixPathDot}")
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
##自动导入包(全局变量)
$!autoImport
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.baomidou.mybatisplus.annotation.*;
##表注释(宏定义)
#tableComment("表实体类")
@Data
@ApiModel(value = "#if(${tableInfo.comment})${tableInfo.comment}#end")
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("${tableInfo.obj.name}")
public class $!{tableInfo.name}Entity extends Model<$!{tableInfo.name}Entity> {
private static final long serialVersionUID = $tool.serial();
#foreach($column in $tableInfo.fullColumn)
#if($pk.name == $!{column.name})@TableId(value = "$pk.obj.name", type = IdType.AUTO)#end
@ApiModelProperty(value = "#if(${column.comment})${column.comment}#end")
private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end
}
dao
##导入宏定义
$!define
$!prefix
##设置表后缀(宏定义)
#setTableSuffix("Dao")
##保存文件(宏定义)
#save("/dao${prefixPathPipe}", "Dao.java")
##包路径(宏定义)
#setPackageSuffix("dao${prefixPathDot}")
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import $!{tableInfo.savePackageName}.entity${prefixPathDot}.$!{tableInfo.name}Entity;
import org.mapstruct.Mapper;
##表注释(宏定义)
#tableComment("表数据库访问层")
@Mapper
public interface $!{tableName} extends BaseMapper<$!{tableInfo.name}Entity> {
}
service
##导入宏定义
$!define
$!prefix
##设置表后缀(宏定义)
#setTableSuffix("Service")
##保存文件(宏定义)
#save("/service${prefixPathPipe}", "Service.java")
##包路径(宏定义)
#setPackageSuffix("service${prefixPathDot}")
import com.baomidou.mybatisplus.extension.service.IService;
import $!{tableInfo.savePackageName}.entity${prefixPathDot}.$!{tableInfo.name}Entity;
##表注释(宏定义)
#tableComment("表服务接口")
public interface $!{tableName} extends IService<$!{tableInfo.name}Entity> {
}
serviceImpl
##导入宏定义
$!define
$!prefix
##设置表后缀(宏定义)
#setTableSuffix("ServiceImpl")
##保存文件(宏定义)
#save("/service${prefixPathPipe}/impl", "ServiceImpl.java")
##包路径(宏定义)
#setPackageSuffix("service${prefixPathDot}.impl")
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import $!{tableInfo.savePackageName}.dao${prefixPathDot}.$!{tableInfo.name}Dao;
import $!{tableInfo.savePackageName}.entity${prefixPathDot}.$!{tableInfo.name}Entity;
import $!{tableInfo.savePackageName}.service${prefixPathDot}.$!{tableInfo.name}Service;
import org.springframework.stereotype.Service;
import lombok.AllArgsConstructor;
##表注释(宏定义)
#tableComment("表服务实现类")
@Service("$!tool.firstLowerCase($tableInfo.name)Service")
@AllArgsConstructor
public class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Dao, $!{tableInfo.name}Entity> implements $!{tableInfo.name}Service {
}
controller
$!define
$!prefix
##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "Controller"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/controller${prefixPathPipe}"))
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}controller${prefixPathDot};
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import $!{tableInfo.savePackageName}.common.utils.R;
import $!{tableInfo.savePackageName}.common.log.annotation.SysLog;
import $!{tableInfo.savePackageName}.entity${prefixPathDot}.$!{tableInfo.name}Entity;
import $!{tableInfo.savePackageName}.service${prefixPathDot}.$!{tableInfo.name}Service;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
#tableComment("表控制层")
@ApiIgnore
@RestController
@AllArgsConstructor
@RequestMapping("/#if($tableApi)$tableApi#else$!tool.firstLowerCase($tableInfo.name)#end")
@Api(value = "$!tool.firstLowerCase($tableInfo.name)", tags = "#if(${tableInfo.comment})${tableInfo.comment}#end 管理")
public class $!{tableName} {
/**
* 服务对象
*/
private final $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;
/**
* 分页查询
* @param page 分页对象
* @param $!{tool.firstLowerCase($tableInfo.name)}Entity #if(${tableInfo.comment})${tableInfo.comment}#end
* @return R
*/
@ApiOperation(value = "分页查询", notes = "分页查询")
@GetMapping("/page" )
@RequiresPermissions("${tableAuth}:list")
public R get$!{tableInfo.name}Page(Page page, $!{tableInfo.name}Entity $!{tool.firstLowerCase($tableInfo.name)}Entity) {
return R.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.page(page, Wrappers.query($!{tool.firstLowerCase($tableInfo.name)}Entity)));
}
/**
* 通过id查询 #if(${tableInfo.comment})${tableInfo.comment}#end
* @param $pk.name $pk.comment
* @return R
*/
@ApiOperation(value = "通过id查询", notes = "通过id查询")
@GetMapping("/{$pk.name}" )
@RequiresPermissions("${tableAuth}:info")
public R getById(@PathVariable("$pk.name") $!pk.shortType $pk.name) {
return R.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.getById($pk.name));
}
/**
* 新增 #if(${tableInfo.comment})${tableInfo.comment}#end
* @param $!{tool.firstLowerCase($tableInfo.name)}Entity #if(${tableInfo.comment})${tableInfo.comment}#end
* @return R
*/
@ApiOperation(value = "新增#if(${tableInfo.comment})${tableInfo.comment}#end", notes = "新增#if(${tableInfo.comment})${tableInfo.comment}#end")
@SysLog("新增#if(${tableInfo.comment})${tableInfo.comment}#end" )
@PostMapping
@RequiresPermissions("${tableAuth}:save")
public R save(@RequestBody $!{tableInfo.name}Entity $!{tool.firstLowerCase($tableInfo.name)}Entity) {
return R.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.save($!{tool.firstLowerCase($tableInfo.name)}Entity));
}
/**
* 修改#if(${tableInfo.comment})${tableInfo.comment}#end
* @param $!{tool.firstLowerCase($tableInfo.name)}Entity #if(${tableInfo.comment})${tableInfo.comment}#end
* @return R
*/
@RequiresPermissions("${tableAuth}:update")
@ApiOperation(value = "修改#if(${tableInfo.comment})${tableInfo.comment}#end", notes = "修改#if(${tableInfo.comment})${tableInfo.comment}#end")
@SysLog("修改#if(${tableInfo.comment})${tableInfo.comment}#end" )
@PutMapping
public R updateById(@RequestBody $!{tableInfo.name}Entity $!{tool.firstLowerCase($tableInfo.name)}Entity) {
return R.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.updateById($!{tool.firstLowerCase($tableInfo.name)}Entity));
}
/**
* 通过$pk.name 删除#if(${tableInfo.comment})${tableInfo.comment}#end
* @param $pk.name $pk.comment
* @return R
*/
@RequiresPermissions("${tableAuth}:delete")
@ApiOperation(value = "通过$pk.name 删除#if(${tableInfo.comment})${tableInfo.comment}#end", notes = "通过$pk.name 删除#if(${tableInfo.comment})${tableInfo.comment}#end")
@SysLog("通过id删除#if(${tableInfo.comment})${tableInfo.comment}#end" )
@DeleteMapping("/{$pk.name}" )
public R removeById(@PathVariable("$pk.name") $!pk.shortType $pk.name) {
return R.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.removeById($pk.name));
}
}
mapper.xml
##引入mybatis支持
$!mybatisSupport
$!prefix
##设置保存名称与保存位置
$!callback.setFileName($tool.append($!{tableInfo.name}, "Dao.xml"))
$!callback.setSavePath($tool.append($modulePath, "/src/main/resources/mapper${prefixPathPipe}"))
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="$!{tableInfo.savePackageName}.dao${prefixPathDot}.$!{tableInfo.name}Dao">
<resultMap type="$!{tableInfo.savePackageName}.entity${prefixPathDot}.$!{tableInfo.name}Entity" id="$!{tableInfo.name}Map">
#foreach($column in $tableInfo.fullColumn)
<result property="$!column.name" column="$!column.obj.name"/>
#end
</resultMap>
<sql id="baseColumn">
#foreach($column in $tableInfo.fullColumn)
$!column.obj.name#if($velocityCount != $tableInfo.fullColumn.size()),#end
#end
</sql>
</mapper>
menu.sql
## 根据实际menu表修改
$!prefix
-- 菜单SQL
INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`)
VALUES ('1', '#if($tableInfo.comment)$tableInfo.comment#else待命名菜单#end', 'modules/${pathName}.html', NULL, '1', 'fa fa-file-code-o', '6');
-- 按钮父菜单ID
set @parentId = @@identity;
-- 菜单对应按钮SQL
INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`)
SELECT @parentId, '查看', null, '${tableAuth}:list,${tableAuth}:info', '2', null, '6';
INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`)
SELECT @parentId, '新增', null, '${tableAuth}:save', '2', null, '6';
INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`)
SELECT @parentId, '修改', null, '${tableAuth}:update', '2', null, '6';
INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`)
SELECT @parentId, '删除', null, '${tableAuth}:delete', '2', null, '6';
list.html
$!prefix
##设置保存名称与保存位置
$!callback.setFileName($tool.append($!{tableInfo.name}, ".html"))
$!callback.setSavePath($tool.append($modulePath, "/src/main/resources/modules/${prefixPathPipe}"))
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
<!DOCTYPE html>
<html>
<head>
<title>${tableInfo.comment}</title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<link rel="stylesheet" href="../../css/bootstrap.min.css">
<link rel="stylesheet" href="../../css/font-awesome.min.css">
<link rel="stylesheet" href="../../plugins/jqgrid/ui.jqgrid-bootstrap.css">
<link rel="stylesheet" href="../../css/jqgrid.css">
<link rel="stylesheet" href="../../plugins/ztree/css/metroStyle/metroStyle.css">
<link rel="stylesheet" type="text/css" href="../../plugins/layui/css/layui.css">
<link rel="stylesheet" href="../../css/main.css">
<script src="../../libs/jquery.min.js"></script>
<script src="../../plugins/layer/layer.js"></script>
<script src="../../libs/bootstrap.min.js"></script>
<script src="../../libs/vue.min.js"></script>
<script src="../../plugins/jqgrid/grid.locale-cn.js"></script>
<script src="../../plugins/jqgrid/jquery.jqGrid.min.js"></script>
<script src="../../plugins/ztree/jquery.ztree.all.min.js"></script>
<script src="../../plugins/layui/layui.all.js"></script>
<script src="../../uploadUtils/uploadUtils.js"></script>
<script src="../../js/common.js"></script>
</head>
<body>
<div id="rrapp" v-cloak>
<div v-show="showList">
<div class="grid-btn">
<table>
<tr>
<td style="padding: 10px;"><label class="form-label">名称</label></td>
<td style="padding: 10px;"><input type="text" class="form-control" v-model="q.name" @keyup.enter="query"
placeholder="请输入名称"></td>
<td style="padding: 10px;">
<a class="btn btn-default" @click="query">
<li class="fa fa-search"></li> 查询
</a>
</td>
<td colspan="6" style="padding: 10px;">
<a v-if="hasPermission('${tableAuth}:save')" class="btn btn-primary" @click="add"><i class="fa fa-plus"></i> 新增</a>
</td>
</tr>
</table>
</div>
<table id="jqGrid"></table>
<div id="jqGridPager"></div>
</div>
<div class="layer-panel" style="display: none;" id="addOrUpdateLayer">
<form class="form-horizontal">
#foreach($column in $tableInfo.fullColumn)
#if($column.name != $pk.name)
<div class="form-group">
<div class="col-sm-2 control-label">#if(${column.comment})${column.comment}#end</div>
<div class="col-sm-10">
<input type="text" class="form-control" v-model="$!tool.firstLowerCase($tableInfo.name).${column.name}" placeholder="请输入${column.comment}"/>
</div>
</div>
#end
#end
<!-- <div class="form-group">
<div class="col-sm-2 control-label"></div>
<input type="button" class="btn btn-primary" @click="saveOrUpdate" value="确定"/>
<input type="button" class="btn btn-warning" @click="reload" value="返回"/>
</div> -->
</form>
</div>
</div>
<script src="../../js/modules/${pathName}.js"></script>
</body>
</html>
list.js
$!prefix
##设置保存名称与保存位置
$!callback.setFileName($tool.append($!{tableInfo.name}, ".js"))
$!callback.setSavePath($tool.append($modulePath, "/src/main/resources/modules/${prefixPathPipe}"))
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
$(function () {
$("#jqGrid").jqGrid({
url: ServerConfig.baseURL + '/#if($tableApi)$tableApi#else$!tool.firstLowerCase($tableInfo.name)#end/page',
datatype: "json",
colModel: [
#foreach($column in $tableInfo.fullColumn)
#if($column.name == $pk.name)
{ label: '${column.name}', name: '${column.name}', index: '${column.obj.name}', width: 50, key: true },
#else
{ label: '${column.comment}', name: '${column.name}', index: '${column.obj.name}', width: 80 }#if($velocityCount != $columns.size()), #end
#end
#end
,{
label: '操作',
width: 50,
sortable: false,
name:"option",
formatter: function(value, options, row) {
// id为主键
var id = row.$pk.name;
var id = row.id
var edithtml = "<span class='optionBtn' onclick='update(" + id +
")' title='编辑'><i class='fa fa-edit i-success' ></i></span>";
var delhtml = "<span class='optionBtn' onclick='del(" + id +
")' title='删除'><i class='fa fa-trash i-del'></i></span>";
if (!hasPermission('${tableAuth}:delete')) {
delhtml = '';
}
if (!hasPermission('${tableAuth}:update')) {
edithtml = '';
}
if (delhtml == '' && edithtml == '') {
jQuery("#jqGrid").setGridParam().hideCol("option").trigger("reloadGrid");
}
return "<div style='text-align: center;'>" + edithtml + delhtml + "</div>";
}
}
],
viewrecords: true,
rownumbers: true,
autowidth:true,
multiselect: false,
pager: "#jqGridPager",
height: tableConf.height,
rowNum: tableConf.rowNum,
rowList: tableConf.rowList,
rownumWidth: tableConf.rownumWidth,
jsonReader: tableConf.jsonReader,
prmNames: tableConf.prmNames,
gridComplete:function(){
//隐藏grid底部滚动条
$("#jqGrid").closest(".ui-jqgrid-bdiv").css({ "overflow-x" : "hidden" });
}
});
});
var picAttrList = [1];
var vm = new Vue({
el:'#cqapp',
data:{
showList: true,
title: null,
$!tool.firstLowerCase($tableInfo.name): {},
q:{
"name":''
},
isClick: true,//重复check
fileList: {},//上传图片
delIds: []//上传图片
},
mounted(){
var _this = this;
//setPicObj(_this, picAttrList);//上传图片
},
methods: {
query: function () {
vm.reload();
},
add: function(){
// vm.showList = false;
vm.$!tool.firstLowerCase($tableInfo.name) = {};
vm.openLayer("#addOrUpdateLayer", "新增")
},
validator: function() {
// if (isBlank(vm.cmEquipment.name)) {
// layer.tips('请填写设备名称!', '#name', {
// tips: [2, '#ff0000'],
// time: 1000
// });
// return true;
// }
return false;
},
saveOrUpdate: function (isLayer,layer,index) {
var url = vm.$!tool.firstLowerCase($tableInfo.name).${pk.name} == null ? "/#if($tableApi)$tableApi#else$!tool.firstLowerCase($tableInfo.name)#end/save" : "/#if($tableApi)$tableApi#else$!tool.firstLowerCase($tableInfo.name)#end/update";
if (vm.validator()) {
vm.isClick = true;
return;
}
trimHandle(vm.$!tool.firstLowerCase($tableInfo.name));
//handleImageData(vm,vm.cmEquipment,picAttrList);//上传图片
$.ajax({
type: "POST",
url: ServerConfig.baseURL + url,
contentType: "application/json",
data: JSON.stringify(vm.$!tool.firstLowerCase($tableInfo.name)),
success: function(r){
if (r.code === 200) {
isLayer = false;
layer.close(index);
showSuccess('操作成功', function() {
vm.reload();
})
} else {
showError(layer,r.msg);
vm.isClick = true;
}
}
});
},
getInfo: function(${pk.name}){
$.get(baseURL + "/#if($tableApi)$tableApi#else$!tool.firstLowerCase($tableInfo.name)#end/info/"+${pk.name}, function(r){
vm.$!tool.firstLowerCase($tableInfo.name) = r.data
});
},
reload: function (event) {
vm.showList = true;
var page = $("#jqGrid").jqGrid('getGridParam','page');
$("#jqGrid").jqGrid('setGridParam',{
page:page
}).trigger("reloadGrid");
},
openLayer: function(ids, title) {
var that = this;
that.isLayer = true;
layer.open({
title: title,
type: 1,
area: layerConf.area,
fix: false, //不固定
maxmin: true,
offset: layerConf.offset,
shade: 0.5,
shadeClose: false,
content: jQuery(ids),
btn: ['确定', '取消'],
btn1: function(index) { //确定事件
if (vm.isClick) {
vm.isClick = false;
vm.saveOrUpdate(that.isLayer, layer, index)
}
},
btn2: function(index) { //取消事件
that.isLayer = false;
layer.close(index);
vm.reload();
},
success: function(layero, index) { //打开事件
},
end: function() { //关闭事件
vm.isClick = true;
}
});
}
}
});
function update($pk.name) {
vm.getInfo(${pk.name})
vm.openLayer("#addOrUpdateLayer", "修改")
}
function del(${pk.name}) {
var ${pk.name}s = [${pk.name}]
var confirmIndex = layer.confirm('确定要删除该记录?', function(){
$.ajax({
type: "POST",
url: ServerConfig.baseURL + "/#if($tableApi)$tableApi#else$!tool.firstLowerCase($tableInfo.name)#end/delete",
contentType: "application/json",
data: JSON.stringify(${pk.name}s),
success: function(r){
if (r.code == 200) {
showSuccess('操作成功', function() {
vm.reload();
})
} else {
showError(layer,r.msg, function() {
layer.close(confirmIndex);
})
}
}
});
});
}
index.vue
$!prefix
##设置保存名称与保存位置
$!callback.setFileName($tool.append($!{tableInfo.name}, ".vue"))
$!callback.setSavePath($tool.append($modulePath, "/src/main/resources/modules/${prefixPathPipe}"))
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
<template>
<div class="app-container">
<basic-container>
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-button v-if="hasPermission('${tableAuth}:save')" icon="el-icon-plus" type="primary" @click="addOrUpdateHandle()">新增</el-button>
</el-form-item>
</el-form>
<el-table
:data="dataList"
border
v-loading="dataListLoading">
#foreach($column in $tableInfo.fullColumn)
<el-table-column
prop="${column.name}"
header-align="center"
align="center"
label="${column.comment}">
</el-table-column>
#end
<el-table-column
header-align="center"
align="center"
label="操作">
<template slot-scope="scope">
<el-button v-if="hasPermission('${tableAuth}:update')" type="text" size="small" icon="el-icon-edit" @click="addOrUpdateHandle(scope.row.${pk.name})">修改</el-button>
<el-button v-if="hasPermission('${tableAuth}:delete')" type="text" size="small" icon="el-icon-delete" @click="deleteHandle(scope.row.${pk.name})">删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="gather_pagination">
<el-pagination
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
:current-page="pageIndex"
:page-sizes="[10, 20, 50, 100]"
:page-size="pageSize"
:total="totalPage"
background
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
</div>
<!-- 弹窗, 新增 / 修改 -->
<table-form v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></table-form>
</basic-container>
</div>
</template>
<script>
import {fetchList, delObj} from '@/api/${pathName}'
import TableForm from './${pathName}-form'
import {mapGetters} from 'vuex'
export default {
data () {
return {
dataForm: {
key: ''
},
dataList: [],
pageIndex: 1,
pageSize: 10,
totalPage: 0,
dataListLoading: false,
addOrUpdateVisible: false
}
},
components: {
TableForm
},
created () {
this.getDataList()
},
computed: {
...mapGetters(['permissions'])
},
methods: {
// 获取数据列表
getDataList () {
this.dataListLoading = true
fetchList(Object.assign({
current: this.pageIndex,
size: this.pageSize
})).then(response => {
this.dataList = response.data.data.records
this.totalPage = response.data.data.total
})
this.dataListLoading = false
},
// 每页数
sizeChangeHandle (val) {
this.pageSize = val
this.pageIndex = 1
this.getDataList()
},
// 当前页
currentChangeHandle (val) {
this.pageIndex = val
this.getDataList()
},
// 新增 / 修改
addOrUpdateHandle (id) {
this.addOrUpdateVisible = true
#[[this.$nextTick(() => {]]#
this.$refs.addOrUpdate.init(id)
})
},
// 删除
deleteHandle (id) {
this.$confirm('是否确认删除ID为' + id, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function () {
return delObj(id)
}).then(data => {
this.$message.success('删除成功')
this.getDataList()
})
}
}
}
</script>
form.vue
$!prefix
##设置保存名称与保存位置
$!callback.setFileName($tool.append($!{tableInfo.name}, "-form.vue"))
$!callback.setSavePath($tool.append($modulePath, "/src/main/resources/modules/${prefixPathPipe}"))
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
<template>
<el-dialog
:title="!dataForm.id ? '新增' : '修改'"
:close-on-click-modal="false"
:visible.sync="visible">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="80px">
#foreach($column in $tableInfo.fullColumn)
#if($column.name != $pk.name)
<el-form-item label="#if(${column.comment})${column.comment}#end" prop="${column.name}">
<el-input v-model="dataForm.${column.name}" placeholder="#if(${column.comment})${column.comment}#end"></el-input>
</el-form-item>
#end
#end
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="visible = false">取消</el-button>
<el-button type="primary" @click="dataFormSubmit()">确定</el-button>
</span>
</el-dialog>
</template>
<script>
import {getObj, addObj, putObj} from '@/api/${pathName}'
export default {
data () {
return {
visible: false,
dataForm: {
#foreach($column in $tableInfo.fullColumn)
#if($column.name == $pk.name)
${column.name}: 0,
#else
${column.name}: ''#if($velocityCount != $tableInfo.fullColumn.size()),#end
#end
#end
},
dataRule: {
#foreach($column in $tableInfo.fullColumn)
#if($column.name != $pk.name)
${column.name}: [
{ required: true, message: '#if(${column.comment})${column.comment}#end 不能为空', trigger: 'blur' }
]#if($velocityCount != $tableInfo.fullColumn.size()),#end
#end
#end
}
}
},
methods: {
init (id) {
this.dataForm.${pk.name} = id || 0
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.${pk.name}) {
getObj(this.dataForm.${pk.name}).then(response => {
this.dataForm = response.data.data
})
}
})
},
// 表单提交
dataFormSubmit () {
#[[this.$refs['dataForm'].validate((valid) => {]]#
if (valid) {
if (this.dataForm.${pk.name}) {
putObj(this.dataForm).then(data => {
this.$message.success('修改成功')
this.visible = false
this.$emit('refreshDataList')
});
} else {
addObj(this.dataForm).then(data => {
this.$message.success('添加成功')
this.visible = false
this.$emit('refreshDataList')
})
}
}
})
}
}
}
</script>
Global config
init
##初始化区域
##去掉表的t_前缀
$!tableInfo.setName($tool.getClassName($tableInfo.obj.name.replaceFirst("book_","")))
##参考阿里巴巴开发手册,POJO 类中布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误
#foreach($column in $tableInfo.fullColumn)
#if($column.name.startsWith("is") && $column.type.equals("java.lang.Boolean"))
$!column.setName($tool.firstLowerCase($column.name.substring(2)))
#end
#end
##实现动态排除列
#set($temp = $tool.newHashSet("testCreateTime", "otherColumn"))
#foreach($item in $temp)
#set($newList = $tool.newArrayList())
#foreach($column in $tableInfo.fullColumn)
#if($column.name!=$item)
##带有反回值的方法调用时使用$tool.call来消除返回值 ##带有反回值的方法调用时使用$tool.call来消除返回值
$tool.call($newList.add($column))
#end
#end
##重新保存
$tableInfo.setFullColumn($newList)
#end
##对importList进行篡改
#set($temp = $tool.newHashSet())
#foreach($column in $tableInfo.fullColumn)
#if(!$column.type.startsWith("java.lang."))
##带有反回值的方法调用时使用$tool.call来消除返回值
$tool.call($temp.add($column.type))
#end
#end
##覆盖
#set($importList = $temp)
define
##(Velocity宏定义)
##定义设置表名后缀的宏定义,调用方式:#setTableSuffix("Test")
#macro(setTableSuffix $suffix)
#set($tableName = $!tool.append($tableInfo.name, $suffix))
#end
##定义设置包名后缀的宏定义,调用方式:#setPackageSuffix("Test")
#macro(setPackageSuffix $suffix)
#if($suffix!="")package #end#if($tableInfo.savePackageName!="")$!{tableInfo.savePackageName}.#{end}$!suffix;
#end
##定义直接保存路径与文件名简化的宏定义,调用方式:#save("/entity", ".java")
#macro(save $path $fileName)
$!callback.setSavePath($tool.append($tableInfo.savePath, $path))
$!callback.setFileName($tool.append($tableInfo.name, $fileName))
#end
##定义表注释的宏定义,调用方式:#tableComment("注释信息")
#macro(tableComment $desc)
/**
* $!{tableInfo.comment}($!{tableInfo.obj.name})$desc
*
* @author $!author
* @since $!time.currTime()
*/
#end
##定义GET,SET方法的宏定义,调用方式:#getSetMethod($column)
#macro(getSetMethod $column)
public $!{tool.getClsNameByFullName($column.type)} get$!{tool.firstUpperCase($column.name)}() {
return $!{column.name};
}
public void set$!{tool.firstUpperCase($column.name)}($!{tool.getClsNameByFullName($column.type)} $!{column.name}) {
this.$!{column.name} = $!{column.name};
}
#end
autoimport
##自动导入包(仅导入实体属性需要的包,通常用于实体类)
#foreach($import in $importList)
import $!import;
#end
mybatisSupport
##针对Mybatis 进行支持,主要用于生成xml文件
#foreach($column in $tableInfo.fullColumn)
##储存列类型
$tool.call($column.ext.put("sqlType", $tool.getField($column.obj.dataType, "typeName")))
#if($tool.newHashSet("java.lang.String").contains($column.type))
#set($jdbcType="VARCHAR")
#elseif($tool.newHashSet("java.lang.Boolean", "boolean").contains($column.type))
#set($jdbcType="BOOLEAN")
#elseif($tool.newHashSet("java.lang.Byte", "byte").contains($column.type))
#set($jdbcType="BYTE")
#elseif($tool.newHashSet("java.lang.Integer", "int", "java.lang.Short", "short").contains($column.type))
#set($jdbcType="INTEGER")
#elseif($tool.newHashSet("java.lang.Long", "long").contains($column.type))
#set($jdbcType="INTEGER")
#elseif($tool.newHashSet("java.lang.Float", "float", "java.lang.Double", "double").contains($column.type))
#set($jdbcType="NUMERIC")
#elseif($tool.newHashSet("java.util.Date", "java.sql.Timestamp", "java.time.Instant", "java.time.LocalDateTime", "java.time.OffsetDateTime", " java.time.ZonedDateTime").contains($column.type))
#set($jdbcType="TIMESTAMP")
#elseif($tool.newHashSet("java.sql.Date", "java.time.LocalDate").contains($column.type))
#set($jdbcType="TIMESTAMP")
#else
##其他类型
#set($jdbcType="OTHER")
#end
$tool.call($column.ext.put("jdbcType", $jdbcType))
#end
##定义宏,查询所有列
#macro(allSqlColumn)#foreach($column in $tableInfo.fullColumn)$column.obj.name#if($velocityHasNext), #end#end#end
prefix
## 控制是否根据表名首段分割
#set($isEffect=true)
#set($prefixPathPipe="")
#set($prefixPathDot="")
##获取表名前缀
#if($tableInfo.obj.name.indexOf("_") != -1 && $isEffect)
#set($tablePrefix=$tableInfo.obj.name.split("_").get(0))
#set($tableApi=$tableInfo.obj.name.replace("_", "/"))
#set($prefixPathPipe=$tool.append("/",$tablePrefix))
#set($prefixPathDot=$tool.append(".",$tablePrefix))
#end
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ALLBS!
评论