安装插件

导出文件内容
{
"author" : "xulk",
"version" : "1.2.8",
"userSecure" : "",
"currTypeMapperGroupName" : "Default",
"currTemplateGroupName" : "MybatisPlus",
"currColumnConfigGroupName" : "Default",
"currGlobalConfigGroupName" : "Default",
"typeMapper" : {
"Default" : {
"name" : "Default",
"elementList" : [ {
"matchType" : "REGEX",
"columnType" : "varchar(\\(\\d+\\))?",
"javaType" : "java.lang.String"
}, {
"matchType" : "REGEX",
"columnType" : "char(\\(\\d+\\))?",
"javaType" : "java.lang.String"
}, {
"matchType" : "REGEX",
"columnType" : "(tiny|medium|long)*text",
"javaType" : "java.lang.String"
}, {
"matchType" : "REGEX",
"columnType" : "decimal(\\(\\d+,\\d+\\))?",
"javaType" : "java.lang.Double"
}, {
"matchType" : "ORDINARY",
"columnType" : "integer",
"javaType" : "java.lang.Integer"
}, {
"matchType" : "REGEX",
"columnType" : "(tiny|small|medium)*int(\\(\\d+\\))?",
"javaType" : "java.lang.Integer"
}, {
"matchType" : "ORDINARY",
"columnType" : "int4",
"javaType" : "java.lang.Integer"
}, {
"matchType" : "ORDINARY",
"columnType" : "int8",
"javaType" : "java.lang.Long"
}, {
"matchType" : "REGEX",
"columnType" : "bigint(\\(\\d+\\))?",
"javaType" : "java.lang.Long"
}, {
"matchType" : "ORDINARY",
"columnType" : "date",
"javaType" : "java.util.Date"
}, {
"matchType" : "ORDINARY",
"columnType" : "datetime",
"javaType" : "java.util.Date"
}, {
"matchType" : "ORDINARY",
"columnType" : "timestamp",
"javaType" : "java.util.Date"
}, {
"matchType" : "ORDINARY",
"columnType" : "time",
"javaType" : "java.time.LocalTime"
}, {
"matchType" : "ORDINARY",
"columnType" : "boolean",
"javaType" : "java.lang.Boolean"
}, {
"matchType" : "ORDINARY",
"columnType" : "double(14,11)",
"javaType" : "java.lang.Double"
} ]
}
},
"template" : {
"MybatisPlus-Mixed" : {
"name" : "MybatisPlus-Mixed",
"elementList" : [ {
"name" : "controller.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Controller\")\n\n##保存文件(宏定义)\n#save(\"/controller\", \"Controller.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"controller\")\n\n##定义服务名\n#set($serviceName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), \"Service\"))\n\n##定义实体对象名\n#set($entityName = $!tool.firstLowerCase($!tableInfo.name))\n\nimport com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;\nimport com.baomidou.mybatisplus.extension.api.ApiController;\nimport com.baomidou.mybatisplus.extension.api.R;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.annotation.Resource;\nimport java.io.Serializable;\nimport java.util.List;\n\n##表注释(宏定义)\n#tableComment(\"表控制层\")\n@RestController\n@RequestMapping(\"$!tool.firstLowerCase($!tableInfo.name)\")\npublic class $!{tableName} extends ApiController {\n /**\n * 服务对象\n */\n @Resource\n private $!{tableInfo.name}Service $!{serviceName};\n\n /**\n * 分页查询所有数据\n *\n * @param page 分页对象\n * @param $!entityName 查询实体\n * @return 所有数据\n */\n @GetMapping\n public R selectAll(Page<$!tableInfo.name> page, $!tableInfo.name $!entityName) {\n return success(this.$!{serviceName}.page(page, new QueryWrapper<>($!entityName)));\n }\n\n /**\n * 通过主键查询单条数据\n *\n * @param id 主键\n * @return 单条数据\n */\n @GetMapping(\"{id}\")\n public R selectOne(@PathVariable Serializable id) {\n return success(this.$!{serviceName}.getById(id));\n }\n\n /**\n * 新增数据\n *\n * @param $!entityName 实体对象\n * @return 新增结果\n */\n @PostMapping\n public R insert(@RequestBody $!tableInfo.name $!entityName) {\n return success(this.$!{serviceName}.save($!entityName));\n }\n\n /**\n * 修改数据\n *\n * @param $!entityName 实体对象\n * @return 修改结果\n */\n @PutMapping\n public R update(@RequestBody $!tableInfo.name $!entityName) {\n return success(this.$!{serviceName}.updateById($!entityName));\n }\n\n /**\n * 删除数据\n *\n * @param idList 主键结合\n * @return 删除结果\n */\n @DeleteMapping\n public R delete(@RequestParam(\"idList\") List<Long> idList) {\n return success(this.$!{serviceName}.removeByIds(idList));\n }\n}\n"
}, {
"name" : "dao.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Dao\")\n\n##保存文件(宏定义)\n#save(\"/dao\", \"Dao.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"dao\")\n\nimport java.util.List;\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport org.apache.ibatis.annotations.Param;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n\n##表注释(宏定义)\n#tableComment(\"表数据库访问层\")\npublic interface $!{tableName} extends BaseMapper<$!tableInfo.name> {\n\n/**\n* 批量新增数据(MyBatis原生foreach方法)\n*\n* @param entities List<$!{tableInfo.name}> 实例对象列表\n* @return 影响行数\n*/\nint insertBatch(@Param(\"entities\") List<$!{tableInfo.name}> entities);\n\n/**\n* 批量新增或按主键更新数据(MyBatis原生foreach方法)\n*\n* @param entities List<$!{tableInfo.name}> 实例对象列表\n* @return 影响行数\n* @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参\n*/\nint insertOrUpdateBatch(@Param(\"entities\") List<$!{tableInfo.name}> entities);\n\n}\n"
}, {
"name" : "entity.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/entity\", \".java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"entity\")\n\n##自动导入包(全局变量)\n$!autoImport\nimport com.baomidou.mybatisplus.extension.activerecord.Model;\nimport java.io.Serializable;\n\n##表注释(宏定义)\n#tableComment(\"表实体类\")\n@SuppressWarnings(\"serial\")\npublic class $!{tableInfo.name} extends Model<$!{tableInfo.name}> {\n#foreach($column in $tableInfo.fullColumn)\n #if(${column.comment})//${column.comment}#end\n\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n\n#foreach($column in $tableInfo.fullColumn)\n#getSetMethod($column)\n#end\n\n#foreach($column in $tableInfo.pkColumn)\n /**\n * 获取主键值\n *\n * @return 主键值\n */\n @Override\n protected Serializable pkVal() {\n return this.$!column.name;\n }\n #break\n#end\n}\n"
}, {
"name" : "mapper.xml.vm",
"code" : "##引入mybatis支持\n$!{mybatisSupport.vm}\n\n##设置保存名称与保存位置\n$!callback.setFileName($tool.append($!{tableInfo.name}, \"Dao.xml\"))\n$!callback.setSavePath($tool.append($modulePath, \"/src/main/resources/mapper\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"$!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao\">\n\n <resultMap type=\"$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}\" id=\"$!{tableInfo.name}Map\">\n#foreach($column in $tableInfo.fullColumn)\n <result property=\"$!column.name\" column=\"$!column.obj.name\" jdbcType=\"$!column.ext.jdbcType\"/>\n#end\n </resultMap>\n\n <!-- 批量插入 -->\n <insert id=\"insertBatch\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n values\n <foreach collection=\"entities\" item=\"entity\" separator=\",\">\n (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)\n </foreach>\n </insert>\n <!-- 批量插入或按主键更新 -->\n <insert id=\"insertOrUpdateBatch\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n values\n <foreach collection=\"entities\" item=\"entity\" separator=\",\">\n (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)\n </foreach>\n on duplicate key update\n #foreach($column in $tableInfo.otherColumn)$!column.obj.name = values($!column.obj.name) #if($velocityHasNext), #end#end\n </insert>\n\n</mapper>\n"
}, {
"name" : "service.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Service\")\n\n##保存文件(宏定义)\n#save(\"/service\", \"Service.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service\")\n\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n\n##表注释(宏定义)\n#tableComment(\"表服务接口\")\npublic interface $!{tableName} extends IService<$!tableInfo.name> {\n\n}\n"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"ServiceImpl\")\n\n##保存文件(宏定义)\n#save(\"/service/impl\", \"ServiceImpl.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service.impl\")\n\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.stereotype.Service;\n\n##表注释(宏定义)\n#tableComment(\"表服务实现类\")\n@Service(\"$!tool.firstLowerCase($tableInfo.name)Service\")\npublic class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Dao, $!{tableInfo.name}> implements $!{tableInfo.name}Service {\n\n}\n"
} ]
},
"MybatisPlus" : {
"name" : "MybatisPlus",
"elementList" : [ {
"name" : "controller.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Controller\")\n##保存文件(宏定义)\n#save(\"/controller\", \"Controller.java\")\n##包路径(宏定义)\n#setPackageSuffix(\"controller\")\n##定义服务名\n#set($serviceName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), \"Service\"))\n\n##定义实体对象名\n#set($entityName = $!tool.firstLowerCase($!tableInfo.name))\n$!{result.vm}\n$!{baseController.vm}\nimport com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.web.bind.annotation.*;\nimport com.xiaobing.common.res.Result;\nimport javax.annotation.Resource;\nimport java.io.Serializable;\nimport java.util.List;\n\n##表注释(宏定义)\n#tableComment(\"表控制层\")\n@RestController\n@RequestMapping(\"$!tool.firstLowerCase($!tableInfo.name)\")\npublic class $!{tableName} extends BaseController {\n /**\n * 服务对象\n */\n @Resource\n private $!{tableInfo.name}Service $!{serviceName};\n\n /**\n * 分页查询所有数据\n *\n * @param page 分页对象\n * @param $!entityName 查询实体\n * @return 所有数据\n */\n @GetMapping\n public Result selectAll(Page<$!tableInfo.name> page, $!tableInfo.name $!entityName) {\n return Result.success(this.$!{serviceName}.page(page, new QueryWrapper<>($!entityName)));\n }\n\n /**\n * 通过主键查询单条数据\n *\n * @param id 主键\n * @return 单条数据\n */\n @GetMapping(\"{id}\")\n public Result selectOne(@PathVariable Serializable id) {\n return Result.success(this.$!{serviceName}.getById(id));\n }\n\n /**\n * 新增数据\n *\n * @param $!entityName 实体对象\n * @return 新增结果\n */\n @PostMapping\n public Result insert(@RequestBody $!tableInfo.name $!entityName) {\n return Result.success(this.$!{serviceName}.save($!entityName));\n }\n\n /**\n * 修改数据\n *\n * @param $!entityName 实体对象\n * @return 修改结果\n */\n @PutMapping\n public Result update(@RequestBody $!tableInfo.name $!entityName) {\n return Result.success(this.$!{serviceName}.updateById($!entityName));\n }\n\n /**\n * 删除数据\n *\n * @param idList 主键结合\n * @return 删除结果\n */\n @DeleteMapping\n public Result delete(@RequestParam(\"idList\") List<Long> idList) {\n return Result.success(this.$!{serviceName}.removeByIds(idList));\n }\n}\n"
}, {
"name" : "dao.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)(拼接的后缀Mapper)\n#setTableSuffix(\"Mapper\")\n\n##保存文件(宏定义)(...Mapper.java)\n#save(\"/dao\", \"Mapper.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"dao\")\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport com.xiaobing.user.entity.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n\n##表注释(宏定义)\n#tableComment(\"表数据库访问层\")\npublic interface $!{tableName} extends BaseMapper<$!tableInfo.name> {\n\n}\n"
}, {
"name" : "entity.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n##保存文件(宏定义)(文件后缀)\n#save(\"/entity\", \".java\") \n#set($temp = $tool.newHashSet(\"id\", \"createBy\", \"updateBy\", \"createTime\", \"updateTime\", \"delFlag\"))\n#foreach($item in $temp)\n #set($newList = $tool.newArrayList())\n #foreach($column in $tableInfo.fullColumn)\n #if($column.name!=$item)\n $tool.call($newList.add($column))\n #end\n #end\n $tableInfo.setFullColumn($newList)\n#end\n \n#setPackageSuffix(\"entity\")\n##自动导入包(全局变量)\n$!{baseEntity.vm}\n$!{autoImport.vm}\nimport com.baomidou.mybatisplus.annotation.TableName;\nimport java.io.Serializable;\nimport lombok.Data;\nimport lombok.AllArgsConstructor;\nimport lombok.NoArgsConstructor;\n \n##表注释(宏定义)\n#tableComment(\"表实体类\")\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\n@TableName(\"$!{tableInfo.obj.name}\")\npublic class $!{tableInfo.name} extends BaseEntity implements Serializable {\n \n private static final long serialVersionUID = 1L;\n \n#foreach($column in $tableInfo.fullColumn)\n #if(${column.comment})//${column.comment}#end\n \n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n \n}"
}, {
"name" : "service.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Service\")\n\n##保存文件(宏定义)\n#save(\"/service\", \"Service.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service\")\n\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport com.xiaobing.user.entity.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n\n##表注释(宏定义)\n#tableComment(\"表服务接口\")\npublic interface $!{tableName} extends IService<$!tableInfo.name> {\n\n}\n"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"ServiceImpl\")\n\n##保存文件(宏定义)(文件后缀例如:...ServiceImpl.java)\n#save(\"/service/impl\", \"ServiceImpl.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service.impl\")\n\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.stereotype.Service;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n\n##表注释(宏定义)\n#tableComment(\"表服务实现类\")\n@Service(\"$!tool.firstLowerCase($tableInfo.name)Service\")\npublic class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Mapper, $!{tableInfo.name}> implements $!{tableInfo.name}Service {\n\n}\n"
}, {
"name" : "mapper.xml.vm",
"code" : "##引入mybatis支持\n$!{mybatisSupport.vm}\n \n##设置保存名称与保存位置\n$!callback.setFileName($tool.append($!{tableInfo.name}, \"Mapper.xml\"))\n$!callback.setSavePath($tool.append($modulePath, \"/src/main/resources/mybatis\"))\n \n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n \n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"$!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Mapper\">\n \n <resultMap type=\"$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}\" id=\"$!{tableInfo.name}Map\">\n#foreach($column in $tableInfo.fullColumn)\n <result property=\"$!column.name\" column=\"$!column.obj.name\"/>\n#end\n </resultMap>\n \n</mapper>"
} ]
},
"spring-data-mongodb" : {
"name" : "spring-data-mongodb",
"elementList" : [ {
"name" : "controller.java.vm",
"code" : "##导入宏定义、设置包名、类名、文件名##导入宏定义\n$!{define.vm}\n#setPackageSuffix(\"controller\")\n#setTableSuffix(\"Controller\")\n#save(\"/controller\", \"Controller.java\")\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n##定义服务名\n#set($serviceSortType = $!tool.append($!tableInfo.name, \"Service\"))\n#set($serviceType = $!tool.append($!tableInfo.savePackageName, \".service.\", $serviceSortType))\n#set($serviceVarName = $!tool.firstLowerCase($serviceSortType))\n\n#set($entityShortType = $!tableInfo.name)\n#set($entityType = $!tableInfo.psiClassObj.getQualifiedName())\n#set($entityVarName = $!tool.firstLowerCase($!tableInfo.name))\n#set($pkType = $!pk.type)\n\nimport $pkType;\nimport $entityType;\nimport $serviceType;\nimport lombok.AllArgsConstructor;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n\n/**\n * $!{tableInfo.comment}控制层\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@RestController\n@RequestMapping(\"/$!tool.firstLowerCase($!tableInfo.name)\")\n@AllArgsConstructor\npublic class $!{tableName} {\n\n\tprivate $serviceSortType $serviceVarName;\n\n\t/**\n\t * 获取$!{tableInfo.comment}列表(分页)\n\t */\n\t@GetMapping(\"/list\")\n\tpublic Page<$entityShortType> list(Pageable page) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * 获取$!{tableInfo.comment}\n\t */\n\t@GetMapping(\"/get\")\n\tpublic $entityShortType get($!pk.shortType id) {\n\t\treturn ${serviceVarName}.findById(id);\n\t}\n\n\t/**\n\t * 添加$!{tableInfo.comment}\n\t */\n\t@PostMapping(\"/add\")\n\tpublic void add(@RequestBody $entityShortType $entityVarName) {\n\t\t${serviceVarName}.save($entityVarName);\n\t}\n\n\n\t/**\n\t * 修改$!{tableInfo.comment}\n\t */\n\t@PostMapping(\"/update\")\n\tpublic void update(@RequestBody $entityShortType $entityVarName) {\n\t\t${serviceVarName}.save($entityVarName);\n\t}\n\n\t/**\n\t * 删除$!{tableInfo.comment}\n\t */\n\t@PostMapping(\"/delete\")\n\tpublic void delete($!pk.shortType id) {\n\t\t${serviceVarName}.deleteById(id);\n\t}\n\n}\n"
}, {
"name" : "entity.java.vm",
"code" : "##引入宏定义\n$!{define.vm}\n\n##使用宏定义设置回调(保存位置与文件后缀)\n#save(\"/entity\", \".java\")\n\n##使用宏定义设置包后缀\n#setPackageSuffix(\"entity\")\n\n##使用全局变量实现默认包导入\n$!{autoImport.vm}\nimport java.io.Serializable;\n\n##使用宏定义实现类注释信息\n#tableComment(\"实体类\")\npublic class $!{tableInfo.name} implements Serializable {\n private static final long serialVersionUID = $!tool.serial();\n#foreach($column in $tableInfo.fullColumn)\n #if(${column.comment})/**\n * ${column.comment}\n */#end\n\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n\n#foreach($column in $tableInfo.fullColumn)\n##使用宏定义实现get,set方法\n#getSetMethod($column)\n#end\n\n}\n"
}, {
"name" : "repository.java.vm",
"code" : "##导入宏定义、设置包名、类名、文件名##导入宏定义\n$!{define.vm}\n#setPackageSuffix(\"repository\")\n#setTableSuffix(\"Repository\")\n#save(\"/repository\", \"Repository.java\")\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n##实体类名、主键类名\n#set($entityShortType = $!tableInfo.name)\n#set($entityType = $!tableInfo.psiClassObj.getQualifiedName())\n#set($pkShortType = $!pk.shortType)\n#set($pkType = $!pk.type)\n\nimport $pkType;\nimport $entityType;\nimport org.springframework.data.mongodb.repository.MongoRepository;\n\n\n/**\n * $!{tableInfo.comment}持久层\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} extends MongoRepository<$entityShortType, $pkShortType> {\n\n}\n"
}, {
"name" : "service.java.vm",
"code" : "##导入宏定义、设置包名、类名、文件名##导入宏定义\n$!{define.vm}\n#setPackageSuffix(\"service\")\n#setTableSuffix(\"Service\")\n#save(\"/service\", \"Service.java\")\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n##实体类名、主键类名\n#set($entityShortType = $!tableInfo.name)\n#set($entityType = $!tableInfo.psiClassObj.getQualifiedName())\n#set($entityVarName = $!tool.firstLowerCase($!tableInfo.name))\n#set($pkShortType = $!pk.shortType)\n#set($pkType = $!pk.type)\n\nimport $pkType;\nimport $entityType;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport java.util.Collection;\nimport java.util.List;\n\n\n/**\n * $!{tableInfo.comment}业务层\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} {\n\n void save($entityShortType $entityVarName);\n\n void deleteById($pkShortType id);\n\n $entityShortType findById($pkShortType id);\n\n List<$entityShortType> findById(Collection<$pkShortType> ids);\n\n Page<$entityShortType> list(Pageable page);\n\n}\n"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##导入宏定义、设置包名、类名、文件名\n$!{define.vm}\n#setPackageSuffix(\"service.impl\")\n#setTableSuffix(\"ServiceImpl\")\n#save(\"/service/impl\", \"ServiceImpl.java\")\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n##业务层类名、持久层类名、实体名\n#set($serviceSortType = $!tool.append($!tableInfo.name, \"Service\"))\n#set($serviceType = $!tool.append($!tableInfo.savePackageName, \".service.\", $serviceSortType))\n#set($repositorySortType = $!tool.append($!tableInfo.name, \"Repository\"))\n#set($repositoryType = $!tool.append($!tableInfo.savePackageName, \".repository.\", $repositorySortType))\n#set($repositoryVarName = $!tool.firstLowerCase($!repositorySortType))\n#set($entityShortType = $!tableInfo.name)\n#set($entityType = $!tableInfo.psiClassObj.getQualifiedName())\n#set($entityVarName = $!tool.firstLowerCase($!tableInfo.name))\n#set($pkShortType = $!pk.shortType)\n#set($pkType = $!pk.type)\n\nimport $pkType;\nimport $entityType;\nimport $serviceType;\nimport $repositoryType;\nimport org.springframework.stereotype.Service;\nimport javax.annotation.Resource;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.stream.Collectors;\nimport java.util.stream.StreamSupport;\n\n\n/**\n * $!{tableInfo.comment}业务层\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@Service\npublic class $!{tableName} implements $!serviceSortType {\n\n\t@Resource\n private $repositorySortType $repositoryVarName;\n\n @Override\n public void save($entityShortType $entityVarName) {\n $!{repositoryVarName}.save($entityVarName);\n }\n\n @Override\n public void deleteById($pkShortType id) {\n $!{repositoryVarName}.delete(id);\n }\n\n @Override\n public $entityShortType findById($pkShortType id) {\n return $!{repositoryVarName}.findOne(id);\n }\n\n @Override\n public List<$entityShortType> findById(Collection<$pkShortType> ids) {\n Iterable<$entityShortType> iterable = $!{repositoryVarName}.findAll(ids);\n return StreamSupport.stream(iterable.spliterator(), false)\n .collect(Collectors.toList());\n }\n\n @Override\n public Page<$entityShortType> list(Pageable page) {\n return $!{repositoryVarName}.findAll(page);\n }\n\n}\n"
} ]
},
"Default" : {
"name" : "Default",
"elementList" : [ {
"name" : "controller.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Controller\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/controller\"))\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}controller;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.PageRequest;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.annotation.Resource;\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表控制层\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@RestController\n@RequestMapping(\"$!tool.firstLowerCase($tableInfo.name)\")\npublic class $!{tableName} {\n /**\n * 服务对象\n */\n @Resource\n private $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;\n\n /**\n * 分页查询\n *\n * @param $!{tool.firstLowerCase($tableInfo.name)} 筛选条件\n * @param pageRequest 分页对象\n * @return 查询结果\n */\n @GetMapping\n public ResponseEntity<Page<$!{tableInfo.name}>> queryByPage($!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}, PageRequest pageRequest) {\n return ResponseEntity.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.queryByPage($!{tool.firstLowerCase($tableInfo.name)}, pageRequest));\n }\n\n /**\n * 通过主键查询单条数据\n *\n * @param id 主键\n * @return 单条数据\n */\n @GetMapping(\"{id}\")\n public ResponseEntity<$!{tableInfo.name}> queryById(@PathVariable(\"id\") $!pk.shortType id) {\n return ResponseEntity.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.queryById(id));\n }\n\n /**\n * 新增数据\n *\n * @param $!{tool.firstLowerCase($tableInfo.name)} 实体\n * @return 新增结果\n */\n @PostMapping\n public ResponseEntity<$!{tableInfo.name}> add($!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}) {\n return ResponseEntity.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.insert($!{tool.firstLowerCase($tableInfo.name)}));\n }\n\n /**\n * 编辑数据\n *\n * @param $!{tool.firstLowerCase($tableInfo.name)} 实体\n * @return 编辑结果\n */\n @PutMapping\n public ResponseEntity<$!{tableInfo.name}> edit($!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}) {\n return ResponseEntity.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.update($!{tool.firstLowerCase($tableInfo.name)}));\n }\n\n /**\n * 删除数据\n *\n * @param id 主键\n * @return 删除是否成功\n */\n @DeleteMapping\n public ResponseEntity<Boolean> deleteById($!pk.shortType id) {\n return ResponseEntity.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.deleteById(id));\n }\n\n}\n"
}, {
"name" : "dao.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Dao\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/dao\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}dao;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport org.apache.ibatis.annotations.Param;\nimport org.springframework.data.domain.Pageable;\nimport java.util.List;\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} {\n\n /**\n * 通过ID查询单条数据\n *\n * @param $!pk.name 主键\n * @return 实例对象\n */\n $!{tableInfo.name} queryById($!pk.shortType $!pk.name);\n\n /**\n * 查询指定行数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 查询条件\n * @param pageable 分页对象\n * @return 对象列表\n */\n List<$!{tableInfo.name}> queryAllByLimit($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}), @Param(\"pageable\") Pageable pageable);\n\n /**\n * 统计总行数\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 查询条件\n * @return 总行数\n */\n long count($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));\n\n /**\n * 新增数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n * @return 影响行数\n */\n int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));\n\n /**\n * 批量新增数据(MyBatis原生foreach方法)\n *\n * @param entities List<$!{tableInfo.name}> 实例对象列表\n * @return 影响行数\n */\n int insertBatch(@Param(\"entities\") List<$!{tableInfo.name}> entities);\n\n /**\n * 批量新增或按主键更新数据(MyBatis原生foreach方法)\n *\n * @param entities List<$!{tableInfo.name}> 实例对象列表\n * @return 影响行数\n * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参\n */\n int insertOrUpdateBatch(@Param(\"entities\") List<$!{tableInfo.name}> entities);\n\n /**\n * 修改数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n * @return 影响行数\n */\n int update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));\n\n /**\n * 通过主键删除数据\n *\n * @param $!pk.name 主键\n * @return 影响行数\n */\n int deleteById($!pk.shortType $!pk.name);\n\n}\n"
}, {
"name" : "debug.json.vm",
"code" : "// 禁止将生成结果写入到文件\n$!callback.setWriteFile(false)\n\n//调试表原始对象\n$!tool.debug($tableInfo.obj)\n\n//调试列原始对象\n$!tool.debug($tableInfo.fullColumn.get(0).obj)\n\n//调试列原始列类型\n$!tool.debug($tableInfo.fullColumn.get(0).obj.dataType)\n\n//获取原始列类型中的字段\nsqlType = $!tool.getField($tableInfo.fullColumn.get(0).obj.dataType, \"typeName\")\n\n//执行原始列类型中的方法\nsqlTypeLen = $!tableInfo.fullColumn.get(0).obj.dataType.getLength()\n"
}, {
"name" : "entity.java.vm",
"code" : "##引入宏定义\n$!{define.vm}\n\n##使用宏定义设置回调(保存位置与文件后缀)\n#save(\"/entity\", \".java\")\n\n##使用宏定义设置包后缀\n#setPackageSuffix(\"entity\")\n\n##使用全局变量实现默认包导入\n$!{autoImport.vm}\nimport java.io.Serializable;\n\n##使用宏定义实现类注释信息\n#tableComment(\"实体类\")\npublic class $!{tableInfo.name} implements Serializable {\n private static final long serialVersionUID = $!tool.serial();\n#foreach($column in $tableInfo.fullColumn)\n #if(${column.comment})/**\n * ${column.comment}\n */#end\n\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n\n#foreach($column in $tableInfo.fullColumn)\n##使用宏定义实现get,set方法\n#getSetMethod($column)\n#end\n\n}\n"
}, {
"name" : "mapper.xml.vm",
"code" : "##引入mybatis支持\n$!{mybatisSupport.vm}\n\n##设置保存名称与保存位置\n$!callback.setFileName($tool.append($!{tableInfo.name}, \"Dao.xml\"))\n$!callback.setSavePath($tool.append($modulePath, \"/src/main/resources/mapper\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"$!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao\">\n\n <resultMap type=\"$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}\" id=\"$!{tableInfo.name}Map\">\n#foreach($column in $tableInfo.fullColumn)\n <result property=\"$!column.name\" column=\"$!column.obj.name\" jdbcType=\"$!column.ext.jdbcType\"/>\n#end\n </resultMap>\n\n <!--查询单个-->\n <select id=\"queryById\" resultMap=\"$!{tableInfo.name}Map\">\n select\n #allSqlColumn()\n\n from $!tableInfo.obj.name\n where $!pk.obj.name = #{$!pk.name}\n </select>\n\n <!--查询指定行数据-->\n <select id=\"queryAllByLimit\" resultMap=\"$!{tableInfo.name}Map\">\n select\n #allSqlColumn()\n\n from $!tableInfo.obj.name\n <where>\n#foreach($column in $tableInfo.fullColumn)\n <if test=\"$!column.name != null#if($column.type.equals(\"java.lang.String\")) and $!column.name != ''#end\">\n and $!column.obj.name = #{$!column.name}\n </if>\n#end\n </where>\n limit #{pageable.offset}, #{pageable.pageSize}\n </select>\n\n <!--统计总行数-->\n <select id=\"count\" resultType=\"java.lang.Long\">\n select count(1)\n from $!tableInfo.obj.name\n <where>\n#foreach($column in $tableInfo.fullColumn)\n <if test=\"$!column.name != null#if($column.type.equals(\"java.lang.String\")) and $!column.name != ''#end\">\n and $!column.obj.name = #{$!column.name}\n </if>\n#end\n </where>\n </select>\n\n <!--新增所有列-->\n <insert id=\"insert\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n values (#foreach($column in $tableInfo.otherColumn)#{$!{column.name}}#if($velocityHasNext), #end#end)\n </insert>\n\n <insert id=\"insertBatch\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n values\n <foreach collection=\"entities\" item=\"entity\" separator=\",\">\n (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)\n </foreach>\n </insert>\n\n <insert id=\"insertOrUpdateBatch\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n values\n <foreach collection=\"entities\" item=\"entity\" separator=\",\">\n (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)\n </foreach>\n on duplicate key update\n #foreach($column in $tableInfo.otherColumn)$!column.obj.name = values($!column.obj.name)#if($velocityHasNext),\n #end#end\n\n </insert>\n\n <!--通过主键修改数据-->\n <update id=\"update\">\n update $!{tableInfo.obj.name}\n <set>\n#foreach($column in $tableInfo.otherColumn)\n <if test=\"$!column.name != null#if($column.type.equals(\"java.lang.String\")) and $!column.name != ''#end\">\n $!column.obj.name = #{$!column.name},\n </if>\n#end\n </set>\n where $!pk.obj.name = #{$!pk.name}\n </update>\n\n <!--通过主键删除-->\n <delete id=\"deleteById\">\n delete from $!{tableInfo.obj.name} where $!pk.obj.name = #{$!pk.name}\n </delete>\n\n</mapper>\n"
}, {
"name" : "service.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Service\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/service\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.PageRequest;\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表服务接口\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} {\n\n /**\n * 通过ID查询单条数据\n *\n * @param $!pk.name 主键\n * @return 实例对象\n */\n $!{tableInfo.name} queryById($!pk.shortType $!pk.name);\n\n /**\n * 分页查询\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 筛选条件\n * @param pageRequest 分页对象\n * @return 查询结果\n */\n Page<$!{tableInfo.name}> queryByPage($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}), PageRequest pageRequest);\n\n /**\n * 新增数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n * @return 实例对象\n */\n $!{tableInfo.name} insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));\n\n /**\n * 修改数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n * @return 实例对象\n */\n $!{tableInfo.name} update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));\n\n /**\n * 通过主键删除数据\n *\n * @param $!pk.name 主键\n * @return 是否成功\n */\n boolean deleteById($!pk.shortType $!pk.name);\n\n}"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"ServiceImpl\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/service/impl\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service.impl;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.stereotype.Service;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.PageImpl;\nimport org.springframework.data.domain.PageRequest;\n\nimport javax.annotation.Resource;\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表服务实现类\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@Service(\"$!tool.firstLowerCase($!{tableInfo.name})Service\")\npublic class $!{tableName} implements $!{tableInfo.name}Service {\n @Resource\n private $!{tableInfo.name}Dao $!tool.firstLowerCase($!{tableInfo.name})Dao;\n\n /**\n * 通过ID查询单条数据\n *\n * @param $!pk.name 主键\n * @return 实例对象\n */\n @Override\n public $!{tableInfo.name} queryById($!pk.shortType $!pk.name) {\n return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.queryById($!pk.name);\n }\n\n /**\n * 分页查询\n *\n * @param $!{tool.firstLowerCase($tableInfo.name)} 筛选条件\n * @param pageRequest 分页对象\n * @return 查询结果\n */\n @Override\n public Page<$!{tableInfo.name}> queryByPage($!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}, PageRequest pageRequest) {\n long total = this.$!{tool.firstLowerCase($tableInfo.name)}Dao.count($!{tool.firstLowerCase($tableInfo.name)});\n return new PageImpl<>(this.$!{tool.firstLowerCase($tableInfo.name)}Dao.queryAllByLimit($!{tool.firstLowerCase($tableInfo.name)}, pageRequest), pageRequest, total);\n }\n\n /**\n * 新增数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n * @return 实例对象\n */\n @Override\n public $!{tableInfo.name} insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {\n this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.insert($!tool.firstLowerCase($!{tableInfo.name}));\n return $!tool.firstLowerCase($!{tableInfo.name});\n }\n\n /**\n * 修改数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n * @return 实例对象\n */\n @Override\n public $!{tableInfo.name} update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {\n this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.update($!tool.firstLowerCase($!{tableInfo.name}));\n return this.queryById($!{tool.firstLowerCase($!{tableInfo.name})}.get$!tool.firstUpperCase($pk.name)());\n }\n\n /**\n * 通过主键删除数据\n *\n * @param $!pk.name 主键\n * @return 是否成功\n */\n @Override\n public boolean deleteById($!pk.shortType $!pk.name) {\n return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.deleteById($!pk.name) > 0;\n }\n}"
} ]
}
},
"columnConfig" : {
"Default" : {
"name" : "Default",
"elementList" : [ {
"title" : "disable",
"type" : "BOOLEAN",
"selectValue" : ""
}, {
"title" : "support",
"type" : "SELECT",
"selectValue" : "add,edit,query,del,ui"
} ]
}
},
"globalConfig" : {
"Default" : {
"name" : "Default",
"elementList" : [ {
"name" : "autoImport.vm",
"value" : "##自动导入包(仅导入实体属性需要的包,通常用于实体类)\n#foreach($import in $importList)\nimport $!import;\n#end"
}, {
"name" : "define.vm",
"value" : "##(Velocity宏定义)\n\n##定义设置表名后缀的宏定义,调用方式:#setTableSuffix(\"Test\")\n#macro(setTableSuffix $suffix)\n #set($tableName = $!tool.append($tableInfo.name, $suffix))\n#end\n\n##定义设置包名后缀的宏定义,调用方式:#setPackageSuffix(\"Test\")\n#macro(setPackageSuffix $suffix)\n#if($suffix!=\"\")package #end#if($tableInfo.savePackageName!=\"\")$!{tableInfo.savePackageName}.#{end}$!suffix;\n#end\n\n##定义直接保存路径与文件名简化的宏定义,调用方式:#save(\"/entity\", \".java\")\n#macro(save $path $fileName)\n $!callback.setSavePath($tool.append($tableInfo.savePath, $path))\n $!callback.setFileName($tool.append($tableInfo.name, $fileName))\n#end\n\n##定义表注释的宏定义,调用方式:#tableComment(\"注释信息\")\n#macro(tableComment $desc)\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})$desc\n *\n * @author $!author\n * @since $!time.currTime()\n */\n#end\n\n##定义GET,SET方法的宏定义,调用方式:#getSetMethod($column)\n#macro(getSetMethod $column)\n\n public $!{tool.getClsNameByFullName($column.type)} get$!{tool.firstUpperCase($column.name)}() {\n return $!{column.name};\n }\n\n public void set$!{tool.firstUpperCase($column.name)}($!{tool.getClsNameByFullName($column.type)} $!{column.name}) {\n this.$!{column.name} = $!{column.name};\n }\n#end"
}, {
"name" : "init.vm",
"value" : "##初始化区域\n\n##去掉表的t_前缀\n$!tableInfo.setName($tool.getClassName($tableInfo.obj.name.replaceFirst(\"book_\",\"\")))\n\n##参考阿里巴巴开发手册,POJO 类中布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误\n#foreach($column in $tableInfo.fullColumn)\n#if($column.name.startsWith(\"is\") && $column.type.equals(\"java.lang.Boolean\"))\n $!column.setName($tool.firstLowerCase($column.name.substring(2)))\n#end\n#end\n\n##实现动态排除列\n#set($temp = $tool.newHashSet(\"testCreateTime\", \"otherColumn\"))\n#foreach($item in $temp)\n #set($newList = $tool.newArrayList())\n #foreach($column in $tableInfo.fullColumn)\n #if($column.name!=$item)\n ##带有反回值的方法调用时使用$tool.call来消除返回值\n $tool.call($newList.add($column))\n #end\n #end\n ##重新保存\n $tableInfo.setFullColumn($newList)\n#end\n\n##对importList进行篡改\n#set($temp = $tool.newHashSet())\n#foreach($column in $tableInfo.fullColumn)\n #if(!$column.type.startsWith(\"java.lang.\"))\n ##带有反回值的方法调用时使用$tool.call来消除返回值\n $tool.call($temp.add($column.type))\n #end\n#end\n##覆盖\n#set($importList = $temp)"
}, {
"name" : "mybatisSupport.vm",
"value" : "##针对Mybatis 进行支持,主要用于生成xml文件\n#foreach($column in $tableInfo.fullColumn)\n ##储存列类型\n $tool.call($column.ext.put(\"sqlType\", $tool.getField($column.obj.dataType, \"typeName\")))\n #if($tool.newHashSet(\"java.lang.String\").contains($column.type))\n #set($jdbcType=\"VARCHAR\")\n #elseif($tool.newHashSet(\"java.lang.Boolean\", \"boolean\").contains($column.type))\n #set($jdbcType=\"BOOLEAN\")\n #elseif($tool.newHashSet(\"java.lang.Byte\", \"byte\").contains($column.type))\n #set($jdbcType=\"BYTE\")\n #elseif($tool.newHashSet(\"java.lang.Integer\", \"int\", \"java.lang.Short\", \"short\").contains($column.type))\n #set($jdbcType=\"INTEGER\")\n #elseif($tool.newHashSet(\"java.lang.Long\", \"long\").contains($column.type))\n #set($jdbcType=\"INTEGER\")\n #elseif($tool.newHashSet(\"java.lang.Float\", \"float\", \"java.lang.Double\", \"double\").contains($column.type))\n #set($jdbcType=\"NUMERIC\")\n #elseif($tool.newHashSet(\"java.util.Date\", \"java.sql.Timestamp\", \"java.time.Instant\", \"java.time.LocalDateTime\", \"java.time.OffsetDateTime\", \"\tjava.time.ZonedDateTime\").contains($column.type))\n #set($jdbcType=\"TIMESTAMP\")\n #elseif($tool.newHashSet(\"java.sql.Date\", \"java.time.LocalDate\").contains($column.type))\n #set($jdbcType=\"TIMESTAMP\")\n #else\n ##其他类型\n #set($jdbcType=\"VARCHAR\")\n #end\n $tool.call($column.ext.put(\"jdbcType\", $jdbcType))\n#end\n\n##定义宏,查询所有列\n#macro(allSqlColumn)#foreach($column in $tableInfo.fullColumn)$column.obj.name#if($velocityHasNext), #end#end#end\n"
}, {
"name" : "baseEntity.vm",
"value" : "com.xiaobing.common.base.BaseEntity"
}, {
"name" : "baseController.vm",
"value" : "import com.xiaobing.common.base.BaseController;"
} ]
}
}
}
可直接导入使用

2025-2-25 导入新版
{
"author" : "xulk",
"version" : "1.2.8",
"userSecure" : "",
"currTypeMapperGroupName" : "Default",
"currTemplateGroupName" : "MybatisPlus",
"currColumnConfigGroupName" : "Default",
"currGlobalConfigGroupName" : "Default",
"typeMapper" : {
"Default" : {
"name" : "Default",
"elementList" : [ {
"matchType" : "REGEX",
"columnType" : "varchar(\\(\\d+\\))?",
"javaType" : "java.lang.String"
}, {
"matchType" : "REGEX",
"columnType" : "char(\\(\\d+\\))?",
"javaType" : "java.lang.String"
}, {
"matchType" : "REGEX",
"columnType" : "(tiny|medium|long)*text",
"javaType" : "java.lang.String"
}, {
"matchType" : "REGEX",
"columnType" : "decimal(\\(\\d+,\\d+\\))?",
"javaType" : "java.lang.Double"
}, {
"matchType" : "ORDINARY",
"columnType" : "integer",
"javaType" : "java.lang.Integer"
}, {
"matchType" : "REGEX",
"columnType" : "(tiny|small|medium)*int(\\(\\d+\\))?",
"javaType" : "java.lang.Integer"
}, {
"matchType" : "ORDINARY",
"columnType" : "int4",
"javaType" : "java.lang.Integer"
}, {
"matchType" : "ORDINARY",
"columnType" : "int8",
"javaType" : "java.lang.Long"
}, {
"matchType" : "REGEX",
"columnType" : "bigint(\\(\\d+\\))?",
"javaType" : "java.lang.Long"
}, {
"matchType" : "ORDINARY",
"columnType" : "date",
"javaType" : "java.util.Date"
}, {
"matchType" : "ORDINARY",
"columnType" : "datetime",
"javaType" : "java.util.Date"
}, {
"matchType" : "ORDINARY",
"columnType" : "timestamp",
"javaType" : "java.util.Date"
}, {
"matchType" : "ORDINARY",
"columnType" : "time",
"javaType" : "java.time.LocalTime"
}, {
"matchType" : "ORDINARY",
"columnType" : "boolean",
"javaType" : "java.lang.Boolean"
}, {
"matchType" : "ORDINARY",
"columnType" : "double(14,11)",
"javaType" : "java.lang.Double"
} ]
}
},
"template" : {
"MybatisPlus-Mixed" : {
"name" : "MybatisPlus-Mixed",
"elementList" : [ {
"name" : "controller.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Controller\")\n\n##保存文件(宏定义)\n#save(\"/controller\", \"Controller.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"controller\")\n\n##定义服务名\n#set($serviceName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), \"Service\"))\n\n##定义实体对象名\n#set($entityName = $!tool.firstLowerCase($!tableInfo.name))\n\nimport com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;\nimport com.baomidou.mybatisplus.extension.api.ApiController;\nimport com.baomidou.mybatisplus.extension.api.R;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.annotation.Resource;\nimport java.io.Serializable;\nimport java.util.List;\n\n##表注释(宏定义)\n#tableComment(\"表控制层\")\n@RestController\n@RequestMapping(\"$!tool.firstLowerCase($!tableInfo.name)\")\npublic class $!{tableName} extends ApiController {\n /**\n * 服务对象\n */\n @Resource\n private $!{tableInfo.name}Service $!{serviceName};\n\n /**\n * 分页查询所有数据\n *\n * @param page 分页对象\n * @param $!entityName 查询实体\n * @return 所有数据\n */\n @GetMapping\n public R selectAll(Page<$!tableInfo.name> page, $!tableInfo.name $!entityName) {\n return success(this.$!{serviceName}.page(page, new QueryWrapper<>($!entityName)));\n }\n\n /**\n * 通过主键查询单条数据\n *\n * @param id 主键\n * @return 单条数据\n */\n @GetMapping(\"{id}\")\n public R selectOne(@PathVariable Serializable id) {\n return success(this.$!{serviceName}.getById(id));\n }\n\n /**\n * 新增数据\n *\n * @param $!entityName 实体对象\n * @return 新增结果\n */\n @PostMapping\n public R insert(@RequestBody $!tableInfo.name $!entityName) {\n return success(this.$!{serviceName}.save($!entityName));\n }\n\n /**\n * 修改数据\n *\n * @param $!entityName 实体对象\n * @return 修改结果\n */\n @PutMapping\n public R update(@RequestBody $!tableInfo.name $!entityName) {\n return success(this.$!{serviceName}.updateById($!entityName));\n }\n\n /**\n * 删除数据\n *\n * @param idList 主键结合\n * @return 删除结果\n */\n @DeleteMapping\n public R delete(@RequestParam(\"idList\") List<Long> idList) {\n return success(this.$!{serviceName}.removeByIds(idList));\n }\n}\n"
}, {
"name" : "dao.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Dao\")\n\n##保存文件(宏定义)\n#save(\"/dao\", \"Dao.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"dao\")\n\nimport java.util.List;\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport org.apache.ibatis.annotations.Param;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n\n##表注释(宏定义)\n#tableComment(\"表数据库访问层\")\npublic interface $!{tableName} extends BaseMapper<$!tableInfo.name> {\n\n/**\n* 批量新增数据(MyBatis原生foreach方法)\n*\n* @param entities List<$!{tableInfo.name}> 实例对象列表\n* @return 影响行数\n*/\nint insertBatch(@Param(\"entities\") List<$!{tableInfo.name}> entities);\n\n/**\n* 批量新增或按主键更新数据(MyBatis原生foreach方法)\n*\n* @param entities List<$!{tableInfo.name}> 实例对象列表\n* @return 影响行数\n* @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参\n*/\nint insertOrUpdateBatch(@Param(\"entities\") List<$!{tableInfo.name}> entities);\n\n}\n"
}, {
"name" : "entity.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/entity\", \".java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"entity\")\n\n##自动导入包(全局变量)\n$!autoImport\nimport com.baomidou.mybatisplus.extension.activerecord.Model;\nimport java.io.Serializable;\n\n##表注释(宏定义)\n#tableComment(\"表实体类\")\n@SuppressWarnings(\"serial\")\npublic class $!{tableInfo.name} extends Model<$!{tableInfo.name}> {\n#foreach($column in $tableInfo.fullColumn)\n #if(${column.comment})//${column.comment}#end\n\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n\n#foreach($column in $tableInfo.fullColumn)\n#getSetMethod($column)\n#end\n\n#foreach($column in $tableInfo.pkColumn)\n /**\n * 获取主键值\n *\n * @return 主键值\n */\n @Override\n protected Serializable pkVal() {\n return this.$!column.name;\n }\n #break\n#end\n}\n"
}, {
"name" : "mapper.xml.vm",
"code" : "##引入mybatis支持\n$!{mybatisSupport.vm}\n\n##设置保存名称与保存位置\n$!callback.setFileName($tool.append($!{tableInfo.name}, \"Dao.xml\"))\n$!callback.setSavePath($tool.append($modulePath, \"/src/main/resources/mapper\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"$!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao\">\n\n <resultMap type=\"$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}\" id=\"$!{tableInfo.name}Map\">\n#foreach($column in $tableInfo.fullColumn)\n <result property=\"$!column.name\" column=\"$!column.obj.name\" jdbcType=\"$!column.ext.jdbcType\"/>\n#end\n </resultMap>\n\n <!-- 批量插入 -->\n <insert id=\"insertBatch\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n values\n <foreach collection=\"entities\" item=\"entity\" separator=\",\">\n (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)\n </foreach>\n </insert>\n <!-- 批量插入或按主键更新 -->\n <insert id=\"insertOrUpdateBatch\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n values\n <foreach collection=\"entities\" item=\"entity\" separator=\",\">\n (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)\n </foreach>\n on duplicate key update\n #foreach($column in $tableInfo.otherColumn)$!column.obj.name = values($!column.obj.name) #if($velocityHasNext), #end#end\n </insert>\n\n</mapper>\n"
}, {
"name" : "service.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Service\")\n\n##保存文件(宏定义)\n#save(\"/service\", \"Service.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service\")\n\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n\n##表注释(宏定义)\n#tableComment(\"表服务接口\")\npublic interface $!{tableName} extends IService<$!tableInfo.name> {\n\n}\n"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"ServiceImpl\")\n\n##保存文件(宏定义)\n#save(\"/service/impl\", \"ServiceImpl.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service.impl\")\n\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.stereotype.Service;\n\n##表注释(宏定义)\n#tableComment(\"表服务实现类\")\n@Service(\"$!tool.firstLowerCase($tableInfo.name)Service\")\npublic class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Dao, $!{tableInfo.name}> implements $!{tableInfo.name}Service {\n\n}\n"
} ]
},
"MybatisPlus" : {
"name" : "MybatisPlus",
"elementList" : [ {
"name" : "controller.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Controller\")\n##保存文件(宏定义)\n#save(\"/controller\", \"Controller.java\")\n##包路径(宏定义)\n#setPackageSuffix(\"controller\")\n##定义服务名\n#set($serviceName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), \"Service\"))\n\n##定义实体对象名\n#set($entityName = $!tool.firstLowerCase($!tableInfo.name))\n$!{result.vm}\n$!{baseController.vm}\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.web.bind.annotation.*;\nimport com.xiaobing.common.res.Result;\nimport javax.annotation.Resource;\nimport java.io.Serializable;\nimport java.util.List;\nimport com.xiaobing.common.annotation.UserOptLogger;\nimport com.xiaobing.common.annotation.RequiresPermissions;\nimport com.xiaobing.common.annotation.ResubmitLock;\n\n##表注释(宏定义)\n#tableComment(\"表控制层\")\n@UserOptLogger\n@RestController\n@RequestMapping(\"/$!tool.firstLowerCase($!tableInfo.name)\")\n## @RequestMapping(\"$!tool.firstLowerCase($!tableInfo.name).substring(0, 5)\")\npublic class $!{tableName} extends BaseController {\n \n /**\n * 服务对象\n */\n @Resource\n private $!{tableInfo.name}Service $!{serviceName};\n\n\n /**\n * $!{tableInfo.comment} 分页查询 列表数据\n *\n * @param $!entityName 查询实体\n * @return 分页数据\n */\n // @RequiresPermissions(\":$!tool.firstLowerCase($!tableInfo.name):page\")\n @GetMapping(\"/selectPage\")\n\tpublic Result selectPage($!tableInfo.name $!entityName) {\n return Result.success($!{serviceName}.selectIPage($!entityName));\n }\n\t\n\n /**\n * $!{tableInfo.comment} 通过主键查询单条数据\n *\n * @param id 主键\n * @return 单条数据\n */\n @GetMapping(\"/selectOne\")\n public Result selectOne(@RequestParam(\"id\") Serializable id) {\n return Result.success($!{serviceName}.getById(id));\n }\n\n\n /**\n * $!{tableInfo.comment} 新增数据\n *\n * @param $!entityName 实体对象\n * @return 新增结果\n */\n\t// @RequiresPermissions(\":$!tool.firstLowerCase($!tableInfo.name):add\")\n\t@ResubmitLock\n @PostMapping(\"/add\")\n public Result add(@RequestBody $!tableInfo.name $!entityName) {\n return Result.success($!{serviceName}.add($!entityName));\n }\n\t\n\n /**\n * $!{tableInfo.comment} 修改数据\n *\n * @param $!entityName 实体对象\n * @return 修改结果\n */\n\t// RequiresPermissions(\":$!tool.firstLowerCase($!tableInfo.name):update\")\n\t@ResubmitLock\n @PostMapping(\"/update\")\n public Result update(@RequestBody $!tableInfo.name $!entityName) {\n return Result.success($!{serviceName}.update($!entityName));\n }\n\t\n\n /**\n * $!{tableInfo.comment} 批量删除数据\n *\n * @param idList 主键结合\n * @return 删除结果\n */\n\t// @RequiresPermissions(\":$!tool.firstLowerCase($!tableInfo.name):delete\")\n\t@ResubmitLock\n @PostMapping(\"/delete\")\n public Result delete(@RequestParam(\"idList\") List<Long> idList) {\n return Result.success($!{serviceName}.deleteByIds(idList));\n }\n\t\n}\n"
}, {
"name" : "dao.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)(拼接的后缀Mapper)\n#setTableSuffix(\"Mapper\")\n\n##保存文件(宏定义)(...Mapper.java)\n#save(\"/dao\", \"Mapper.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"dao\")\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n\n##表注释(宏定义)\n#tableComment(\"表数据库访问层\")\npublic interface $!{tableName} extends BaseMapper<$!tableInfo.name> {\n\n}\n"
}, {
"name" : "entity.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n##保存文件(宏定义)(文件后缀)\n#save(\"/entity\", \".java\") \n#set($temp = $tool.newHashSet(\"id\", \"createBy\", \"updateBy\", \"createTime\", \"updateTime\", \"delFlag\"))\n#foreach($item in $temp)\n #set($newList = $tool.newArrayList())\n #foreach($column in $tableInfo.fullColumn)\n #if($column.name!=$item)\n $tool.call($newList.add($column))\n #end\n #end\n $tableInfo.setFullColumn($newList)\n#end\n \n#setPackageSuffix(\"entity\")\n##自动导入包(全局变量)\n$!{baseEntity.vm}\n$!{autoImport.vm}\nimport com.baomidou.mybatisplus.annotation.TableName;\nimport java.io.Serializable;\nimport lombok.Data;\nimport lombok.AllArgsConstructor;\nimport lombok.NoArgsConstructor;\n \n##表注释(宏定义)\n#tableComment(\"表实体类\")\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\n@TableName(\"$!{tableInfo.obj.name}\")\npublic class $!{tableInfo.name} extends BaseEntity implements Serializable {\n private static final long serialVersionUID = $!tool.serial();\n#foreach($column in $tableInfo.fullColumn)\n \n #if(${column.comment}) /**\n * ${column.comment}\n */#end\n\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n\n}"
}, {
"name" : "service.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Service\")\n\n##保存文件(宏定义)\n#save(\"/service\", \"Service.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service\")\n\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n#set($entityName = $!tool.firstLowerCase($!tableInfo.name))\nimport java.util.List;\n\n##表注释(宏定义)\n#tableComment(\"表服务接口\")\npublic interface $!{tableName} extends IService<$!tableInfo.name> {\n\n\n\t/**\n * $!{tableInfo.comment} 分页查询\n *\n * @param $!entityName 查询实体\n * @return 分页数据\n */\n public Page<$!tableInfo.name> selectIPage($!tableInfo.name $!entityName);\n\t\n\n\t/**\n * $!{tableInfo.comment} 新增数据\n *\n * @param $!entityName 查询实体\n * @return 新增结果\n */\n\tint add($!tableInfo.name $!entityName);\n\t\n\t\n\t/**\n * $!{tableInfo.comment} 修改数据\n *\n * @param $!entityName 查询实体\n * @return 修改结果\n */\n\tint update($!tableInfo.name $!entityName);\n\t\n\t\n /**\n * $!{tableInfo.comment} 批量删除数据\n *\n * @param idList 主键结合\n * @return 删除结果\n */\n\tint deleteByIds(List<Long> idList);\n\t\n\t\n}\n"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"ServiceImpl\")\n\n##保存文件(宏定义)(文件后缀例如:...ServiceImpl.java)\n#save(\"/service/impl\", \"ServiceImpl.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service.impl\")\n\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Mapper;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.stereotype.Service;\nimport org.springframework.transaction.annotation.Transactional;\nimport com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;\nimport javax.annotation.Resource;\nimport lombok.extern.slf4j.Slf4j;\n#set($entityName = $!tool.firstLowerCase($!tableInfo.name))\n#set($mapperName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), \"Mapper\"))\nimport java.util.List;\n\n##表注释(宏定义)\n#tableComment(\"表服务实现类\")\n@Slf4j\n@Service(\"$!tool.firstLowerCase($tableInfo.name)Service\")\npublic class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Mapper, $!{tableInfo.name}> implements $!{tableInfo.name}Service {\n\n @Resource\n $!{tableInfo.name}Mapper $!{mapperName};\n\n\n\t/**\n * $!{tableInfo.comment} 分页查询\n *\n * @param $!entityName 查询实体\n * @return 分页数据\n */\n @Override\n public Page<$!tableInfo.name> selectIPage($!tableInfo.name $!entityName){\n Page<$!tableInfo.name> page = new Page<>();\n page.setCurrent($!{entityName}.getPageNum());\n page.setSize($!{entityName}.getPageSize());\n LambdaQueryWrapper<$!tableInfo.name> queryWrapper = new LambdaQueryWrapper<>();\n return $!{mapperName}.selectPage(page, queryWrapper);\n }\n\t\n\n\t/**\n * $!{tableInfo.comment} 新增数据\n *\n * @param $!entityName 查询实体\n * @return 新增结果\n */\n @Override\n\tpublic int add($!tableInfo.name $!entityName){\n int addCount = $!{mapperName}.insert($!entityName);\n return addCount;\n }\n\t\n\n\t/**\n * $!{tableInfo.comment} 修改数据\n *\n * @param $!entityName 查询实体\n * @return 修改结果\n */\n @Override\n\t@Transactional\n\tpublic int update($!tableInfo.name $!entityName){\n\t\tint updateCount = $!{mapperName}.updateById($!entityName);\n return updateCount;\n }\n\t\n\t\n /**\n * $!{tableInfo.comment} 批量删除数据\n *\n * @param idList 主键结合\n * @return 删除结果\n */\n @Override\n\tpublic int deleteByIds(List<Long> idList){\n return $!{mapperName}.deleteByIds(idList);\n }\n\t\n}\n"
}, {
"name" : "mapper.xml.vm",
"code" : "##引入mybatis支持\n$!{mybatisSupport.vm}\n \n##设置保存名称与保存位置\n$!callback.setFileName($tool.append($!{tableInfo.name}, \"Mapper.xml\"))\n$!callback.setSavePath($tool.append($modulePath, \"/src/main/resources/mybatis\"))\n \n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n \n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"$!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Mapper\">\n \n ## <resultMap type=\"$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}\" id=\"$!{tableInfo.name}Map\">\n <resultMap type=\"com.xiaobing.common.domain.entity.$!{tableInfo.name}\" id=\"$!{tableInfo.name}Map\">\n#foreach($column in $tableInfo.fullColumn)\n <result property=\"$!column.name\" column=\"$!column.obj.name\"/>\n#end\n </resultMap>\n \n</mapper>"
} ]
},
"spring-data-mongodb" : {
"name" : "spring-data-mongodb",
"elementList" : [ {
"name" : "controller.java.vm",
"code" : "##导入宏定义、设置包名、类名、文件名##导入宏定义\n$!{define.vm}\n#setPackageSuffix(\"controller\")\n#setTableSuffix(\"Controller\")\n#save(\"/controller\", \"Controller.java\")\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n##定义服务名\n#set($serviceSortType = $!tool.append($!tableInfo.name, \"Service\"))\n#set($serviceType = $!tool.append($!tableInfo.savePackageName, \".service.\", $serviceSortType))\n#set($serviceVarName = $!tool.firstLowerCase($serviceSortType))\n\n#set($entityShortType = $!tableInfo.name)\n#set($entityType = $!tableInfo.psiClassObj.getQualifiedName())\n#set($entityVarName = $!tool.firstLowerCase($!tableInfo.name))\n#set($pkType = $!pk.type)\n\nimport $pkType;\nimport $entityType;\nimport $serviceType;\nimport lombok.AllArgsConstructor;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n\n/**\n * $!{tableInfo.comment}控制层\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@RestController\n@RequestMapping(\"/$!tool.firstLowerCase($!tableInfo.name)\")\n@AllArgsConstructor\npublic class $!{tableName} {\n\n\tprivate $serviceSortType $serviceVarName;\n\n\t/**\n\t * 获取$!{tableInfo.comment}列表(分页)\n\t */\n\t@GetMapping(\"/list\")\n\tpublic Page<$entityShortType> list(Pageable page) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * 获取$!{tableInfo.comment}\n\t */\n\t@GetMapping(\"/get\")\n\tpublic $entityShortType get($!pk.shortType id) {\n\t\treturn ${serviceVarName}.findById(id);\n\t}\n\n\t/**\n\t * 添加$!{tableInfo.comment}\n\t */\n\t@PostMapping(\"/add\")\n\tpublic void add(@RequestBody $entityShortType $entityVarName) {\n\t\t${serviceVarName}.save($entityVarName);\n\t}\n\n\n\t/**\n\t * 修改$!{tableInfo.comment}\n\t */\n\t@PostMapping(\"/update\")\n\tpublic void update(@RequestBody $entityShortType $entityVarName) {\n\t\t${serviceVarName}.save($entityVarName);\n\t}\n\n\t/**\n\t * 删除$!{tableInfo.comment}\n\t */\n\t@PostMapping(\"/delete\")\n\tpublic void delete($!pk.shortType id) {\n\t\t${serviceVarName}.deleteById(id);\n\t}\n\n}\n"
}, {
"name" : "entity.java.vm",
"code" : "##引入宏定义\n$!{define.vm}\n\n##使用宏定义设置回调(保存位置与文件后缀)\n#save(\"/entity\", \".java\")\n\n##使用宏定义设置包后缀\n#setPackageSuffix(\"entity\")\n\n##使用全局变量实现默认包导入\n$!{autoImport.vm}\nimport java.io.Serializable;\n\n##使用宏定义实现类注释信息\n#tableComment(\"实体类\")\npublic class $!{tableInfo.name} implements Serializable {\n private static final long serialVersionUID = $!tool.serial();\n#foreach($column in $tableInfo.fullColumn)\n #if(${column.comment})/**\n * ${column.comment}\n */#end\n\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n\n#foreach($column in $tableInfo.fullColumn)\n##使用宏定义实现get,set方法\n#getSetMethod($column)\n#end\n\n}\n"
}, {
"name" : "repository.java.vm",
"code" : "##导入宏定义、设置包名、类名、文件名##导入宏定义\n$!{define.vm}\n#setPackageSuffix(\"repository\")\n#setTableSuffix(\"Repository\")\n#save(\"/repository\", \"Repository.java\")\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n##实体类名、主键类名\n#set($entityShortType = $!tableInfo.name)\n#set($entityType = $!tableInfo.psiClassObj.getQualifiedName())\n#set($pkShortType = $!pk.shortType)\n#set($pkType = $!pk.type)\n\nimport $pkType;\nimport $entityType;\nimport org.springframework.data.mongodb.repository.MongoRepository;\n\n\n/**\n * $!{tableInfo.comment}持久层\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} extends MongoRepository<$entityShortType, $pkShortType> {\n\n}\n"
}, {
"name" : "service.java.vm",
"code" : "##导入宏定义、设置包名、类名、文件名##导入宏定义\n$!{define.vm}\n#setPackageSuffix(\"service\")\n#setTableSuffix(\"Service\")\n#save(\"/service\", \"Service.java\")\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n##实体类名、主键类名\n#set($entityShortType = $!tableInfo.name)\n#set($entityType = $!tableInfo.psiClassObj.getQualifiedName())\n#set($entityVarName = $!tool.firstLowerCase($!tableInfo.name))\n#set($pkShortType = $!pk.shortType)\n#set($pkType = $!pk.type)\n\nimport $pkType;\nimport $entityType;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport java.util.Collection;\nimport java.util.List;\n\n\n/**\n * $!{tableInfo.comment}业务层\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} {\n\n void save($entityShortType $entityVarName);\n\n void deleteById($pkShortType id);\n\n $entityShortType findById($pkShortType id);\n\n List<$entityShortType> findById(Collection<$pkShortType> ids);\n\n Page<$entityShortType> list(Pageable page);\n\n}\n"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##导入宏定义、设置包名、类名、文件名\n$!{define.vm}\n#setPackageSuffix(\"service.impl\")\n#setTableSuffix(\"ServiceImpl\")\n#save(\"/service/impl\", \"ServiceImpl.java\")\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n##业务层类名、持久层类名、实体名\n#set($serviceSortType = $!tool.append($!tableInfo.name, \"Service\"))\n#set($serviceType = $!tool.append($!tableInfo.savePackageName, \".service.\", $serviceSortType))\n#set($repositorySortType = $!tool.append($!tableInfo.name, \"Repository\"))\n#set($repositoryType = $!tool.append($!tableInfo.savePackageName, \".repository.\", $repositorySortType))\n#set($repositoryVarName = $!tool.firstLowerCase($!repositorySortType))\n#set($entityShortType = $!tableInfo.name)\n#set($entityType = $!tableInfo.psiClassObj.getQualifiedName())\n#set($entityVarName = $!tool.firstLowerCase($!tableInfo.name))\n#set($pkShortType = $!pk.shortType)\n#set($pkType = $!pk.type)\n\nimport $pkType;\nimport $entityType;\nimport $serviceType;\nimport $repositoryType;\nimport org.springframework.stereotype.Service;\nimport javax.annotation.Resource;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.stream.Collectors;\nimport java.util.stream.StreamSupport;\n\n\n/**\n * $!{tableInfo.comment}业务层\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@Service\npublic class $!{tableName} implements $!serviceSortType {\n\n\t@Resource\n private $repositorySortType $repositoryVarName;\n\n @Override\n public void save($entityShortType $entityVarName) {\n $!{repositoryVarName}.save($entityVarName);\n }\n\n @Override\n public void deleteById($pkShortType id) {\n $!{repositoryVarName}.delete(id);\n }\n\n @Override\n public $entityShortType findById($pkShortType id) {\n return $!{repositoryVarName}.findOne(id);\n }\n\n @Override\n public List<$entityShortType> findById(Collection<$pkShortType> ids) {\n Iterable<$entityShortType> iterable = $!{repositoryVarName}.findAll(ids);\n return StreamSupport.stream(iterable.spliterator(), false)\n .collect(Collectors.toList());\n }\n\n @Override\n public Page<$entityShortType> list(Pageable page) {\n return $!{repositoryVarName}.findAll(page);\n }\n\n}\n"
} ]
},
"Default" : {
"name" : "Default",
"elementList" : [ {
"name" : "controller.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Controller\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/controller\"))\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}controller;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.PageRequest;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.annotation.Resource;\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表控制层\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@RestController\n@RequestMapping(\"$!tool.firstLowerCase($tableInfo.name)\")\npublic class $!{tableName} {\n /**\n * 服务对象\n */\n @Resource\n private $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;\n\n /**\n * 分页查询\n *\n * @param $!{tool.firstLowerCase($tableInfo.name)} 筛选条件\n * @param pageRequest 分页对象\n * @return 查询结果\n */\n @GetMapping\n public ResponseEntity<Page<$!{tableInfo.name}>> queryByPage($!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}, PageRequest pageRequest) {\n return ResponseEntity.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.queryByPage($!{tool.firstLowerCase($tableInfo.name)}, pageRequest));\n }\n\n /**\n * 通过主键查询单条数据\n *\n * @param id 主键\n * @return 单条数据\n */\n @GetMapping(\"{id}\")\n public ResponseEntity<$!{tableInfo.name}> queryById(@PathVariable(\"id\") $!pk.shortType id) {\n return ResponseEntity.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.queryById(id));\n }\n\n /**\n * 新增数据\n *\n * @param $!{tool.firstLowerCase($tableInfo.name)} 实体\n * @return 新增结果\n */\n @PostMapping\n public ResponseEntity<$!{tableInfo.name}> add($!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}) {\n return ResponseEntity.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.insert($!{tool.firstLowerCase($tableInfo.name)}));\n }\n\n /**\n * 编辑数据\n *\n * @param $!{tool.firstLowerCase($tableInfo.name)} 实体\n * @return 编辑结果\n */\n @PutMapping\n public ResponseEntity<$!{tableInfo.name}> edit($!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}) {\n return ResponseEntity.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.update($!{tool.firstLowerCase($tableInfo.name)}));\n }\n\n /**\n * 删除数据\n *\n * @param id 主键\n * @return 删除是否成功\n */\n @DeleteMapping\n public ResponseEntity<Boolean> deleteById($!pk.shortType id) {\n return ResponseEntity.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.deleteById(id));\n }\n\n}\n"
}, {
"name" : "dao.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Dao\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/dao\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}dao;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport org.apache.ibatis.annotations.Param;\nimport org.springframework.data.domain.Pageable;\nimport java.util.List;\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} {\n\n /**\n * 通过ID查询单条数据\n *\n * @param $!pk.name 主键\n * @return 实例对象\n */\n $!{tableInfo.name} queryById($!pk.shortType $!pk.name);\n\n /**\n * 查询指定行数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 查询条件\n * @param pageable 分页对象\n * @return 对象列表\n */\n List<$!{tableInfo.name}> queryAllByLimit($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}), @Param(\"pageable\") Pageable pageable);\n\n /**\n * 统计总行数\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 查询条件\n * @return 总行数\n */\n long count($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));\n\n /**\n * 新增数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n * @return 影响行数\n */\n int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));\n\n /**\n * 批量新增数据(MyBatis原生foreach方法)\n *\n * @param entities List<$!{tableInfo.name}> 实例对象列表\n * @return 影响行数\n */\n int insertBatch(@Param(\"entities\") List<$!{tableInfo.name}> entities);\n\n /**\n * 批量新增或按主键更新数据(MyBatis原生foreach方法)\n *\n * @param entities List<$!{tableInfo.name}> 实例对象列表\n * @return 影响行数\n * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参\n */\n int insertOrUpdateBatch(@Param(\"entities\") List<$!{tableInfo.name}> entities);\n\n /**\n * 修改数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n * @return 影响行数\n */\n int update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));\n\n /**\n * 通过主键删除数据\n *\n * @param $!pk.name 主键\n * @return 影响行数\n */\n int deleteById($!pk.shortType $!pk.name);\n\n}\n"
}, {
"name" : "debug.json.vm",
"code" : "// 禁止将生成结果写入到文件\n$!callback.setWriteFile(false)\n\n//调试表原始对象\n$!tool.debug($tableInfo.obj)\n\n//调试列原始对象\n$!tool.debug($tableInfo.fullColumn.get(0).obj)\n\n//调试列原始列类型\n$!tool.debug($tableInfo.fullColumn.get(0).obj.dataType)\n\n//获取原始列类型中的字段\nsqlType = $!tool.getField($tableInfo.fullColumn.get(0).obj.dataType, \"typeName\")\n\n//执行原始列类型中的方法\nsqlTypeLen = $!tableInfo.fullColumn.get(0).obj.dataType.getLength()\n"
}, {
"name" : "entity.java.vm",
"code" : "##引入宏定义\n$!{define.vm}\n\n##使用宏定义设置回调(保存位置与文件后缀)\n#save(\"/entity\", \".java\")\n\n##使用宏定义设置包后缀\n#setPackageSuffix(\"entity\")\n\n##使用全局变量实现默认包导入\n$!{autoImport.vm}\nimport java.io.Serializable;\n\n##使用宏定义实现类注释信息\n#tableComment(\"实体类\")\npublic class $!{tableInfo.name} implements Serializable {\n private static final long serialVersionUID = $!tool.serial();\n#foreach($column in $tableInfo.fullColumn)\n #if(${column.comment})/**\n * ${column.comment}\n */#end\n\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n\n#foreach($column in $tableInfo.fullColumn)\n##使用宏定义实现get,set方法\n#getSetMethod($column)\n#end\n\n}\n"
}, {
"name" : "mapper.xml.vm",
"code" : "##引入mybatis支持\n$!{mybatisSupport.vm}\n\n##设置保存名称与保存位置\n$!callback.setFileName($tool.append($!{tableInfo.name}, \"Dao.xml\"))\n$!callback.setSavePath($tool.append($modulePath, \"/src/main/resources/mapper\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"$!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao\">\n\n <resultMap type=\"$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}\" id=\"$!{tableInfo.name}Map\">\n#foreach($column in $tableInfo.fullColumn)\n <result property=\"$!column.name\" column=\"$!column.obj.name\" jdbcType=\"$!column.ext.jdbcType\"/>\n#end\n </resultMap>\n\n <!--查询单个-->\n <select id=\"queryById\" resultMap=\"$!{tableInfo.name}Map\">\n select\n #allSqlColumn()\n\n from $!tableInfo.obj.name\n where $!pk.obj.name = #{$!pk.name}\n </select>\n\n <!--查询指定行数据-->\n <select id=\"queryAllByLimit\" resultMap=\"$!{tableInfo.name}Map\">\n select\n #allSqlColumn()\n\n from $!tableInfo.obj.name\n <where>\n#foreach($column in $tableInfo.fullColumn)\n <if test=\"$!column.name != null#if($column.type.equals(\"java.lang.String\")) and $!column.name != ''#end\">\n and $!column.obj.name = #{$!column.name}\n </if>\n#end\n </where>\n limit #{pageable.offset}, #{pageable.pageSize}\n </select>\n\n <!--统计总行数-->\n <select id=\"count\" resultType=\"java.lang.Long\">\n select count(1)\n from $!tableInfo.obj.name\n <where>\n#foreach($column in $tableInfo.fullColumn)\n <if test=\"$!column.name != null#if($column.type.equals(\"java.lang.String\")) and $!column.name != ''#end\">\n and $!column.obj.name = #{$!column.name}\n </if>\n#end\n </where>\n </select>\n\n <!--新增所有列-->\n <insert id=\"insert\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n values (#foreach($column in $tableInfo.otherColumn)#{$!{column.name}}#if($velocityHasNext), #end#end)\n </insert>\n\n <insert id=\"insertBatch\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n values\n <foreach collection=\"entities\" item=\"entity\" separator=\",\">\n (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)\n </foreach>\n </insert>\n\n <insert id=\"insertOrUpdateBatch\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n values\n <foreach collection=\"entities\" item=\"entity\" separator=\",\">\n (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)\n </foreach>\n on duplicate key update\n #foreach($column in $tableInfo.otherColumn)$!column.obj.name = values($!column.obj.name)#if($velocityHasNext),\n #end#end\n\n </insert>\n\n <!--通过主键修改数据-->\n <update id=\"update\">\n update $!{tableInfo.obj.name}\n <set>\n#foreach($column in $tableInfo.otherColumn)\n <if test=\"$!column.name != null#if($column.type.equals(\"java.lang.String\")) and $!column.name != ''#end\">\n $!column.obj.name = #{$!column.name},\n </if>\n#end\n </set>\n where $!pk.obj.name = #{$!pk.name}\n </update>\n\n <!--通过主键删除-->\n <delete id=\"deleteById\">\n delete from $!{tableInfo.obj.name} where $!pk.obj.name = #{$!pk.name}\n </delete>\n\n</mapper>\n"
}, {
"name" : "service.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Service\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/service\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.PageRequest;\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表服务接口\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} {\n\n /**\n * 通过ID查询单条数据\n *\n * @param $!pk.name 主键\n * @return 实例对象\n */\n $!{tableInfo.name} queryById($!pk.shortType $!pk.name);\n\n /**\n * 分页查询\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 筛选条件\n * @param pageRequest 分页对象\n * @return 查询结果\n */\n Page<$!{tableInfo.name}> queryByPage($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}), PageRequest pageRequest);\n\n /**\n * 新增数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n * @return 实例对象\n */\n $!{tableInfo.name} insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));\n\n /**\n * 修改数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n * @return 实例对象\n */\n $!{tableInfo.name} update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));\n\n /**\n * 通过主键删除数据\n *\n * @param $!pk.name 主键\n * @return 是否成功\n */\n boolean deleteById($!pk.shortType $!pk.name);\n\n}"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"ServiceImpl\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/service/impl\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service.impl;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.stereotype.Service;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.PageImpl;\nimport org.springframework.data.domain.PageRequest;\n\nimport javax.annotation.Resource;\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表服务实现类\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@Service(\"$!tool.firstLowerCase($!{tableInfo.name})Service\")\npublic class $!{tableName} implements $!{tableInfo.name}Service {\n @Resource\n private $!{tableInfo.name}Dao $!tool.firstLowerCase($!{tableInfo.name})Dao;\n\n /**\n * 通过ID查询单条数据\n *\n * @param $!pk.name 主键\n * @return 实例对象\n */\n @Override\n public $!{tableInfo.name} queryById($!pk.shortType $!pk.name) {\n return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.queryById($!pk.name);\n }\n\n /**\n * 分页查询\n *\n * @param $!{tool.firstLowerCase($tableInfo.name)} 筛选条件\n * @param pageRequest 分页对象\n * @return 查询结果\n */\n @Override\n public Page<$!{tableInfo.name}> queryByPage($!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}, PageRequest pageRequest) {\n long total = this.$!{tool.firstLowerCase($tableInfo.name)}Dao.count($!{tool.firstLowerCase($tableInfo.name)});\n return new PageImpl<>(this.$!{tool.firstLowerCase($tableInfo.name)}Dao.queryAllByLimit($!{tool.firstLowerCase($tableInfo.name)}, pageRequest), pageRequest, total);\n }\n\n /**\n * 新增数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n * @return 实例对象\n */\n @Override\n public $!{tableInfo.name} insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {\n this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.insert($!tool.firstLowerCase($!{tableInfo.name}));\n return $!tool.firstLowerCase($!{tableInfo.name});\n }\n\n /**\n * 修改数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n * @return 实例对象\n */\n @Override\n public $!{tableInfo.name} update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {\n this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.update($!tool.firstLowerCase($!{tableInfo.name}));\n return this.queryById($!{tool.firstLowerCase($!{tableInfo.name})}.get$!tool.firstUpperCase($pk.name)());\n }\n\n /**\n * 通过主键删除数据\n *\n * @param $!pk.name 主键\n * @return 是否成功\n */\n @Override\n public boolean deleteById($!pk.shortType $!pk.name) {\n return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.deleteById($!pk.name) > 0;\n }\n}"
} ]
}
},
"columnConfig" : {
"Default" : {
"name" : "Default",
"elementList" : [ {
"title" : "disable",
"type" : "BOOLEAN",
"selectValue" : ""
}, {
"title" : "support",
"type" : "SELECT",
"selectValue" : "add,edit,query,del,ui"
} ]
}
},
"globalConfig" : {
"Default" : {
"name" : "Default",
"elementList" : [ {
"name" : "autoImport.vm",
"value" : "##自动导入包(仅导入实体属性需要的包,通常用于实体类)\n#foreach($import in $importList)\nimport $!import;\n#end"
}, {
"name" : "define.vm",
"value" : "##(Velocity宏定义)\n\n##定义设置表名后缀的宏定义,调用方式:#setTableSuffix(\"Test\")\n#macro(setTableSuffix $suffix)\n #set($tableName = $!tool.append($tableInfo.name, $suffix))\n#end\n\n##定义设置包名后缀的宏定义,调用方式:#setPackageSuffix(\"Test\")\n#macro(setPackageSuffix $suffix)\n#if($suffix!=\"\")package #end#if($tableInfo.savePackageName!=\"\")$!{tableInfo.savePackageName}.#{end}$!suffix;\n#end\n\n##定义直接保存路径与文件名简化的宏定义,调用方式:#save(\"/entity\", \".java\")\n#macro(save $path $fileName)\n $!callback.setSavePath($tool.append($tableInfo.savePath, $path))\n $!callback.setFileName($tool.append($tableInfo.name, $fileName))\n#end\n\n##定义表注释的宏定义,调用方式:#tableComment(\"注释信息\")\n#macro(tableComment $desc)\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})$desc\n *\n * @author $!author\n * @since $!time.currTime()\n */\n#end\n\n##定义GET,SET方法的宏定义,调用方式:#getSetMethod($column)\n#macro(getSetMethod $column)\n\n public $!{tool.getClsNameByFullName($column.type)} get$!{tool.firstUpperCase($column.name)}() {\n return $!{column.name};\n }\n\n public void set$!{tool.firstUpperCase($column.name)}($!{tool.getClsNameByFullName($column.type)} $!{column.name}) {\n this.$!{column.name} = $!{column.name};\n }\n#end"
}, {
"name" : "init.vm",
"value" : "##初始化区域\n\n##去掉表的t_前缀\n$!tableInfo.setName($tool.getClassName($tableInfo.obj.name.replaceFirst(\"book_\",\"\")))\n\n##参考阿里巴巴开发手册,POJO 类中布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误\n#foreach($column in $tableInfo.fullColumn)\n#if($column.name.startsWith(\"is\") && $column.type.equals(\"java.lang.Boolean\"))\n $!column.setName($tool.firstLowerCase($column.name.substring(2)))\n#end\n#end\n\n##实现动态排除列\n#set($temp = $tool.newHashSet(\"testCreateTime\", \"otherColumn\"))\n#foreach($item in $temp)\n #set($newList = $tool.newArrayList())\n #foreach($column in $tableInfo.fullColumn)\n #if($column.name!=$item)\n ##带有反回值的方法调用时使用$tool.call来消除返回值\n $tool.call($newList.add($column))\n #end\n #end\n ##重新保存\n $tableInfo.setFullColumn($newList)\n#end\n\n##对importList进行篡改\n#set($temp = $tool.newHashSet())\n#foreach($column in $tableInfo.fullColumn)\n #if(!$column.type.startsWith(\"java.lang.\"))\n ##带有反回值的方法调用时使用$tool.call来消除返回值\n $tool.call($temp.add($column.type))\n #end\n#end\n##覆盖\n#set($importList = $temp)"
}, {
"name" : "mybatisSupport.vm",
"value" : "##针对Mybatis 进行支持,主要用于生成xml文件\n#foreach($column in $tableInfo.fullColumn)\n ##储存列类型\n $tool.call($column.ext.put(\"sqlType\", $tool.getField($column.obj.dataType, \"typeName\")))\n #if($tool.newHashSet(\"java.lang.String\").contains($column.type))\n #set($jdbcType=\"VARCHAR\")\n #elseif($tool.newHashSet(\"java.lang.Boolean\", \"boolean\").contains($column.type))\n #set($jdbcType=\"BOOLEAN\")\n #elseif($tool.newHashSet(\"java.lang.Byte\", \"byte\").contains($column.type))\n #set($jdbcType=\"BYTE\")\n #elseif($tool.newHashSet(\"java.lang.Integer\", \"int\", \"java.lang.Short\", \"short\").contains($column.type))\n #set($jdbcType=\"INTEGER\")\n #elseif($tool.newHashSet(\"java.lang.Long\", \"long\").contains($column.type))\n #set($jdbcType=\"INTEGER\")\n #elseif($tool.newHashSet(\"java.lang.Float\", \"float\", \"java.lang.Double\", \"double\").contains($column.type))\n #set($jdbcType=\"NUMERIC\")\n #elseif($tool.newHashSet(\"java.util.Date\", \"java.sql.Timestamp\", \"java.time.Instant\", \"java.time.LocalDateTime\", \"java.time.OffsetDateTime\", \"\tjava.time.ZonedDateTime\").contains($column.type))\n #set($jdbcType=\"TIMESTAMP\")\n #elseif($tool.newHashSet(\"java.sql.Date\", \"java.time.LocalDate\").contains($column.type))\n #set($jdbcType=\"TIMESTAMP\")\n #else\n ##其他类型\n #set($jdbcType=\"VARCHAR\")\n #end\n $tool.call($column.ext.put(\"jdbcType\", $jdbcType))\n#end\n\n##定义宏,查询所有列\n#macro(allSqlColumn)#foreach($column in $tableInfo.fullColumn)$column.obj.name#if($velocityHasNext), #end#end#end\n"
}, {
"name" : "baseEntity.vm",
"value" : "import com.xiaobing.common.base.BaseEntity;"
}, {
"name" : "baseController.vm",
"value" : "import com.xiaobing.common.base.BaseController;"
} ]
}
}
}
最新优化2025-03-12
{
"author" : "xulk",
"version" : "1.2.9",
"userSecure" : "",
"currTypeMapperGroupName" : "Default",
"currTemplateGroupName" : "MybatisPlus",
"currColumnConfigGroupName" : "Default",
"currGlobalConfigGroupName" : "Default",
"typeMapper" : {
"Default" : {
"name" : "Default",
"elementList" : [ {
"matchType" : "REGEX",
"columnType" : "varchar(\\(\\d+\\))?",
"javaType" : "java.lang.String"
}, {
"matchType" : "REGEX",
"columnType" : "char(\\(\\d+\\))?",
"javaType" : "java.lang.String"
}, {
"matchType" : "REGEX",
"columnType" : "(tiny|medium|long)*text",
"javaType" : "java.lang.String"
}, {
"matchType" : "REGEX",
"columnType" : "decimal(\\(\\d+,\\d+\\))?",
"javaType" : "java.lang.Double"
}, {
"matchType" : "ORDINARY",
"columnType" : "integer",
"javaType" : "java.lang.Integer"
}, {
"matchType" : "REGEX",
"columnType" : "(tiny|small|medium)*int(\\(\\d+\\))?",
"javaType" : "java.lang.Integer"
}, {
"matchType" : "ORDINARY",
"columnType" : "int4",
"javaType" : "java.lang.Integer"
}, {
"matchType" : "ORDINARY",
"columnType" : "int8",
"javaType" : "java.lang.Long"
}, {
"matchType" : "REGEX",
"columnType" : "bigint(\\(\\d+\\))?",
"javaType" : "java.lang.Long"
}, {
"matchType" : "ORDINARY",
"columnType" : "date",
"javaType" : "java.util.Date"
}, {
"matchType" : "ORDINARY",
"columnType" : "datetime",
"javaType" : "java.util.Date"
}, {
"matchType" : "ORDINARY",
"columnType" : "timestamp",
"javaType" : "java.util.Date"
}, {
"matchType" : "ORDINARY",
"columnType" : "time",
"javaType" : "java.time.LocalTime"
}, {
"matchType" : "ORDINARY",
"columnType" : "boolean",
"javaType" : "java.lang.Boolean"
}, {
"matchType" : "ORDINARY",
"columnType" : "double(14,11)",
"javaType" : "java.lang.Double"
}, {
"matchType" : "ORDINARY",
"columnType" : "bigint unsigned",
"javaType" : "java.lang.String"
}, {
"matchType" : "ORDINARY",
"columnType" : "int unsigned",
"javaType" : "java.lang.String"
}, {
"matchType" : "ORDINARY",
"columnType" : "varbinary(64)",
"javaType" : "java.lang.String"
} ]
}
},
"template" : {
"MybatisPlus-Mixed" : {
"name" : "MybatisPlus-Mixed",
"elementList" : [ {
"name" : "controller.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Controller\")\n\n##保存文件(宏定义)\n#save(\"/controller\", \"Controller.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"controller\")\n\n##定义服务名\n#set($serviceName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), \"Service\"))\n\n##定义实体对象名\n#set($entityName = $!tool.firstLowerCase($!tableInfo.name))\n\nimport com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;\nimport com.baomidou.mybatisplus.extension.api.ApiController;\nimport com.baomidou.mybatisplus.extension.api.R;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.annotation.Resource;\nimport java.io.Serializable;\nimport java.util.List;\n\n##表注释(宏定义)\n#tableComment(\"表控制层\")\n@RestController\n@RequestMapping(\"$!tool.firstLowerCase($!tableInfo.name)\")\npublic class $!{tableName} extends ApiController {\n /**\n * 服务对象\n */\n @Resource\n private $!{tableInfo.name}Service $!{serviceName};\n\n /**\n * 分页查询所有数据\n *\n * @param page 分页对象\n * @param $!entityName 查询实体\n * @return 所有数据\n */\n @GetMapping\n public R selectAll(Page<$!tableInfo.name> page, $!tableInfo.name $!entityName) {\n return success(this.$!{serviceName}.page(page, new QueryWrapper<>($!entityName)));\n }\n\n /**\n * 通过主键查询单条数据\n *\n * @param id 主键\n * @return 单条数据\n */\n @GetMapping(\"{id}\")\n public R selectOne(@PathVariable Serializable id) {\n return success(this.$!{serviceName}.getById(id));\n }\n\n /**\n * 新增数据\n *\n * @param $!entityName 实体对象\n * @return 新增结果\n */\n @PostMapping\n public R insert(@RequestBody $!tableInfo.name $!entityName) {\n return success(this.$!{serviceName}.save($!entityName));\n }\n\n /**\n * 修改数据\n *\n * @param $!entityName 实体对象\n * @return 修改结果\n */\n @PutMapping\n public R update(@RequestBody $!tableInfo.name $!entityName) {\n return success(this.$!{serviceName}.updateById($!entityName));\n }\n\n /**\n * 删除数据\n *\n * @param idList 主键结合\n * @return 删除结果\n */\n @DeleteMapping\n public R delete(@RequestParam(\"idList\") List<Long> idList) {\n return success(this.$!{serviceName}.removeByIds(idList));\n }\n}\n"
}, {
"name" : "dao.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Dao\")\n\n##保存文件(宏定义)\n#save(\"/dao\", \"Dao.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"dao\")\n\nimport java.util.List;\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport org.apache.ibatis.annotations.Param;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n\n##表注释(宏定义)\n#tableComment(\"表数据库访问层\")\npublic interface $!{tableName} extends BaseMapper<$!tableInfo.name> {\n\n/**\n* 批量新增数据(MyBatis原生foreach方法)\n*\n* @param entities List<$!{tableInfo.name}> 实例对象列表\n* @return 影响行数\n*/\nint insertBatch(@Param(\"entities\") List<$!{tableInfo.name}> entities);\n\n/**\n* 批量新增或按主键更新数据(MyBatis原生foreach方法)\n*\n* @param entities List<$!{tableInfo.name}> 实例对象列表\n* @return 影响行数\n* @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参\n*/\nint insertOrUpdateBatch(@Param(\"entities\") List<$!{tableInfo.name}> entities);\n\n}\n"
}, {
"name" : "entity.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/entity\", \".java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"entity\")\n\n##自动导入包(全局变量)\n$!autoImport\nimport com.baomidou.mybatisplus.extension.activerecord.Model;\nimport java.io.Serializable;\n\n##表注释(宏定义)\n#tableComment(\"表实体类\")\n@SuppressWarnings(\"serial\")\npublic class $!{tableInfo.name} extends Model<$!{tableInfo.name}> {\n#foreach($column in $tableInfo.fullColumn)\n #if(${column.comment})//${column.comment}#end\n\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n\n#foreach($column in $tableInfo.fullColumn)\n#getSetMethod($column)\n#end\n\n#foreach($column in $tableInfo.pkColumn)\n /**\n * 获取主键值\n *\n * @return 主键值\n */\n @Override\n protected Serializable pkVal() {\n return this.$!column.name;\n }\n #break\n#end\n}\n"
}, {
"name" : "mapper.xml.vm",
"code" : "##引入mybatis支持\n$!{mybatisSupport.vm}\n\n##设置保存名称与保存位置\n$!callback.setFileName($tool.append($!{tableInfo.name}, \"Dao.xml\"))\n$!callback.setSavePath($tool.append($modulePath, \"/src/main/resources/mapper\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"$!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao\">\n\n <resultMap type=\"$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}\" id=\"$!{tableInfo.name}Map\">\n#foreach($column in $tableInfo.fullColumn)\n <result property=\"$!column.name\" column=\"$!column.obj.name\" jdbcType=\"$!column.ext.jdbcType\"/>\n#end\n </resultMap>\n\n <!-- 批量插入 -->\n <insert id=\"insertBatch\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n values\n <foreach collection=\"entities\" item=\"entity\" separator=\",\">\n (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)\n </foreach>\n </insert>\n <!-- 批量插入或按主键更新 -->\n <insert id=\"insertOrUpdateBatch\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n values\n <foreach collection=\"entities\" item=\"entity\" separator=\",\">\n (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)\n </foreach>\n on duplicate key update\n #foreach($column in $tableInfo.otherColumn)$!column.obj.name = values($!column.obj.name) #if($velocityHasNext), #end#end\n </insert>\n\n</mapper>\n"
}, {
"name" : "service.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Service\")\n\n##保存文件(宏定义)\n#save(\"/service\", \"Service.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service\")\n\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n\n##表注释(宏定义)\n#tableComment(\"表服务接口\")\npublic interface $!{tableName} extends IService<$!tableInfo.name> {\n\n}\n"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"ServiceImpl\")\n\n##保存文件(宏定义)\n#save(\"/service/impl\", \"ServiceImpl.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service.impl\")\n\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.stereotype.Service;\n\n##表注释(宏定义)\n#tableComment(\"表服务实现类\")\n@Service(\"$!tool.firstLowerCase($tableInfo.name)Service\")\npublic class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Dao, $!{tableInfo.name}> implements $!{tableInfo.name}Service {\n\n}\n"
} ]
},
"MybatisPlus" : {
"name" : "MybatisPlus",
"elementList" : [ {
"name" : "controller.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Controller\")\n##保存文件(宏定义)\n#save(\"/controller\", \"Controller.java\")\n##包路径(宏定义)\n#setPackageSuffix(\"controller\")\n##定义服务名\n#set($serviceName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), \"Service\"))\n\n##定义实体对象名\n#set($entityName = $!tool.firstLowerCase($!tableInfo.name))\n$!{R.vm}\n$!{baseController.vm}\nimport $!{tableInfo.savePackageName}.domain.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.domain.dto.$!{tableInfo.name}DTO;\n##import com.bosker.system.api.domain.$!tableInfo.name;\n##import com.bosker.system.api.domain.dto.$!{tableInfo.name}DTO;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.web.bind.annotation.*;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport io.swagger.v3.oas.annotations.Operation;\nimport com.bosker.common.log.enums.BusinessType;\nimport com.bosker.common.core.domain.R;\nimport com.bosker.common.log.annotation.Log;\nimport java.io.Serializable;\nimport java.util.List;\nimport io.swagger.v3.oas.annotations.tags.Tag;\n## import com.bosker.common.core.web.controller.BaseController;\n\n##表注释(宏定义)\n\n#tableComment(\"表控制层\")\n\n@Tag(name = \"$!{tableInfo.comment}的API\")\n@RestController\n@RequestMapping(\"/$!tool.firstLowerCase($!tableInfo.name)\")\n## @RequestMapping(\"$!tool.firstLowerCase($!tableInfo.name).substring(0, 5)\")\npublic class $!{tableName} extends BaseController {\n \n /**\n * 服务对象\n */\n @Autowired\n private $!{tableInfo.name}Service $!{serviceName};\n\n\n /**\n * $!{tableInfo.comment} 分页查询 列表数据\n *\n * @param $!{entityName}DTO 查询实体\n * @return 分页数据\n */\n // @RequiresPermissions(\":$!tool.firstLowerCase($!tableInfo.name):page\")\n\t@Operation(\n summary = \"$!{tableInfo.comment} 分页查询\",\n description = \"$!{tableInfo.comment} 分页查询\"\n )\n @GetMapping(\"/selectPage\")\n\tpublic R selectPage($!{tableInfo.name}DTO $!{entityName}DTO) {\n return R.ok($!{serviceName}.selectIPage($!{entityName}DTO));\n }\n\t\n\n /**\n * $!{tableInfo.comment} 通过主键查询单条数据\n *\n * @param id 主键\n * @return 单条数据\n */\n\t@Operation(\n summary = \"$!{tableInfo.comment} 通过主键查询单条数据\",\n description = \"$!{tableInfo.comment} 通过主键查询单条数据\"\n )\n @GetMapping(\"/selectOne\")\n public R selectOne(@RequestParam(\"id\") Serializable id) {\n return R.ok($!{serviceName}.getById(id));\n }\n\n\n /**\n * $!{tableInfo.comment} 新增\n *\n * @param $!entityName 实体对象\n * @return 新增结果\n */\n\t// @RequiresPermissions(\":$!tool.firstLowerCase($!tableInfo.name):add\")\n\t@Operation(\n summary = \"新增$!{tableInfo.comment}\",\n description = \"新增$!{tableInfo.comment}\"\n )\n\t@Log(title = \"新增$!{tableInfo.comment}\", businessType = BusinessType.INSERT)\n @PostMapping(\"/add\")\n public R add(@RequestBody $!tableInfo.name $!entityName) {\n return R.ok($!{serviceName}.add($!entityName));\n }\n\t\n\n /**\n * $!{tableInfo.comment} 修改\n *\n * @param $!entityName 实体对象\n * @return 修改结果\n */\n\t// RequiresPermissions(\":$!tool.firstLowerCase($!tableInfo.name):update\")\n\t\n\t@Operation(\n summary = \"修改$!{tableInfo.comment}\",\n description = \"修改$!{tableInfo.comment}\"\n )\n\t@Log(title = \"修改$!{tableInfo.comment}\", businessType = BusinessType.UPDATE)\n @PostMapping(\"/update\")\n public R update(@RequestBody $!tableInfo.name $!entityName) {\n return R.ok($!{serviceName}.update($!entityName));\n }\n\t\n\n /**\n * $!{tableInfo.comment} 批量删除数据\n *\n * @param idList 主键结合\n * @return 删除结果\n */\n\t// @RequiresPermissions(\":$!tool.firstLowerCase($!tableInfo.name):delete\")\n @Operation(\n summary = \"删除$!{tableInfo.comment}\",\n description = \"删除$!{tableInfo.comment}\"\n )\n\t@Log(title = \"删除$!{tableInfo.comment}\", businessType = BusinessType.DELETE)\n @PostMapping(\"/delete\")\n public R delete(@RequestParam(\"idList\") List<Long> idList) {\n return R.ok($!{serviceName}.deleteByIds(idList));\n }\n\t\n}\n"
}, {
"name" : "dao.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)(拼接的后缀Mapper)\n#setTableSuffix(\"Mapper\")\n\n##保存文件(宏定义)(...Mapper.java)\n#save(\"/mapper\", \"Mapper.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"mapper\")\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport $!{tableInfo.savePackageName}.domain.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.domain.dto.$!{tableInfo.name}DTO;\n\n##表注释(宏定义)\n#tableComment(\"表数据库访问层\")\npublic interface $!{tableName} extends BaseMapper<$!tableInfo.name> {\n\n}\n"
}, {
"name" : "entity.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n##保存文件(宏定义)(文件后缀)\n#save(\"/domain\", \".java\") \n#set($temp = $tool.newHashSet(\"id\", \"createBy\", \"updateBy\", \"createTime\", \"updateTime\", \"delFlag\"))\n#foreach($item in $temp)\n #set($newList = $tool.newArrayList())\n #foreach($column in $tableInfo.fullColumn)\n #if($column.name!=$item)\n $tool.call($newList.add($column))\n #end\n #end\n $tableInfo.setFullColumn($newList)\n#end\n \n#setPackageSuffix(\"domain\")\n##自动导入包(全局变量)\n$!{baseEntity.vm}\n$!{autoImport.vm}\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.baomidou.mybatisplus.annotation.TableId;\nimport io.swagger.v3.oas.annotations.Hidden;\nimport com.baomidou.mybatisplus.annotation.TableName;\nimport com.baomidou.mybatisplus.annotation.TableLogic;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport java.io.Serializable;\nimport java.io.Serial;\nimport lombok.Data;\nimport lombok.AllArgsConstructor;\nimport lombok.NoArgsConstructor;\n \n##表注释(宏定义)\n#tableComment(\"表实体类\")\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\n@TableName(\"$!{tableInfo.obj.name}\")\npublic class $!{tableInfo.name} extends BaseEntity implements Serializable {\n\n @Serial\n private static final long serialVersionUID = $!tool.serial();\n \n /**\n * 主键id\n */\n @Schema(name = \"id\", description = \"主键id\")\n @TableId(type = IdType.ASSIGN_ID)\n private Long id;\n\n#foreach($column in $tableInfo.fullColumn)\n \n #if(${column.comment}) /**\n * ${column.comment}\n */#end\n \n @Schema(name = \"$!{column.name}\",description = \"${column.comment}\")\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n\n // 是否删除,0否,1是\n @Hidden\n @TableLogic\n private String delFlag;\n}"
}, {
"name" : "service.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Service\")\n\n##保存文件(宏定义)\n#save(\"/service\", \"Service.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service\")\n\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport $!{tableInfo.savePackageName}.domain.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.domain.dto.$!{tableInfo.name}DTO;\nimport $!{tableInfo.savePackageName}.domain.vo.$!{tableInfo.name}VO;\n#set($entityName = $!tool.firstLowerCase($!tableInfo.name))\nimport java.util.List;\n\n##表注释(宏定义)\n#tableComment(\"表服务接口\")\npublic interface $!{tableName} extends IService<$!tableInfo.name> {\n\n\n\t/**\n * $!{tableInfo.comment} 分页查询\n *\n * @param $!{entityName}DTO 查询DTO\n * @return 分页数据\n */\n public Page<$!{tableInfo.name}VO> selectIPage($!{tableInfo.name}DTO $!{entityName}DTO);\n\t\n\n\t/**\n * $!{tableInfo.comment} 新增数据\n *\n * @param $!entityName 查询实体\n * @return 新增结果\n */\n\tint add($!tableInfo.name $!entityName);\n\t\n\t\n\t/**\n * $!{tableInfo.comment} 修改数据\n *\n * @param $!entityName 查询实体\n * @return 修改结果\n */\n\tint update($!tableInfo.name $!entityName);\n\t\n\t\n /**\n * $!{tableInfo.comment} 批量删除数据\n *\n * @param idList 主键结合\n * @return 删除结果\n */\n\tint deleteByIds(List<Long> idList);\n\t\n\t\n}\n"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"ServiceImpl\")\n\n##保存文件(宏定义)(文件后缀例如:...ServiceImpl.java)\n#save(\"/service/impl\", \"ServiceImpl.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service.impl\")\n\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport $!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper;\nimport $!{tableInfo.savePackageName}.domain.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.domain.dto.$!{tableInfo.name}DTO;\nimport $!{tableInfo.savePackageName}.domain.vo.$!{tableInfo.name}VO;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.stereotype.Service;\nimport org.springframework.transaction.annotation.Transactional;\nimport com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.BeanUtils;\nimport lombok.extern.slf4j.Slf4j;\n#set($entityName = $!tool.firstLowerCase($!tableInfo.name))\n#set($mapperName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), \"Mapper\"))\nimport java.util.List;\n\n##表注释(宏定义)\n#tableComment(\"表服务实现类\")\n@Slf4j\n@Service(\"$!tool.firstLowerCase($tableInfo.name)Service\")\npublic class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Mapper, $!{tableInfo.name}> implements $!{tableInfo.name}Service {\n\n @Autowired\n $!{tableInfo.name}Mapper $!{mapperName};\n\n\n\t/**\n * $!{tableInfo.comment} 分页查询\n *\n * @param $!{entityName}DTO 查询DTO\n * @return 分页数据\n */\n @Override\n public Page<$!{tableInfo.name}VO> selectIPage($!{tableInfo.name}DTO $!{entityName}DTO){\n Page<$!tableInfo.name> page = new Page<>($!{entityName}DTO.getPageNum(),$!{entityName}DTO.getPageSize());\n LambdaQueryWrapper<$!tableInfo.name> queryWrapper = new LambdaQueryWrapper<>();\n Page<$!tableInfo.name> entityPage = $!{mapperName}.selectPage(page, queryWrapper);\n List<$!{tableInfo.name}VO> list = entityPage.getRecords().stream()\n .map(entity -> {\n $!{tableInfo.name}VO vo = new $!{tableInfo.name}VO();\n BeanUtils.copyProperties(entity, vo);\n return vo;\n }).collect(Collectors.toList()); \n Page<$!{tableInfo.name}VO> voPage = new Page<>();\n voPage.setRecords(list);\n voPage.setTotal(entityPage.getTotal());\n voPage.setCurrent(entityPage.getCurrent());\n voPage.setSize(entityPage.getSize());\n return voPage;\n }\n\t\n\t ## @Override\n ## public Page<$!tableInfo.name> selectIPage($!{tableInfo.name}DTO $!{entityName}DTO){\n ## Page<$!tableInfo.name> page = new Page<>($!{entityName}DTO.getPageNum(),$!{entityName}DTO.getPageSize());\n ## LambdaQueryWrapper<$!tableInfo.name> queryWrapper = new LambdaQueryWrapper<>();\n ## return $!{mapperName}.selectPage(page, queryWrapper);\n ## }\n\n\t/**\n * $!{tableInfo.comment} 新增数据\n *\n * @param $!entityName 查询实体\n * @return 新增结果\n */\n @Override\n\tpublic int add($!tableInfo.name $!entityName){\n int addCount = $!{mapperName}.insert($!entityName);\n return addCount;\n }\n\t\n\n\t/**\n * $!{tableInfo.comment} 修改数据\n *\n * @param $!entityName 查询实体\n * @return 修改结果\n */\n @Override\n\t@Transactional\n\tpublic int update($!tableInfo.name $!entityName){\n\t\tint updateCount = $!{mapperName}.updateById($!entityName);\n return updateCount;\n }\n\t\n\t\n /**\n * $!{tableInfo.comment} 批量删除数据\n *\n * @param idList 主键结合\n * @return 删除结果\n */\n @Override\n\tpublic int deleteByIds(List<Long> idList){\n return $!{mapperName}.deleteBatchIds(idList);\n }\n\t\n}\n"
}, {
"name" : "mapper.xml.vm",
"code" : "##引入mybatis支持\n$!{mybatisSupport.vm}\n \n##设置保存名称与保存位置\n$!callback.setFileName($tool.append($!{tableInfo.name}, \"Mapper.xml\"))\n$!callback.setSavePath($tool.append($modulePath, \"/src/main/resources/mapper/system\"))\n \n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n \n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"$!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper\">\n\n\n \n <resultMap type=\"$!{tableInfo.savePackageName}.domain.$!{tableInfo.name}\" id=\"$!{tableInfo.name}Map\">\n\t\n#foreach($column in $tableInfo.fullColumn)\n <result property=\"$!column.name\" column=\"$!column.obj.name\"/>\n#end\n </resultMap>\n \n</mapper>\n\n\n"
}, {
"name" : "dto.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n##保存文件(宏定义)(文件后缀)\n#save(\"/domain/dto\", \"DTO.java\") \n#set($temp = $tool.newHashSet(\"id\",\"createBy\", \"updateBy\", \"createTime\", \"updateTime\", \"delFlag\"))\n#foreach($item in $temp)\n #set($newList = $tool.newArrayList())\n #foreach($column in $tableInfo.fullColumn)\n #if($column.name!=$item)\n $tool.call($newList.add($column))\n #end\n #end\n $tableInfo.setFullColumn($newList)\n#end\n \n#setPackageSuffix(\"domain.dto\")\n##自动导入包(全局变量)\n## $!{baseEntity.vm}\n\n$!{autoImport.vm}\nimport com.bosker.common.core.web.domain.PageEntity;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport java.io.Serial;\nimport lombok.Data;\n\n##表注释(宏定义)\n#tableComment(\"DTO入参对象\")\n@Data\npublic class $!{tableInfo.name}DTO extends PageEntity{\n\n @Serial\n private static final long serialVersionUID = $!tool.serial();\n \n /**\n * 主键id\n */\n @Schema(name = \"id\", description = \"主键id\")\n private Long id;\n \n#foreach($column in $tableInfo.fullColumn)\n \n #if(${column.comment}) /**\n * ${column.comment}\n */#end\n\n @Schema(name = \"$!{column.name}\",description = \"${column.comment}\")\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n\n}"
}, {
"name" : "vo.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n##保存文件(宏定义)(文件后缀)\n#save(\"/domain/vo\", \"VO.java\") \n#set($temp = $tool.newHashSet(\"id\", \"createBy\", \"updateBy\", \"createTime\", \"updateTime\", \"delFlag\"))\n#foreach($item in $temp)\n #set($newList = $tool.newArrayList())\n #foreach($column in $tableInfo.fullColumn)\n #if($column.name!=$item)\n $tool.call($newList.add($column))\n #end\n #end\n $tableInfo.setFullColumn($newList)\n#end\n \n#setPackageSuffix(\"domain.vo\")\n##自动导入包(全局变量)\n## $!{baseEntity.vm}\n\n$!{autoImport.vm}\nimport java.io.Serializable;\nimport java.io.Serial;\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Data;\n\n\n##表注释(宏定义)\n#tableComment(\"VO返回对象\")\n@Data\npublic class $!{tableInfo.name}VO implements Serializable {\n\n @Serial\n private static final long serialVersionUID = $!tool.serial();\n \n /**\n * 主键id\n */\n @Schema(name = \"id\", description = \"主键id\")\n private Long id;\n \n#foreach($column in $tableInfo.fullColumn)\n \n #if(${column.comment}) /**\n * ${column.comment}\n */#end\n\n @Schema(name = \"$!{column.name}\",description = \"${column.comment}\")\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n\n}"
} ]
},
"spring-data-mongodb" : {
"name" : "spring-data-mongodb",
"elementList" : [ {
"name" : "controller.java.vm",
"code" : "##导入宏定义、设置包名、类名、文件名##导入宏定义\n$!{define.vm}\n#setPackageSuffix(\"controller\")\n#setTableSuffix(\"Controller\")\n#save(\"/controller\", \"Controller.java\")\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n##定义服务名\n#set($serviceSortType = $!tool.append($!tableInfo.name, \"Service\"))\n#set($serviceType = $!tool.append($!tableInfo.savePackageName, \".service.\", $serviceSortType))\n#set($serviceVarName = $!tool.firstLowerCase($serviceSortType))\n\n#set($entityShortType = $!tableInfo.name)\n#set($entityType = $!tableInfo.psiClassObj.getQualifiedName())\n#set($entityVarName = $!tool.firstLowerCase($!tableInfo.name))\n#set($pkType = $!pk.type)\n\nimport $pkType;\nimport $entityType;\nimport $serviceType;\nimport lombok.AllArgsConstructor;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n\n/**\n * $!{tableInfo.comment}控制层\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@RestController\n@RequestMapping(\"/$!tool.firstLowerCase($!tableInfo.name)\")\n@AllArgsConstructor\npublic class $!{tableName} {\n\n\tprivate $serviceSortType $serviceVarName;\n\n\t/**\n\t * 获取$!{tableInfo.comment}列表(分页)\n\t */\n\t@GetMapping(\"/list\")\n\tpublic Page<$entityShortType> list(Pageable page) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * 获取$!{tableInfo.comment}\n\t */\n\t@GetMapping(\"/get\")\n\tpublic $entityShortType get($!pk.shortType id) {\n\t\treturn ${serviceVarName}.findById(id);\n\t}\n\n\t/**\n\t * 添加$!{tableInfo.comment}\n\t */\n\t@PostMapping(\"/add\")\n\tpublic void add(@RequestBody $entityShortType $entityVarName) {\n\t\t${serviceVarName}.save($entityVarName);\n\t}\n\n\n\t/**\n\t * 修改$!{tableInfo.comment}\n\t */\n\t@PostMapping(\"/update\")\n\tpublic void update(@RequestBody $entityShortType $entityVarName) {\n\t\t${serviceVarName}.save($entityVarName);\n\t}\n\n\t/**\n\t * 删除$!{tableInfo.comment}\n\t */\n\t@PostMapping(\"/delete\")\n\tpublic void delete($!pk.shortType id) {\n\t\t${serviceVarName}.deleteById(id);\n\t}\n\n}\n"
}, {
"name" : "entity.java.vm",
"code" : "##引入宏定义\n$!{define.vm}\n\n##使用宏定义设置回调(保存位置与文件后缀)\n#save(\"/entity\", \".java\")\n\n##使用宏定义设置包后缀\n#setPackageSuffix(\"entity\")\n\n##使用全局变量实现默认包导入\n$!{autoImport.vm}\nimport java.io.Serializable;\n\n##使用宏定义实现类注释信息\n#tableComment(\"实体类\")\npublic class $!{tableInfo.name} implements Serializable {\n private static final long serialVersionUID = $!tool.serial();\n#foreach($column in $tableInfo.fullColumn)\n #if(${column.comment})/**\n * ${column.comment}\n */#end\n\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n\n#foreach($column in $tableInfo.fullColumn)\n##使用宏定义实现get,set方法\n#getSetMethod($column)\n#end\n\n}\n"
}, {
"name" : "repository.java.vm",
"code" : "##导入宏定义、设置包名、类名、文件名##导入宏定义\n$!{define.vm}\n#setPackageSuffix(\"repository\")\n#setTableSuffix(\"Repository\")\n#save(\"/repository\", \"Repository.java\")\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n##实体类名、主键类名\n#set($entityShortType = $!tableInfo.name)\n#set($entityType = $!tableInfo.psiClassObj.getQualifiedName())\n#set($pkShortType = $!pk.shortType)\n#set($pkType = $!pk.type)\n\nimport $pkType;\nimport $entityType;\nimport org.springframework.data.mongodb.repository.MongoRepository;\n\n\n/**\n * $!{tableInfo.comment}持久层\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} extends MongoRepository<$entityShortType, $pkShortType> {\n\n}\n"
}, {
"name" : "service.java.vm",
"code" : "##导入宏定义、设置包名、类名、文件名##导入宏定义\n$!{define.vm}\n#setPackageSuffix(\"service\")\n#setTableSuffix(\"Service\")\n#save(\"/service\", \"Service.java\")\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n##实体类名、主键类名\n#set($entityShortType = $!tableInfo.name)\n#set($entityType = $!tableInfo.psiClassObj.getQualifiedName())\n#set($entityVarName = $!tool.firstLowerCase($!tableInfo.name))\n#set($pkShortType = $!pk.shortType)\n#set($pkType = $!pk.type)\n\nimport $pkType;\nimport $entityType;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport java.util.Collection;\nimport java.util.List;\n\n\n/**\n * $!{tableInfo.comment}业务层\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} {\n\n void save($entityShortType $entityVarName);\n\n void deleteById($pkShortType id);\n\n $entityShortType findById($pkShortType id);\n\n List<$entityShortType> findById(Collection<$pkShortType> ids);\n\n Page<$entityShortType> list(Pageable page);\n\n}\n"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##导入宏定义、设置包名、类名、文件名\n$!{define.vm}\n#setPackageSuffix(\"service.impl\")\n#setTableSuffix(\"ServiceImpl\")\n#save(\"/service/impl\", \"ServiceImpl.java\")\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n##业务层类名、持久层类名、实体名\n#set($serviceSortType = $!tool.append($!tableInfo.name, \"Service\"))\n#set($serviceType = $!tool.append($!tableInfo.savePackageName, \".service.\", $serviceSortType))\n#set($repositorySortType = $!tool.append($!tableInfo.name, \"Repository\"))\n#set($repositoryType = $!tool.append($!tableInfo.savePackageName, \".repository.\", $repositorySortType))\n#set($repositoryVarName = $!tool.firstLowerCase($!repositorySortType))\n#set($entityShortType = $!tableInfo.name)\n#set($entityType = $!tableInfo.psiClassObj.getQualifiedName())\n#set($entityVarName = $!tool.firstLowerCase($!tableInfo.name))\n#set($pkShortType = $!pk.shortType)\n#set($pkType = $!pk.type)\n\nimport $pkType;\nimport $entityType;\nimport $serviceType;\nimport $repositoryType;\nimport org.springframework.stereotype.Service;\nimport javax.annotation.Resource;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.stream.Collectors;\nimport java.util.stream.StreamSupport;\n\n\n/**\n * $!{tableInfo.comment}业务层\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@Service\npublic class $!{tableName} implements $!serviceSortType {\n\n\t@Resource\n private $repositorySortType $repositoryVarName;\n\n @Override\n public void save($entityShortType $entityVarName) {\n $!{repositoryVarName}.save($entityVarName);\n }\n\n @Override\n public void deleteById($pkShortType id) {\n $!{repositoryVarName}.delete(id);\n }\n\n @Override\n public $entityShortType findById($pkShortType id) {\n return $!{repositoryVarName}.findOne(id);\n }\n\n @Override\n public List<$entityShortType> findById(Collection<$pkShortType> ids) {\n Iterable<$entityShortType> iterable = $!{repositoryVarName}.findAll(ids);\n return StreamSupport.stream(iterable.spliterator(), false)\n .collect(Collectors.toList());\n }\n\n @Override\n public Page<$entityShortType> list(Pageable page) {\n return $!{repositoryVarName}.findAll(page);\n }\n\n}\n"
} ]
},
"Default" : {
"name" : "Default",
"elementList" : [ {
"name" : "controller.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Controller\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/controller\"))\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}controller;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.PageRequest;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.annotation.Resource;\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表控制层\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@RestController\n@RequestMapping(\"$!tool.firstLowerCase($tableInfo.name)\")\npublic class $!{tableName} {\n /**\n * 服务对象\n */\n @Resource\n private $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;\n\n /**\n * 分页查询\n *\n * @param $!{tool.firstLowerCase($tableInfo.name)} 筛选条件\n * @param pageRequest 分页对象\n * @return 查询结果\n */\n @GetMapping\n public ResponseEntity<Page<$!{tableInfo.name}>> queryByPage($!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}, PageRequest pageRequest) {\n return ResponseEntity.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.queryByPage($!{tool.firstLowerCase($tableInfo.name)}, pageRequest));\n }\n\n /**\n * 通过主键查询单条数据\n *\n * @param id 主键\n * @return 单条数据\n */\n @GetMapping(\"{id}\")\n public ResponseEntity<$!{tableInfo.name}> queryById(@PathVariable(\"id\") $!pk.shortType id) {\n return ResponseEntity.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.queryById(id));\n }\n\n /**\n * 新增数据\n *\n * @param $!{tool.firstLowerCase($tableInfo.name)} 实体\n * @return 新增结果\n */\n @PostMapping\n public ResponseEntity<$!{tableInfo.name}> add($!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}) {\n return ResponseEntity.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.insert($!{tool.firstLowerCase($tableInfo.name)}));\n }\n\n /**\n * 编辑数据\n *\n * @param $!{tool.firstLowerCase($tableInfo.name)} 实体\n * @return 编辑结果\n */\n @PutMapping\n public ResponseEntity<$!{tableInfo.name}> edit($!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}) {\n return ResponseEntity.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.update($!{tool.firstLowerCase($tableInfo.name)}));\n }\n\n /**\n * 删除数据\n *\n * @param id 主键\n * @return 删除是否成功\n */\n @DeleteMapping\n public ResponseEntity<Boolean> deleteById($!pk.shortType id) {\n return ResponseEntity.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.deleteById(id));\n }\n\n}\n"
}, {
"name" : "dao.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Dao\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/dao\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}dao;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport org.apache.ibatis.annotations.Param;\nimport org.springframework.data.domain.Pageable;\nimport java.util.List;\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} {\n\n /**\n * 通过ID查询单条数据\n *\n * @param $!pk.name 主键\n * @return 实例对象\n */\n $!{tableInfo.name} queryById($!pk.shortType $!pk.name);\n\n /**\n * 查询指定行数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 查询条件\n * @param pageable 分页对象\n * @return 对象列表\n */\n List<$!{tableInfo.name}> queryAllByLimit($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}), @Param(\"pageable\") Pageable pageable);\n\n /**\n * 统计总行数\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 查询条件\n * @return 总行数\n */\n long count($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));\n\n /**\n * 新增数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n * @return 影响行数\n */\n int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));\n\n /**\n * 批量新增数据(MyBatis原生foreach方法)\n *\n * @param entities List<$!{tableInfo.name}> 实例对象列表\n * @return 影响行数\n */\n int insertBatch(@Param(\"entities\") List<$!{tableInfo.name}> entities);\n\n /**\n * 批量新增或按主键更新数据(MyBatis原生foreach方法)\n *\n * @param entities List<$!{tableInfo.name}> 实例对象列表\n * @return 影响行数\n * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参\n */\n int insertOrUpdateBatch(@Param(\"entities\") List<$!{tableInfo.name}> entities);\n\n /**\n * 修改数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n * @return 影响行数\n */\n int update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));\n\n /**\n * 通过主键删除数据\n *\n * @param $!pk.name 主键\n * @return 影响行数\n */\n int deleteById($!pk.shortType $!pk.name);\n\n}\n"
}, {
"name" : "debug.json.vm",
"code" : "// 禁止将生成结果写入到文件\n$!callback.setWriteFile(false)\n\n//调试表原始对象\n$!tool.debug($tableInfo.obj)\n\n//调试列原始对象\n$!tool.debug($tableInfo.fullColumn.get(0).obj)\n\n//调试列原始列类型\n$!tool.debug($tableInfo.fullColumn.get(0).obj.dataType)\n\n//获取原始列类型中的字段\nsqlType = $!tool.getField($tableInfo.fullColumn.get(0).obj.dataType, \"typeName\")\n\n//执行原始列类型中的方法\nsqlTypeLen = $!tableInfo.fullColumn.get(0).obj.dataType.getLength()\n"
}, {
"name" : "entity.java.vm",
"code" : "##引入宏定义\n$!{define.vm}\n\n##使用宏定义设置回调(保存位置与文件后缀)\n#save(\"/entity\", \".java\")\n\n##使用宏定义设置包后缀\n#setPackageSuffix(\"entity\")\n\n##使用全局变量实现默认包导入\n$!{autoImport.vm}\nimport java.io.Serializable;\n\n##使用宏定义实现类注释信息\n#tableComment(\"实体类\")\npublic class $!{tableInfo.name} implements Serializable {\n private static final long serialVersionUID = $!tool.serial();\n#foreach($column in $tableInfo.fullColumn)\n #if(${column.comment})/**\n * ${column.comment}\n */#end\n\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n\n#foreach($column in $tableInfo.fullColumn)\n##使用宏定义实现get,set方法\n#getSetMethod($column)\n#end\n\n}\n"
}, {
"name" : "mapper.xml.vm",
"code" : "##引入mybatis支持\n$!{mybatisSupport.vm}\n\n##设置保存名称与保存位置\n$!callback.setFileName($tool.append($!{tableInfo.name}, \"Dao.xml\"))\n$!callback.setSavePath($tool.append($modulePath, \"/src/main/resources/mapper\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"$!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao\">\n\n <resultMap type=\"$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}\" id=\"$!{tableInfo.name}Map\">\n#foreach($column in $tableInfo.fullColumn)\n <result property=\"$!column.name\" column=\"$!column.obj.name\" jdbcType=\"$!column.ext.jdbcType\"/>\n#end\n </resultMap>\n\n <!--查询单个-->\n <select id=\"queryById\" resultMap=\"$!{tableInfo.name}Map\">\n select\n #allSqlColumn()\n\n from $!tableInfo.obj.name\n where $!pk.obj.name = #{$!pk.name}\n </select>\n\n <!--查询指定行数据-->\n <select id=\"queryAllByLimit\" resultMap=\"$!{tableInfo.name}Map\">\n select\n #allSqlColumn()\n\n from $!tableInfo.obj.name\n <where>\n#foreach($column in $tableInfo.fullColumn)\n <if test=\"$!column.name != null#if($column.type.equals(\"java.lang.String\")) and $!column.name != ''#end\">\n and $!column.obj.name = #{$!column.name}\n </if>\n#end\n </where>\n limit #{pageable.offset}, #{pageable.pageSize}\n </select>\n\n <!--统计总行数-->\n <select id=\"count\" resultType=\"java.lang.Long\">\n select count(1)\n from $!tableInfo.obj.name\n <where>\n#foreach($column in $tableInfo.fullColumn)\n <if test=\"$!column.name != null#if($column.type.equals(\"java.lang.String\")) and $!column.name != ''#end\">\n and $!column.obj.name = #{$!column.name}\n </if>\n#end\n </where>\n </select>\n\n <!--新增所有列-->\n <insert id=\"insert\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n values (#foreach($column in $tableInfo.otherColumn)#{$!{column.name}}#if($velocityHasNext), #end#end)\n </insert>\n\n <insert id=\"insertBatch\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n values\n <foreach collection=\"entities\" item=\"entity\" separator=\",\">\n (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)\n </foreach>\n </insert>\n\n <insert id=\"insertOrUpdateBatch\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n values\n <foreach collection=\"entities\" item=\"entity\" separator=\",\">\n (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)\n </foreach>\n on duplicate key update\n #foreach($column in $tableInfo.otherColumn)$!column.obj.name = values($!column.obj.name)#if($velocityHasNext),\n #end#end\n\n </insert>\n\n <!--通过主键修改数据-->\n <update id=\"update\">\n update $!{tableInfo.obj.name}\n <set>\n#foreach($column in $tableInfo.otherColumn)\n <if test=\"$!column.name != null#if($column.type.equals(\"java.lang.String\")) and $!column.name != ''#end\">\n $!column.obj.name = #{$!column.name},\n </if>\n#end\n </set>\n where $!pk.obj.name = #{$!pk.name}\n </update>\n\n <!--通过主键删除-->\n <delete id=\"deleteById\">\n delete from $!{tableInfo.obj.name} where $!pk.obj.name = #{$!pk.name}\n </delete>\n\n</mapper>\n"
}, {
"name" : "service.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Service\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/service\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.PageRequest;\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表服务接口\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} {\n\n /**\n * 通过ID查询单条数据\n *\n * @param $!pk.name 主键\n * @return 实例对象\n */\n $!{tableInfo.name} queryById($!pk.shortType $!pk.name);\n\n /**\n * 分页查询\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 筛选条件\n * @param pageRequest 分页对象\n * @return 查询结果\n */\n Page<$!{tableInfo.name}> queryByPage($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}), PageRequest pageRequest);\n\n /**\n * 新增数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n * @return 实例对象\n */\n $!{tableInfo.name} insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));\n\n /**\n * 修改数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n * @return 实例对象\n */\n $!{tableInfo.name} update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));\n\n /**\n * 通过主键删除数据\n *\n * @param $!pk.name 主键\n * @return 是否成功\n */\n boolean deleteById($!pk.shortType $!pk.name);\n\n}"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"ServiceImpl\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/service/impl\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service.impl;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.stereotype.Service;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.PageImpl;\nimport org.springframework.data.domain.PageRequest;\n\nimport javax.annotation.Resource;\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表服务实现类\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@Service(\"$!tool.firstLowerCase($!{tableInfo.name})Service\")\npublic class $!{tableName} implements $!{tableInfo.name}Service {\n @Resource\n private $!{tableInfo.name}Dao $!tool.firstLowerCase($!{tableInfo.name})Dao;\n\n /**\n * 通过ID查询单条数据\n *\n * @param $!pk.name 主键\n * @return 实例对象\n */\n @Override\n public $!{tableInfo.name} queryById($!pk.shortType $!pk.name) {\n return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.queryById($!pk.name);\n }\n\n /**\n * 分页查询\n *\n * @param $!{tool.firstLowerCase($tableInfo.name)} 筛选条件\n * @param pageRequest 分页对象\n * @return 查询结果\n */\n @Override\n public Page<$!{tableInfo.name}> queryByPage($!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}, PageRequest pageRequest) {\n long total = this.$!{tool.firstLowerCase($tableInfo.name)}Dao.count($!{tool.firstLowerCase($tableInfo.name)});\n return new PageImpl<>(this.$!{tool.firstLowerCase($tableInfo.name)}Dao.queryAllByLimit($!{tool.firstLowerCase($tableInfo.name)}, pageRequest), pageRequest, total);\n }\n\n /**\n * 新增数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n * @return 实例对象\n */\n @Override\n public $!{tableInfo.name} insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {\n this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.insert($!tool.firstLowerCase($!{tableInfo.name}));\n return $!tool.firstLowerCase($!{tableInfo.name});\n }\n\n /**\n * 修改数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n * @return 实例对象\n */\n @Override\n public $!{tableInfo.name} update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {\n this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.update($!tool.firstLowerCase($!{tableInfo.name}));\n return this.queryById($!{tool.firstLowerCase($!{tableInfo.name})}.get$!tool.firstUpperCase($pk.name)());\n }\n\n /**\n * 通过主键删除数据\n *\n * @param $!pk.name 主键\n * @return 是否成功\n */\n @Override\n public boolean deleteById($!pk.shortType $!pk.name) {\n return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.deleteById($!pk.name) > 0;\n }\n}"
} ]
}
},
"columnConfig" : {
"Default" : {
"name" : "Default",
"elementList" : [ {
"title" : "disable",
"type" : "BOOLEAN",
"selectValue" : ""
}, {
"title" : "support",
"type" : "SELECT",
"selectValue" : "add,edit,query,del,ui"
} ]
}
},
"globalConfig" : {
"Default" : {
"name" : "Default",
"elementList" : [ {
"name" : "autoImport.vm",
"value" : "##自动导入包(仅导入实体属性需要的包,通常用于实体类)\n#foreach($import in $importList)\nimport $!import;\n#end"
}, {
"name" : "define.vm",
"value" : "##(Velocity宏定义)\n\n##定义设置表名后缀的宏定义,调用方式:#setTableSuffix(\"Test\")\n#macro(setTableSuffix $suffix)\n #set($tableName = $!tool.append($tableInfo.name, $suffix))\n#end\n\n##定义设置包名后缀的宏定义,调用方式:#setPackageSuffix(\"Test\")\n#macro(setPackageSuffix $suffix)\n#if($suffix!=\"\")package #end#if($tableInfo.savePackageName!=\"\")$!{tableInfo.savePackageName}.#{end}$!suffix;\n#end\n\n##定义直接保存路径与文件名简化的宏定义,调用方式:#save(\"/entity\", \".java\")\n#macro(save $path $fileName)\n $!callback.setSavePath($tool.append($tableInfo.savePath, $path))\n $!callback.setFileName($tool.append($tableInfo.name, $fileName))\n#end\n\n##定义表注释的宏定义,调用方式:#tableComment(\"注释信息\")\n#macro(tableComment $desc)\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})$desc\n *\n * @author $!author\n * @since $!time.currTime()\n */\n#end\n\n##定义GET,SET方法的宏定义,调用方式:#getSetMethod($column)\n#macro(getSetMethod $column)\n\n public $!{tool.getClsNameByFullName($column.type)} get$!{tool.firstUpperCase($column.name)}() {\n return $!{column.name};\n }\n\n public void set$!{tool.firstUpperCase($column.name)}($!{tool.getClsNameByFullName($column.type)} $!{column.name}) {\n this.$!{column.name} = $!{column.name};\n }\n#end"
}, {
"name" : "init.vm",
"value" : "##初始化区域\n\n##去掉表的t_前缀\n$!tableInfo.setName($tool.getClassName($tableInfo.obj.name.replaceFirst(\"book_\",\"\")))\n\n##参考阿里巴巴开发手册,POJO 类中布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误\n#foreach($column in $tableInfo.fullColumn)\n#if($column.name.startsWith(\"is\") && $column.type.equals(\"java.lang.Boolean\"))\n $!column.setName($tool.firstLowerCase($column.name.substring(2)))\n#end\n#end\n\n##实现动态排除列\n#set($temp = $tool.newHashSet(\"testCreateTime\", \"otherColumn\"))\n#foreach($item in $temp)\n #set($newList = $tool.newArrayList())\n #foreach($column in $tableInfo.fullColumn)\n #if($column.name!=$item)\n ##带有反回值的方法调用时使用$tool.call来消除返回值\n $tool.call($newList.add($column))\n #end\n #end\n ##重新保存\n $tableInfo.setFullColumn($newList)\n#end\n\n##对importList进行篡改\n#set($temp = $tool.newHashSet())\n#foreach($column in $tableInfo.fullColumn)\n #if(!$column.type.startsWith(\"java.lang.\"))\n ##带有反回值的方法调用时使用$tool.call来消除返回值\n $tool.call($temp.add($column.type))\n #end\n#end\n##覆盖\n#set($importList = $temp)"
}, {
"name" : "mybatisSupport.vm",
"value" : "##针对Mybatis 进行支持,主要用于生成xml文件\n#foreach($column in $tableInfo.fullColumn)\n ##储存列类型\n $tool.call($column.ext.put(\"sqlType\", $tool.getField($column.obj.dataType, \"typeName\")))\n #if($tool.newHashSet(\"java.lang.String\").contains($column.type))\n #set($jdbcType=\"VARCHAR\")\n #elseif($tool.newHashSet(\"java.lang.Boolean\", \"boolean\").contains($column.type))\n #set($jdbcType=\"BOOLEAN\")\n #elseif($tool.newHashSet(\"java.lang.Byte\", \"byte\").contains($column.type))\n #set($jdbcType=\"BYTE\")\n #elseif($tool.newHashSet(\"java.lang.Integer\", \"int\", \"java.lang.Short\", \"short\").contains($column.type))\n #set($jdbcType=\"INTEGER\")\n #elseif($tool.newHashSet(\"java.lang.Long\", \"long\").contains($column.type))\n #set($jdbcType=\"INTEGER\")\n #elseif($tool.newHashSet(\"java.lang.Float\", \"float\", \"java.lang.Double\", \"double\").contains($column.type))\n #set($jdbcType=\"NUMERIC\")\n #elseif($tool.newHashSet(\"java.util.Date\", \"java.sql.Timestamp\", \"java.time.Instant\", \"java.time.LocalDateTime\", \"java.time.OffsetDateTime\", \"\tjava.time.ZonedDateTime\").contains($column.type))\n #set($jdbcType=\"TIMESTAMP\")\n #elseif($tool.newHashSet(\"java.sql.Date\", \"java.time.LocalDate\").contains($column.type))\n #set($jdbcType=\"TIMESTAMP\")\n #else\n ##其他类型\n #set($jdbcType=\"VARCHAR\")\n #end\n $tool.call($column.ext.put(\"jdbcType\", $jdbcType))\n#end\n\n##定义宏,查询所有列\n#macro(allSqlColumn)#foreach($column in $tableInfo.fullColumn)$column.obj.name#if($velocityHasNext), #end#end#end\n"
}, {
"name" : "baseEntity.vm",
"value" : "import com.bosker.common.core.web.domain.BaseEntity;"
}, {
"name" : "baseController.vm",
"value" : "import com.bosker.common.core.web.controller.BaseController;"
} ]
}
}
}
开始生成

模块名

包名(路径)

存放路径

开始生成

mapper.xml 将表切割后取值每个首字母拼接来;
例如表名:platform_gather_channel 取值后是:pgc
## 设置别名:取每个单词的首字母拼接
#set($tableName = ${tableInfo.obj.name.toLowerCase()})
#set($alias = '')
#foreach($part in $tableName.split('[_\\-]'))
#if($part.length() > 0)
#set($alias = $alias + $part.substring(0,1).toLowerCase())
#end
#end
#set($alias = $alias + '_')
##引入mybatis支持
$!{mybatisSupport.vm}
##设置保存名称与保存位置
$!callback.setFileName($tool.append($!{tableInfo.name}, "Mapper.xml"))
$!callback.setSavePath($tool.append($modulePath, "/src/main/resources/mapper"))
#set($newLine ='
')
#set($currentLine ='')
## 设置别名:取每个单词的首字母拼接
#set($tableName = ${tableInfo.obj.name.toLowerCase()})
#set($alias = '')
#foreach($part in $tableName.split('[_\\-]'))
#if($part.length() > 0)
#set($alias = $alias + $part.substring(0,1).toLowerCase())
#end
#end
#set($alias = $alias)
##拿到主键
#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}.mapper.$!{tableInfo.name}Mapper">
<!-- 基础映射 -->
<resultMap type="$!{tableInfo.savePackageName}.domain.$!{tableInfo.name}" id="$!{tool.firstLowerCase($tableInfo.name)}Map">
#foreach($column in $tableInfo.fullColumn)
<result property="$!column.name" column="$!column.obj.name.toLowerCase()" javaType="$!column.type"/>
#end
</resultMap>
<!-- 分页映射 -->
<resultMap type="$!{tableInfo.savePackageName}.domain.vo.$!{tableInfo.name}ResVO" id="$!{tool.firstLowerCase($tableInfo.name)}ResMap">
#foreach($column in $tableInfo.fullColumn)
<result property="$!column.name" column="$!column.obj.name.toLowerCase()" javaType="$!column.type"/>
#end
</resultMap>
<!-- sqlColumn-->
<sql id="SQL_${tableInfo.name.toUpperCase()}_COLUMN">
#foreach($column in $tableInfo.fullColumn)
$!{alias}_.$column.obj.name.toLowerCase()#if($foreach.hasNext),#end
#end
</sql>
<!-- list -->
<select id="list" parameterType="$!{tableInfo.savePackageName}.domain.vo.${tableInfo.name}ReqVO"
resultMap="$!{tool.firstLowerCase($tableInfo.name)}ResMap">
select
<include refid="SQL_${tableInfo.name.toUpperCase()}_COLUMN"/>
from ${tableInfo.obj.name.toLowerCase()} ${alias}_
<where>
#foreach($column in $tableInfo.fullColumn)
#if($!{like} && $!column.shortType.equals("String"))<if test="null != $column.name and ${column.name}.length() != 0">$currentLine
AND ${alias}_.${column.obj.name.toLowerCase()} LIKE CONCAT('%',#{$column.name},'%')##
#elseif($!{between} && $!{tool.isDateOrTime($column)})<if test="null != ${column.name}Start">$currentLine
AND ${alias}_.${column.obj.name.toLowerCase()} >= #{${column.name}Start}
</if>
<if test="null != ${column.name}End">$currentLine
AND ${alias}_.${column.obj.name.toLowerCase()} <= #{${column.name}End}##
#elseif($!column.shortType.equals("String"))<if test="null != $column.name and ${column.name}.length() != 0">$currentLine
AND ${alias}_.${column.obj.name.toLowerCase()} = #{$column.name}##
#else<if test="null != $column.name">$currentLine
AND ${alias}_.${column.obj.name.toLowerCase()} = #{$column.name}#end##
$currentLine
</if>
#end
</where>
#foreach($column in $tableInfo.fullColumn)
#if($!column.obj.name.toLowerCase().equals("v_create_time"))order by ${alias}_.v_create_time desc#end
#end
</select>
<!-- 根据ID查询 -->
<select id="getById" resultMap="$!{tool.firstLowerCase($tableInfo.name)}Map">
select
<include refid="SQL_${tableInfo.name.toUpperCase()}_COLUMN"/>
from ${tableInfo.obj.name.toLowerCase()} ${alias}_
where ${alias}_.${pk.obj.name} = #{id}
and ${alias}_.${tableInfo.columnPreName}tenant_id = #{tenantId}
</select>
<!-- 根据ID查询详情 -->
<select id="info" resultMap="$!{tool.firstLowerCase($tableInfo.name)}ResMap">
select
<include refid="SQL_${tableInfo.name.toUpperCase()}_COLUMN"/>
from ${tableInfo.obj.name.toLowerCase()} ${alias}_
where ${alias}_.${pk.obj.name} = #{id}
and ${alias}_.${tableInfo.columnPreName}tenant_id = #{tenantId}
</select>
<!-- 新增 -->
<insert id="save" parameterType="$!{tableInfo.savePackageName}.domain.${tableInfo.name}">
insert into ${tableInfo.obj.name.toLowerCase()}
<trim prefix="(" suffix=")" suffixOverrides=",">
#foreach($column in $tableInfo.fullColumn)
<if test="null != ${column.name}">
${column.obj.name.toLowerCase()}#if($foreach.hasNext), #end
</if>
#end
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#foreach($column in $tableInfo.fullColumn)
<if test="null != ${column.name}">
#{${column.name}}#if($foreach.hasNext), #end
</if>
#end
</trim>
</insert>
<insert id="saveBatch">
insert into ${tableInfo.obj.name.toLowerCase()}(
#foreach($column in $tableInfo.fullColumn)
${column.obj.name.toLowerCase()}#if($foreach.hasNext),#else)#end
#end
values
<foreach collection="list" item="item" separator=",">
<trim prefix="(" suffix=")">
#foreach($column in $tableInfo.fullColumn)
#{item.${column.name}}#if($foreach.hasNext), #end
#end
</trim>
</foreach>
</insert>
<!-- 根据id删除 -->
#if(${pretendDelete})
<update id="deleteById">
update ${tableInfo.obj.name.toLowerCase()} set v_status = 8 where ${pk.obj.name} = #{id} and ${tableInfo.getColumnPreName()}tenant_id = #{tenantId}
</update>
#else
<delete id="deleteById">
delete from ${tableInfo.obj.name.toLowerCase()}
where ${pk.obj.name} = #{id}
and ${tableInfo.getColumnPreName()}tenant_id = #{tenantId}
</delete>
#end
<!-- update -->
<update id="update">
update ${tableInfo.obj.name.toLowerCase()}
<set>
#foreach($column in $tableInfo.fullColumn)
<if test="null != ${column.name}">
${column.obj.name.toLowerCase()} = #{${column.name}}#if($foreach.hasNext), #end
</if>
#end
</set>
where v_id = #{id}
</update>
<!-- 达梦数据库批量更新 -->
<update id="updateBatchDM">
merge into ${tableInfo.obj.name.toLowerCase()} ${alias}_
using (
<foreach collection="list" item="item" separator=" union all ">
select
#foreach($column in $tableInfo.fullColumn)
#if("createUser" != ${column.name}
&& "createDeptId" != ${column.name}
&& "createUserIp" != ${column.name}
&& "createTime" != ${column.name})
<choose>
<when test="null != item.${column.name}">
#{item.${column.name}} as ${column.name}#if($foreach.hasNext), #end
</when>
<otherwise>null as ${column.name}#if($foreach.hasNext), #end</otherwise>
</choose>
#end#end
from dual
</foreach>
) temp
on ( temp.id = ${alias}_.${pk.obj.name.toLowerCase()} )
when matched then update set
#foreach($column in $tableInfo.fullColumn)
#if("createUser" != ${column.name}
&& "createDeptId" != ${column.name}
&& "createUserIp" != ${column.name}
&& "createTime" != ${column.name}
&& "id" != ${column.name} )
${column.obj.name.toLowerCase().toLowerCase()} = temp.${column.name}#if($foreach.hasNext), #end
#end#end
</update>
<!-- 其他数据库批量更新 -->
<update id="updateBatch">
update ${tableInfo.obj.name.toLowerCase()} $!{alias}_
<set>
#foreach($column in $tableInfo.fullColumn)
#if("createUser" != ${column.name}
&& "createDeptId" != ${column.name}
&& "createUserIp" != ${column.name}
&& "createTime" != ${column.name})
${column.obj.name.toLowerCase()} = temp.${column.name}::$!{column.getObj().getDataType()}#if($foreach.hasNext), #end
#end#end
from (
values
<foreach collection="list" item="item" separator=",">
<trim prefix="(" suffix=")">
#foreach($column in $tableInfo.fullColumn)
#if("createUser" != ${column.name}
&& "createDeptId" != ${column.name}
&& "createUserIp" != ${column.name}
&& "createTime" != ${column.name})
<choose>
<when test="null != item.${column.name}">
#{item.${column.name}}#if($foreach.hasNext), #end
</when>
<otherwise>null#if($foreach.hasNext), #end</otherwise>
</choose>
#end#end
</trim>
</foreach>
) as temp (
#foreach($column in $tableInfo.fullColumn)
#if("createUser" != ${column.name}
&& "createDeptId" != ${column.name}
&& "createUserIp" != ${column.name}
&& "createTime" != ${column.name})
${column.name}#if($foreach.hasNext), #end
#end#end
)
where temp.id = ${alias}_.${pk.obj.name}
</set>
</update>
#if(${codeCheck})
<!-- 根据编码查询 -->
<select id="findByCode" resultMap="$!{tool.firstLowerCase($tableInfo.name)}Map">
select
<include refid="SQL_${tableInfo.name.toUpperCase()}_COLUMN"/>
from ${tableInfo.obj.name.toLowerCase()} ${alias}_
<where>
<if test="null != code and code.length() != 0">
AND ${alias}_.v_code = #{code}
</if>
<if test="null != tenantId">
AND ${alias}_.v_tenant_id = #{tenantId}
</if>
<if test="null != filterId">
AND ${alias}_.v_id != #{filterId}
</if>
</where>
</select>
#end
#if(${nameCheck})
<!-- 根据名称查询 -->
<select id="findByName" resultMap="$!{tool.firstLowerCase($tableInfo.name)}Map">
select
<include refid="SQL_${tableInfo.name.toUpperCase()}_COLUMN"/>
from ${tableInfo.obj.name.toLowerCase()} ${alias}_
<where>
<if test="null != name and name.length() != 0">
AND ${alias}_.v_name = #{name}
</if>
<if test="null != tenantId">
AND ${alias}_.v_tenant_id = #{tenantId}
</if>
<if test="null != filterId">
AND ${alias}_.v_id != #{filterId}
</if>
</where>
</select>
#end
</mapper>
EasyCodeConfig-2026-03-04-集成mybatisPlus
{
"author" : "xulk",
"version" : "1.2.9",
"userSecure" : "",
"currTypeMapperGroupName" : "Default",
"currTemplateGroupName" : "Default",
"currColumnConfigGroupName" : "Default",
"currGlobalConfigGroupName" : "Default",
"typeMapper" : {
"Default" : {
"name" : "Default",
"elementList" : [ {
"matchType" : "REGEX",
"columnType" : "varchar(\\(\\d+\\))?",
"javaType" : "java.lang.String"
}, {
"matchType" : "REGEX",
"columnType" : "char(\\(\\d+\\))?",
"javaType" : "java.lang.String"
}, {
"matchType" : "REGEX",
"columnType" : "(tiny|medium|long)*text",
"javaType" : "java.lang.String"
}, {
"matchType" : "REGEX",
"columnType" : "decimal(\\(\\d+,\\d+\\))?",
"javaType" : "java.lang.Double"
}, {
"matchType" : "ORDINARY",
"columnType" : "integer",
"javaType" : "java.lang.Integer"
}, {
"matchType" : "REGEX",
"columnType" : "(tiny|small|medium)*int(\\(\\d+\\))?",
"javaType" : "java.lang.Integer"
}, {
"matchType" : "ORDINARY",
"columnType" : "int4",
"javaType" : "java.lang.Integer"
}, {
"matchType" : "ORDINARY",
"columnType" : "int8",
"javaType" : "java.lang.Long"
}, {
"matchType" : "REGEX",
"columnType" : "bigint(\\(\\d+\\))?",
"javaType" : "java.lang.Long"
}, {
"matchType" : "ORDINARY",
"columnType" : "date",
"javaType" : "java.util.Date"
}, {
"matchType" : "ORDINARY",
"columnType" : "datetime",
"javaType" : "java.util.Date"
}, {
"matchType" : "ORDINARY",
"columnType" : "timestamp",
"javaType" : "java.util.Date"
}, {
"matchType" : "ORDINARY",
"columnType" : "time",
"javaType" : "java.time.LocalTime"
}, {
"matchType" : "ORDINARY",
"columnType" : "boolean",
"javaType" : "java.lang.Boolean"
}, {
"matchType" : "ORDINARY",
"columnType" : "double(14,11)",
"javaType" : "java.lang.Double"
}, {
"matchType" : "ORDINARY",
"columnType" : "float(5,1)",
"javaType" : "java.math.BigDecimal"
} ]
}
},
"template" : {
"MybatisPlus-Mixed" : {
"name" : "MybatisPlus-Mixed",
"elementList" : [ {
"name" : "controller.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Controller\")\n\n##保存文件(宏定义)\n#save(\"/controller\", \"Controller.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"controller\")\n\n##定义服务名\n#set($serviceName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), \"Service\"))\n\n##定义实体对象名\n#set($entityName = $!tool.firstLowerCase($!tableInfo.name))\n\nimport com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;\nimport com.baomidou.mybatisplus.extension.api.ApiController;\nimport com.baomidou.mybatisplus.extension.api.R;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.annotation.Resource;\nimport java.io.Serializable;\nimport java.util.List;\n\n##表注释(宏定义)\n#tableComment(\"表控制层\")\n@RestController\n@RequestMapping(\"$!tool.firstLowerCase($!tableInfo.name)\")\npublic class $!{tableName} extends ApiController {\n /**\n * 服务对象\n */\n @Resource\n private $!{tableInfo.name}Service $!{serviceName};\n\n /**\n * 分页查询所有数据\n *\n * @param page 分页对象\n * @param $!entityName 查询实体\n * @return 所有数据\n */\n @GetMapping\n public R selectAll(Page<$!tableInfo.name> page, $!tableInfo.name $!entityName) {\n return success(this.$!{serviceName}.page(page, new QueryWrapper<>($!entityName)));\n }\n\n /**\n * 通过主键查询单条数据\n *\n * @param id 主键\n * @return 单条数据\n */\n @GetMapping(\"{id}\")\n public R selectOne(@PathVariable Serializable id) {\n return success(this.$!{serviceName}.getById(id));\n }\n\n /**\n * 新增数据\n *\n * @param $!entityName 实体对象\n * @return 新增结果\n */\n @PostMapping\n public R insert(@RequestBody $!tableInfo.name $!entityName) {\n return success(this.$!{serviceName}.save($!entityName));\n }\n\n /**\n * 修改数据\n *\n * @param $!entityName 实体对象\n * @return 修改结果\n */\n @PutMapping\n public R update(@RequestBody $!tableInfo.name $!entityName) {\n return success(this.$!{serviceName}.updateById($!entityName));\n }\n\n /**\n * 删除数据\n *\n * @param idList 主键结合\n * @return 删除结果\n */\n @DeleteMapping\n public R delete(@RequestParam(\"idList\") List<Long> idList) {\n return success(this.$!{serviceName}.removeByIds(idList));\n }\n}\n"
}, {
"name" : "dao.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Dao\")\n\n##保存文件(宏定义)\n#save(\"/dao\", \"Dao.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"dao\")\n\nimport java.util.List;\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport org.apache.ibatis.annotations.Param;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n\n##表注释(宏定义)\n#tableComment(\"表数据库访问层\")\npublic interface $!{tableName} extends BaseMapper<$!tableInfo.name> {\n\n/**\n* 批量新增数据(MyBatis原生foreach方法)\n*\n* @param entities List<$!{tableInfo.name}> 实例对象列表\n* @return 影响行数\n*/\nint insertBatch(@Param(\"entities\") List<$!{tableInfo.name}> entities);\n\n/**\n* 批量新增或按主键更新数据(MyBatis原生foreach方法)\n*\n* @param entities List<$!{tableInfo.name}> 实例对象列表\n* @return 影响行数\n* @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参\n*/\nint insertOrUpdateBatch(@Param(\"entities\") List<$!{tableInfo.name}> entities);\n\n}\n"
}, {
"name" : "entity.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/entity\", \".java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"entity\")\n\n##自动导入包(全局变量)\n$!autoImport\nimport com.baomidou.mybatisplus.extension.activerecord.Model;\nimport java.io.Serializable;\n\n##表注释(宏定义)\n#tableComment(\"表实体类\")\n@SuppressWarnings(\"serial\")\npublic class $!{tableInfo.name} extends Model<$!{tableInfo.name}> {\n#foreach($column in $tableInfo.fullColumn)\n #if(${column.comment})//${column.comment}#end\n\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n\n#foreach($column in $tableInfo.fullColumn)\n#getSetMethod($column)\n#end\n\n#foreach($column in $tableInfo.pkColumn)\n /**\n * 获取主键值\n *\n * @return 主键值\n */\n @Override\n protected Serializable pkVal() {\n return this.$!column.name;\n }\n #break\n#end\n}\n"
}, {
"name" : "mapper.xml.vm",
"code" : "##引入mybatis支持\n$!{mybatisSupport.vm}\n\n##设置保存名称与保存位置\n$!callback.setFileName($tool.append($!{tableInfo.name}, \"Dao.xml\"))\n$!callback.setSavePath($tool.append($modulePath, \"/src/main/resources/mapper\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"$!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao\">\n\n <resultMap type=\"$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}\" id=\"$!{tableInfo.name}Map\">\n#foreach($column in $tableInfo.fullColumn)\n <result property=\"$!column.name\" column=\"$!column.obj.name\" jdbcType=\"$!column.ext.jdbcType\"/>\n#end\n </resultMap>\n\n <!-- 批量插入 -->\n <insert id=\"insertBatch\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n values\n <foreach collection=\"entities\" item=\"entity\" separator=\",\">\n (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)\n </foreach>\n </insert>\n <!-- 批量插入或按主键更新 -->\n <insert id=\"insertOrUpdateBatch\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n values\n <foreach collection=\"entities\" item=\"entity\" separator=\",\">\n (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)\n </foreach>\n on duplicate key update\n #foreach($column in $tableInfo.otherColumn)$!column.obj.name = values($!column.obj.name) #if($velocityHasNext), #end#end\n </insert>\n\n</mapper>\n"
}, {
"name" : "service.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Service\")\n\n##保存文件(宏定义)\n#save(\"/service\", \"Service.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service\")\n\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n\n##表注释(宏定义)\n#tableComment(\"表服务接口\")\npublic interface $!{tableName} extends IService<$!tableInfo.name> {\n\n}\n"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"ServiceImpl\")\n\n##保存文件(宏定义)\n#save(\"/service/impl\", \"ServiceImpl.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service.impl\")\n\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.stereotype.Service;\n\n##表注释(宏定义)\n#tableComment(\"表服务实现类\")\n@Service(\"$!tool.firstLowerCase($tableInfo.name)Service\")\npublic class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Dao, $!{tableInfo.name}> implements $!{tableInfo.name}Service {\n\n}\n"
} ]
},
"MybatisPlus" : {
"name" : "MybatisPlus",
"elementList" : [ {
"name" : "controller.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Controller\")\n##保存文件(宏定义)\n#save(\"/controller\", \"Controller.java\")\n##包路径(宏定义)\n#setPackageSuffix(\"controller\")\n##定义服务名\n#set($serviceName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), \"Service\"))\n\n##定义实体对象名\n#set($entityName = $!tool.firstLowerCase($!tableInfo.name))\n$!{result.vm}\n$!{baseController.vm}\nimport com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.web.bind.annotation.*;\nimport com.xiaobing.common.res.Result;\nimport javax.annotation.Resource;\nimport java.io.Serializable;\nimport java.util.List;\n\n##表注释(宏定义)\n#tableComment(\"表控制层\")\n@RestController\n@RequestMapping(\"$!tool.firstLowerCase($!tableInfo.name)\")\npublic class $!{tableName} extends BaseController {\n /**\n * 服务对象\n */\n @Resource\n private $!{tableInfo.name}Service $!{serviceName};\n\n /**\n * 分页查询所有数据\n *\n * @param page 分页对象\n * @param $!entityName 查询实体\n * @return 所有数据\n */\n @GetMapping\n public Result selectAll(Page<$!tableInfo.name> page, $!tableInfo.name $!entityName) {\n return Result.success(this.$!{serviceName}.page(page, new QueryWrapper<>($!entityName)));\n }\n\n /**\n * 通过主键查询单条数据\n *\n * @param id 主键\n * @return 单条数据\n */\n @GetMapping(\"{id}\")\n public Result selectOne(@PathVariable Serializable id) {\n return Result.success(this.$!{serviceName}.getById(id));\n }\n\n /**\n * 新增数据\n *\n * @param $!entityName 实体对象\n * @return 新增结果\n */\n @PostMapping\n public Result insert(@RequestBody $!tableInfo.name $!entityName) {\n return Result.success(this.$!{serviceName}.save($!entityName));\n }\n\n /**\n * 修改数据\n *\n * @param $!entityName 实体对象\n * @return 修改结果\n */\n @PutMapping\n public Result update(@RequestBody $!tableInfo.name $!entityName) {\n return Result.success(this.$!{serviceName}.updateById($!entityName));\n }\n\n /**\n * 删除数据\n *\n * @param idList 主键结合\n * @return 删除结果\n */\n @DeleteMapping\n public Result delete(@RequestParam(\"idList\") List<Long> idList) {\n return Result.success(this.$!{serviceName}.removeByIds(idList));\n }\n}\n"
}, {
"name" : "dao.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)(拼接的后缀Mapper)\n#setTableSuffix(\"Mapper\")\n\n##保存文件(宏定义)(...Mapper.java)\n#save(\"/dao\", \"Mapper.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"dao\")\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport com.xiaobing.user.entity.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n\n##表注释(宏定义)\n#tableComment(\"表数据库访问层\")\npublic interface $!{tableName} extends BaseMapper<$!tableInfo.name> {\n\n}\n"
}, {
"name" : "entity.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n##保存文件(宏定义)(文件后缀)\n#save(\"/entity\", \".java\") \n#set($temp = $tool.newHashSet(\"id\", \"createBy\", \"updateBy\", \"createTime\", \"updateTime\", \"delFlag\"))\n#foreach($item in $temp)\n #set($newList = $tool.newArrayList())\n #foreach($column in $tableInfo.fullColumn)\n #if($column.name!=$item)\n $tool.call($newList.add($column))\n #end\n #end\n $tableInfo.setFullColumn($newList)\n#end\n \n#setPackageSuffix(\"entity\")\n##自动导入包(全局变量)\n$!{baseEntity.vm}\n$!{autoImport.vm}\nimport com.baomidou.mybatisplus.annotation.TableName;\nimport java.io.Serializable;\nimport lombok.Data;\nimport lombok.AllArgsConstructor;\nimport lombok.NoArgsConstructor;\n \n##表注释(宏定义)\n#tableComment(\"表实体类\")\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\n@TableName(\"$!{tableInfo.obj.name}\")\npublic class $!{tableInfo.name} extends BaseEntity implements Serializable {\n \n private static final long serialVersionUID = 1L;\n \n#foreach($column in $tableInfo.fullColumn)\n #if(${column.comment})//${column.comment}#end\n \n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n \n}"
}, {
"name" : "service.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Service\")\n\n##保存文件(宏定义)\n#save(\"/service\", \"Service.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service\")\n\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport com.xiaobing.user.entity.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n\n##表注释(宏定义)\n#tableComment(\"表服务接口\")\npublic interface $!{tableName} extends IService<$!tableInfo.name> {\n\n}\n"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"ServiceImpl\")\n\n##保存文件(宏定义)(文件后缀例如:...ServiceImpl.java)\n#save(\"/service/impl\", \"ServiceImpl.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service.impl\")\n\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.stereotype.Service;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n\n##表注释(宏定义)\n#tableComment(\"表服务实现类\")\n@Service(\"$!tool.firstLowerCase($tableInfo.name)Service\")\npublic class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Mapper, $!{tableInfo.name}> implements $!{tableInfo.name}Service {\n\n}\n"
}, {
"name" : "mapper.xml.vm",
"code" : "##引入mybatis支持\n$!{mybatisSupport.vm}\n \n##设置保存名称与保存位置\n$!callback.setFileName($tool.append($!{tableInfo.name}, \"Mapper.xml\"))\n$!callback.setSavePath($tool.append($modulePath, \"/src/main/resources/mybatis\"))\n \n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n \n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"$!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Mapper\">\n \n <resultMap type=\"$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}\" id=\"$!{tableInfo.name}Map\">\n#foreach($column in $tableInfo.fullColumn)\n <result property=\"$!column.name\" column=\"$!column.obj.name\"/>\n#end\n </resultMap>\n \n</mapper>"
} ]
},
"spring-data-mongodb" : {
"name" : "spring-data-mongodb",
"elementList" : [ {
"name" : "controller.java.vm",
"code" : "##导入宏定义、设置包名、类名、文件名##导入宏定义\n$!{define.vm}\n#setPackageSuffix(\"controller\")\n#setTableSuffix(\"Controller\")\n#save(\"/controller\", \"Controller.java\")\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n##定义服务名\n#set($serviceSortType = $!tool.append($!tableInfo.name, \"Service\"))\n#set($serviceType = $!tool.append($!tableInfo.savePackageName, \".service.\", $serviceSortType))\n#set($serviceVarName = $!tool.firstLowerCase($serviceSortType))\n\n#set($entityShortType = $!tableInfo.name)\n#set($entityType = $!tableInfo.psiClassObj.getQualifiedName())\n#set($entityVarName = $!tool.firstLowerCase($!tableInfo.name))\n#set($pkType = $!pk.type)\n\nimport $pkType;\nimport $entityType;\nimport $serviceType;\nimport lombok.AllArgsConstructor;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n\n/**\n * $!{tableInfo.comment}控制层\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@RestController\n@RequestMapping(\"/$!tool.firstLowerCase($!tableInfo.name)\")\n@AllArgsConstructor\npublic class $!{tableName} {\n\n\tprivate $serviceSortType $serviceVarName;\n\n\t/**\n\t * 获取$!{tableInfo.comment}列表(分页)\n\t */\n\t@GetMapping(\"/list\")\n\tpublic Page<$entityShortType> list(Pageable page) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * 获取$!{tableInfo.comment}\n\t */\n\t@GetMapping(\"/get\")\n\tpublic $entityShortType get($!pk.shortType id) {\n\t\treturn ${serviceVarName}.findById(id);\n\t}\n\n\t/**\n\t * 添加$!{tableInfo.comment}\n\t */\n\t@PostMapping(\"/add\")\n\tpublic void add(@RequestBody $entityShortType $entityVarName) {\n\t\t${serviceVarName}.save($entityVarName);\n\t}\n\n\n\t/**\n\t * 修改$!{tableInfo.comment}\n\t */\n\t@PostMapping(\"/update\")\n\tpublic void update(@RequestBody $entityShortType $entityVarName) {\n\t\t${serviceVarName}.save($entityVarName);\n\t}\n\n\t/**\n\t * 删除$!{tableInfo.comment}\n\t */\n\t@PostMapping(\"/delete\")\n\tpublic void delete($!pk.shortType id) {\n\t\t${serviceVarName}.deleteById(id);\n\t}\n\n}\n"
}, {
"name" : "entity.java.vm",
"code" : "##引入宏定义\n$!{define.vm}\n\n##使用宏定义设置回调(保存位置与文件后缀)\n#save(\"/entity\", \".java\")\n\n##使用宏定义设置包后缀\n#setPackageSuffix(\"entity\")\n\n##使用全局变量实现默认包导入\n$!{autoImport.vm}\nimport java.io.Serializable;\n\n##使用宏定义实现类注释信息\n#tableComment(\"实体类\")\npublic class $!{tableInfo.name} implements Serializable {\n private static final long serialVersionUID = $!tool.serial();\n#foreach($column in $tableInfo.fullColumn)\n #if(${column.comment})/**\n * ${column.comment}\n */#end\n\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n\n#foreach($column in $tableInfo.fullColumn)\n##使用宏定义实现get,set方法\n#getSetMethod($column)\n#end\n\n}\n"
}, {
"name" : "repository.java.vm",
"code" : "##导入宏定义、设置包名、类名、文件名##导入宏定义\n$!{define.vm}\n#setPackageSuffix(\"repository\")\n#setTableSuffix(\"Repository\")\n#save(\"/repository\", \"Repository.java\")\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n##实体类名、主键类名\n#set($entityShortType = $!tableInfo.name)\n#set($entityType = $!tableInfo.psiClassObj.getQualifiedName())\n#set($pkShortType = $!pk.shortType)\n#set($pkType = $!pk.type)\n\nimport $pkType;\nimport $entityType;\nimport org.springframework.data.mongodb.repository.MongoRepository;\n\n\n/**\n * $!{tableInfo.comment}持久层\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} extends MongoRepository<$entityShortType, $pkShortType> {\n\n}\n"
}, {
"name" : "service.java.vm",
"code" : "##导入宏定义、设置包名、类名、文件名##导入宏定义\n$!{define.vm}\n#setPackageSuffix(\"service\")\n#setTableSuffix(\"Service\")\n#save(\"/service\", \"Service.java\")\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n##实体类名、主键类名\n#set($entityShortType = $!tableInfo.name)\n#set($entityType = $!tableInfo.psiClassObj.getQualifiedName())\n#set($entityVarName = $!tool.firstLowerCase($!tableInfo.name))\n#set($pkShortType = $!pk.shortType)\n#set($pkType = $!pk.type)\n\nimport $pkType;\nimport $entityType;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport java.util.Collection;\nimport java.util.List;\n\n\n/**\n * $!{tableInfo.comment}业务层\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} {\n\n void save($entityShortType $entityVarName);\n\n void deleteById($pkShortType id);\n\n $entityShortType findById($pkShortType id);\n\n List<$entityShortType> findById(Collection<$pkShortType> ids);\n\n Page<$entityShortType> list(Pageable page);\n\n}\n"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##导入宏定义、设置包名、类名、文件名\n$!{define.vm}\n#setPackageSuffix(\"service.impl\")\n#setTableSuffix(\"ServiceImpl\")\n#save(\"/service/impl\", \"ServiceImpl.java\")\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n##业务层类名、持久层类名、实体名\n#set($serviceSortType = $!tool.append($!tableInfo.name, \"Service\"))\n#set($serviceType = $!tool.append($!tableInfo.savePackageName, \".service.\", $serviceSortType))\n#set($repositorySortType = $!tool.append($!tableInfo.name, \"Repository\"))\n#set($repositoryType = $!tool.append($!tableInfo.savePackageName, \".repository.\", $repositorySortType))\n#set($repositoryVarName = $!tool.firstLowerCase($!repositorySortType))\n#set($entityShortType = $!tableInfo.name)\n#set($entityType = $!tableInfo.psiClassObj.getQualifiedName())\n#set($entityVarName = $!tool.firstLowerCase($!tableInfo.name))\n#set($pkShortType = $!pk.shortType)\n#set($pkType = $!pk.type)\n\nimport $pkType;\nimport $entityType;\nimport $serviceType;\nimport $repositoryType;\nimport org.springframework.stereotype.Service;\nimport javax.annotation.Resource;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.stream.Collectors;\nimport java.util.stream.StreamSupport;\n\n\n/**\n * $!{tableInfo.comment}业务层\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@Service\npublic class $!{tableName} implements $!serviceSortType {\n\n\t@Resource\n private $repositorySortType $repositoryVarName;\n\n @Override\n public void save($entityShortType $entityVarName) {\n $!{repositoryVarName}.save($entityVarName);\n }\n\n @Override\n public void deleteById($pkShortType id) {\n $!{repositoryVarName}.delete(id);\n }\n\n @Override\n public $entityShortType findById($pkShortType id) {\n return $!{repositoryVarName}.findOne(id);\n }\n\n @Override\n public List<$entityShortType> findById(Collection<$pkShortType> ids) {\n Iterable<$entityShortType> iterable = $!{repositoryVarName}.findAll(ids);\n return StreamSupport.stream(iterable.spliterator(), false)\n .collect(Collectors.toList());\n }\n\n @Override\n public Page<$entityShortType> list(Pageable page) {\n return $!{repositoryVarName}.findAll(page);\n }\n\n}\n"
} ]
},
"Default" : {
"name" : "Default",
"elementList" : [ {
"name" : "controller.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Controller\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/controller\"))\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}controller;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}QueryDTO;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}DTO;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}VO;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.web.bind.annotation.*;\n\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.web.bind.annotation.RequestMapping; \nimport org.springframework.web.bind.annotation.RestController;\nimport org.springframework.validation.annotation.Validated;\nimport com.jtport.common.core.domain.R;\nimport com.jtport.common.core.web.page.TableDataInfo;\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表控制层\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@RestController\n@RequestMapping(\"$!tool.firstLowerCase($tableInfo.name)\")\npublic class $!{tableName} {\n /**\n * 服务对象\n */\n @Autowired\n private $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;\n\n /**\n * 分页查询\n *\n * @param dto 筛选条件 \n * @return 查询结果\n */\n @GetMapping(\"/page\")\n public R<TableDataInfo<$!{tableInfo.name}VO>> page(@Validated $!{tableInfo.name}QueryDTO dto) {\n\t\tTableDataInfo<$!{tableInfo.name}VO> page = this.$!{tool.firstLowerCase($tableInfo.name)}Service.queryPage(dto);\n return R.ok(page);\n\t\t\n\t}\n\n /**\n * 通过主键查询单条数据\n *\n * @param id 主键\n * @return 单条数据\n */\n\t@GetMapping(\"/detailById\")\n public R<$!{tableInfo.name}VO> detailById(@RequestParam(\"id\") String id) {\n return R.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.detailById(id));\n }\n\t\n\n /**\n * 新增数据\n *\n * @param dto 实体\n * @return 新增结果\n */ \n\t@PostMapping(\"/add\")\n public R<String> add(@RequestBody $!{tableInfo.name}DTO dto) {\n return this.$!{tool.firstLowerCase($tableInfo.name)}Service.add(dto);\n }\n\n /**\n * 编辑数据\n *\n * @param dto 实体\n * @return 编辑结果\n */\n @PostMapping(\"/update\")\n public R<String> update(@RequestBody $!{tableInfo.name}DTO dto) {\n return this.$!{tool.firstLowerCase($tableInfo.name)}Service.edit(dto);\n }\n\t\n\n /**\n * 删除数据\n *\n * @param id 主键\n * @return 删除是否成功\n */\n @DeleteMapping(value = \"/deleteById\")\n public R<Boolean> deleteById(@PathVariable $!pk.shortType id) {\n return this.$!{tool.firstLowerCase($tableInfo.name)}Service.deleteById(id);\n }\t\n\t\n\n}\n"
}, {
"name" : "entity.java.vm",
"code" : "##引入宏定义\n$!{define.vm}\n\n##使用宏定义设置回调(保存位置与文件后缀)\n#save(\"/entity\", \".java\")\n\n##使用宏定义设置包后缀\n#setPackageSuffix(\"entity\")\n\n##使用全局变量实现默认包导入\n$!{autoImport.vm}\nimport java.io.Serializable;\nimport java.math.BigDecimal;\nimport java.util.Date;\n\nimport com.baomidou.mybatisplus.annotation.FieldFill;\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.baomidou.mybatisplus.annotation.TableField;\nimport com.baomidou.mybatisplus.annotation.TableId;\nimport com.baomidou.mybatisplus.annotation.TableLogic;\nimport com.baomidou.mybatisplus.annotation.TableName;\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport com.jtport.common.core.web.domain.BaseEntity;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\n\n##使用宏定义实现类注释信息\n#tableComment(\"实体类\")\n\n@EqualsAndHashCode(callSuper = true)\n@Data\n@TableName(\"$!{tableInfo.obj.name}\")\npublic class $!{tableInfo.name} extends BaseEntity implements Serializable {\n\n private static final long serialVersionUID = $!tool.serial();\n\n @TableId(type = IdType.ASSIGN_ID)\n private String id;\n\n #foreach($column in $tableInfo.otherColumn)\n#if(${column.name} != \"delFlag\")\n #if(${column.comment})\n /** ${column.comment} */\n #end\n #if(${column.name} == \"createTime\" && ${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n @TableField(fill = FieldFill.INSERT)\n #elseif(${column.name} == \"updateTime\" && ${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n @TableField(fill = FieldFill.INSERT_UPDATE)\n #elseif(${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n #end\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n\n#end\n #end\n /**\n * 删除标识(0:未删除;1:已删除)\n */\n @TableLogic // 逻辑删除注解\n private Integer delFlag;\n \n}"
}, {
"name" : "mapper.xml.vm",
"code" : "##引入mybatis支持\n$!{mybatisSupport.vm}\n\n##设置保存名称与保存位置\n$!callback.setFileName($tool.append($!{tableInfo.name}, \"Mapper.xml\"))\n$!callback.setSavePath($tool.append($modulePath, \"/src/main/resources/mapper\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"$!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper\">\n\n <resultMap type=\"$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}\" id=\"$!{tableInfo.name}Map\">\n#foreach($column in $tableInfo.fullColumn)\n <result property=\"$!column.name\" column=\"$!column.obj.name\" jdbcType=\"$!column.ext.jdbcType\"/>\n#end\n </resultMap>\n\n \n\n</mapper>\n"
}, {
"name" : "service.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Service\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/service\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}DTO;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}VO;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}QueryDTO;\n\nimport com.jtport.common.core.domain.R;\nimport com.jtport.common.core.web.page.TableDataInfo;\nimport com.baomidou.mybatisplus.extension.service.IService;\n\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表服务接口\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} extends IService<$!{tableInfo.name}> {\n\n\n /**\n * 分页查询\n *\n * dto 筛选条件 \n * @return 查询结果\n */\n TableDataInfo<$!{tableInfo.name}VO> queryPage($!{tableInfo.name}QueryDTO dto);\n \n \n\t/**\n * 详情\n * @param id\n * @return\n */ \n\t$!{tableInfo.name}VO detailById(String id);\n\t\n\n\n /**\n * 新增数据\n *\n * @param dto 实例对象\n * @return 实例对象\n */\n R<String> add($!{tableInfo.name}DTO dto);\n\t\t\n\t\t\n\n /**\n * 修改数据\n *\n * dto 实例对象\n * @return 实例对象\n */ \n R<String> edit($!{tableInfo.name}DTO dto);\n\t\n\t\n\n /**\n * 通过主键删除数据\n *\n * @param $!pk.name 主键\n * @return 是否成功\n */\n R<Boolean> deleteById(String id);\n\n}"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"ServiceImpl\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/service/impl\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service.impl;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}VO;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}DTO;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}QueryDTO;\nimport $!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper; \nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.stereotype.Service; \nimport org.springframework.beans.factory.annotation.Autowired;\nimport com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;\nimport com.jtport.common.core.web.page.TableDataInfo;\nimport org.springframework.beans.BeanUtils;\nimport com.baomidou.mybatisplus.core.metadata.IPage;\nimport com.jtport.modules.check.adapter.util.PageConvertUtils;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.jtport.common.core.domain.R;\nimport com.jtport.common.core.utils.StringUtils;\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; \n\n\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表服务实现类\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@Service \npublic class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Mapper, $!{tableInfo.name}> implements $!{tableInfo.name}Service {\n\n \n\t@Autowired\n private $!{tableInfo.name}Mapper $!tool.firstLowerCase($!{tableInfo.name})Mapper;\n\n\n\n /**\n * 分页查询\n *\n * @param $!{tool.firstLowerCase($tableInfo.name)} 筛选条件\n * @param pageRequest 分页对象\n * @return 查询结果\n */\n @Override\n public TableDataInfo<$!{tableInfo.name}VO> queryPage($!{tableInfo.name}QueryDTO dto) {\n\t\tPage<$!{tableInfo.name}> page = new Page<>(dto.getPageNum(), dto.getPageSize());\n LambdaQueryWrapper<$!{tableInfo.name}> wrapper = new LambdaQueryWrapper<>();\n\n\t\tIPage<$!{tableInfo.name}> ipage = $!tool.firstLowerCase($!{tableInfo.name})Mapper.selectPage(page, wrapper);\n return PageConvertUtils.convertToTableDataInfo(ipage, doItem -> {\n $!{tableInfo.name}VO vo = new $!{tableInfo.name}VO();\n BeanUtils.copyProperties(doItem, vo);\n return vo;\n });\n }\n\t \n\t\n\t\n /**\n * 通过ID查询单条数据\n *\n * @param $!pk.name 主键\n * @return 实例对象\n */\n @Override\n public $!{tableInfo.name}VO detailById($!pk.shortType $!pk.name) {\n\t\t$!{tableInfo.name} entity = $!tool.firstLowerCase($!{tableInfo.name})Mapper.selectById(id);\n $!{tableInfo.name}VO vo = new $!{tableInfo.name}VO();\n BeanUtils.copyProperties(entity, vo);\n return vo;\n\t\t\n }\n\t\n\n /**\n * 新增数据\n *\n * @param dto 实例对象\n * @return 实例对象\n */\n @Override\n public R<String> add($!{tableInfo.name}DTO dto) {\n $!{tableInfo.name} entity = new $!{tableInfo.name}();\n BeanUtils.copyProperties(dto, entity);\n this.$!tool.firstLowerCase($!{tableInfo.name})Mapper.insert(entity);\n return R.ok();\n }\n\t\n\t\n\n /**\n * 修改数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n * @return 实例对象 \n */\n @Override\n public R<String> edit($!{tableInfo.name}DTO dto) { \n\t\tif (dto == null || StringUtils.isEmpty(dto.getId())) {\n return R.fail(\"主键Id不能为空!\");\n }\n $!{tableInfo.name} entity = new $!{tableInfo.name}();\n BeanUtils.copyProperties(dto, entity);\n this.$!tool.firstLowerCase($!{tableInfo.name})Mapper.updateById(entity);\n return R.ok();\n }\n\n\t\n\n /**\n * 通过主键删除数据\n *\n * @param $!pk.name 主键\n * @return 是否成功\n */\n @Override\n public R<Boolean> deleteById($!pk.shortType $!pk.name) {\n\t\tint count = this.$!tool.firstLowerCase($!{tableInfo.name})Mapper.deleteById(Long.valueOf($!pk.name));\n return R.ok( count > 0 ? Boolean.TRUE : Boolean.FALSE);\n }\n\t\n\t\n\t\n}"
}, {
"name" : "Mapper.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Mapper\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/mapper\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}mapper;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}; \nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport org.apache.ibatis.annotations.Mapper; \n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层\n *\n * @author $!author\n * @since $!time.currTime()\n */ \n@Mapper\npublic interface $!{tableName} extends BaseMapper<$!{tableInfo.name}> {\n \n \n \n}\n"
}, {
"name" : "QueryDTO.java.vm",
"code" : "##引入宏定义\n$!{define.vm}\n\n##使用宏定义设置回调(保存位置与文件后缀)\n#save(\"/entity\", \"QueryDTO.java\")\n\n##使用宏定义设置包后缀\n#setPackageSuffix(\"entity\")\n\n##使用全局变量实现默认包导入\n$!{autoImport.vm} \nimport com.jtport.common.core.web.page.BasePage;\nimport lombok.Data;\nimport com.fasterxml.jackson.annotation.JsonFormat; \n\n##使用宏定义实现类注释信息 \n#tableComment(\"QueryDTO\")\n@Data\npublic class $!{tableInfo.name}QueryDTO {\n \n private String id;\n\n #foreach($column in $tableInfo.otherColumn)\n#if(${column.name} != \"delFlag\")\n #if(${column.comment})\n /** ${column.comment} */\n #end\n #if(${column.name} == \"createTime\" && ${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n #elseif(${column.name} == \"updateTime\" && ${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n #elseif(${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n #end\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n\n#end\n #end\n\n}\n"
}, {
"name" : "VO.java.vm",
"code" : "##引入宏定义\n$!{define.vm}\n\n##使用宏定义设置回调(保存位置与文件后缀)\n#save(\"/entity\", \"VO.java\")\n\n##使用宏定义设置包后缀\n#setPackageSuffix(\"entity\")\n\n##使用全局变量实现默认包导入\n$!{autoImport.vm}\n \nimport lombok.Data;\nimport com.baomidou.mybatisplus.annotation.FieldFill;\nimport com.baomidou.mybatisplus.annotation.TableField;\nimport com.fasterxml.jackson.annotation.JsonFormat; \n\n##使用宏定义实现类注释信息\n#tableComment(\"VO\")\n@Data\npublic class $!{tableInfo.name}VO {\n \n private String id;\n\n #foreach($column in $tableInfo.otherColumn)\n#if(${column.name} != \"delFlag\")\n #if(${column.comment})\n /** ${column.comment} */\n #end\n #if(${column.name} == \"createTime\" && ${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n #elseif(${column.name} == \"updateTime\" && ${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n #elseif(${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n #end\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n\n#end\n #end\n\n}\n"
}, {
"name" : "DTO.java.vm",
"code" : "##引入宏定义\n$!{define.vm}\n\n##使用宏定义设置回调(保存位置与文件后缀)\n#save(\"/entity\", \"DTO.java\")\n\n##使用宏定义设置包后缀\n#setPackageSuffix(\"entity\")\n\n##使用全局变量实现默认包导入\n$!{autoImport.vm}\nimport java.io.Serializable; \nimport lombok.Data;\n\n##使用宏定义实现类注释信息\n#tableComment(\"DTO\")\n@Data\npublic class $!{tableInfo.name}DTO extends $!{tableInfo.name} { \n\n\n}\n"
}, {
"name" : "BO.java.vm",
"code" : "##引入宏定义\n$!{define.vm}\n\n##使用宏定义设置回调(保存位置与文件后缀)\n#save(\"/entity\", \"BO.java\")\n\n##使用宏定义设置包后缀\n#setPackageSuffix(\"entity\")\n\n##使用全局变量实现默认包导入\n$!{autoImport.vm}\n \nimport lombok.Data;\nimport com.baomidou.mybatisplus.annotation.FieldFill;\nimport com.baomidou.mybatisplus.annotation.TableField;\nimport com.fasterxml.jackson.annotation.JsonFormat; \n\n##使用宏定义实现类注释信息\n#tableComment(\"BO\")\n@Data\npublic class $!{tableInfo.name}BO {\n \n private String id;\n\n #foreach($column in $tableInfo.otherColumn)\n#if(${column.name} != \"delFlag\")\n #if(${column.comment})\n /** ${column.comment} */\n #end\n #if(${column.name} == \"createTime\" && ${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n #elseif(${column.name} == \"updateTime\" && ${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n #elseif(${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n #end\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n\n#end\n #end\n\n}\n"
}, {
"name" : "Mapping.java.vm",
"code" : "\n##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Mapping\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/mapping\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}mapping;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}DTO;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}BO;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}VO;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}QueryDTO;\nimport com.jtport.common.core.web.page.TableDataInfo; \nimport org.mapstruct.Mapper;\nimport org.mapstruct.ReportingPolicy;\nimport org.mapstruct.factory.Mappers;\nimport java.util.List;\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})映射类\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE, unmappedSourcePolicy = ReportingPolicy.IGNORE) \npublic interface $!{tableName} {\n \n $!{tableName} MAPPING = Mappers.getMapper($!{tableName}.class);\n \n \n\t$!{tableInfo.name}BO targetToSource($!{tableInfo.name}QueryDTO queryDTO);\n\n\tTableDataInfo<$!{tableInfo.name}VO> boToVOList(TableDataInfo<$!{tableInfo.name}BO> boLIst);\n\n\tList<$!{tableInfo.name}BO> entityToBoList(List<$!{tableInfo.name}> entityList);\n\n\t$!{tableInfo.name}BO saveOrUpdateDtoToBo($!{tableInfo.name}DTO dto);\n\n\t$!{tableInfo.name} saveOrUpdateBoToEntity($!{tableInfo.name}BO bo);\n\n\t$!{tableInfo.name}BO entityToBo($!{tableInfo.name} entity);\n\n\t$!{tableInfo.name}VO boToVo($!{tableInfo.name} entity);\n\n}"
} ]
}
},
"columnConfig" : {
"Default" : {
"name" : "Default",
"elementList" : [ {
"title" : "disable",
"type" : "BOOLEAN",
"selectValue" : ""
}, {
"title" : "support",
"type" : "SELECT",
"selectValue" : "add,edit,query,del,ui"
} ]
}
},
"globalConfig" : {
"Default" : {
"name" : "Default",
"elementList" : [ {
"name" : "autoImport.vm",
"value" : "##自动导入包(仅导入实体属性需要的包,通常用于实体类)\n#foreach($import in $importList)\nimport $!import;\n#end"
}, {
"name" : "define.vm",
"value" : "##(Velocity宏定义)\n\n##定义设置表名后缀的宏定义,调用方式:#setTableSuffix(\"Test\")\n#macro(setTableSuffix $suffix)\n #set($tableName = $!tool.append($tableInfo.name, $suffix))\n#end\n\n##定义设置包名后缀的宏定义,调用方式:#setPackageSuffix(\"Test\")\n#macro(setPackageSuffix $suffix)\n#if($suffix!=\"\")package #end#if($tableInfo.savePackageName!=\"\")$!{tableInfo.savePackageName}.#{end}$!suffix;\n#end\n\n##定义直接保存路径与文件名简化的宏定义,调用方式:#save(\"/entity\", \".java\")\n#macro(save $path $fileName)\n $!callback.setSavePath($tool.append($tableInfo.savePath, $path))\n $!callback.setFileName($tool.append($tableInfo.name, $fileName))\n#end\n\n##定义表注释的宏定义,调用方式:#tableComment(\"注释信息\")\n#macro(tableComment $desc)\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})$desc\n *\n * @author $!author\n * @since $!time.currTime()\n */\n#end\n\n##定义GET,SET方法的宏定义,调用方式:#getSetMethod($column)\n#macro(getSetMethod $column)\n\n public $!{tool.getClsNameByFullName($column.type)} get$!{tool.firstUpperCase($column.name)}() {\n return $!{column.name};\n }\n\n public void set$!{tool.firstUpperCase($column.name)}($!{tool.getClsNameByFullName($column.type)} $!{column.name}) {\n this.$!{column.name} = $!{column.name};\n }\n#end"
}, {
"name" : "init.vm",
"value" : "##初始化区域\n\n##去掉表的t_前缀\n$!tableInfo.setName($tool.getClassName($tableInfo.obj.name.replaceFirst(\"book_\",\"\")))\n\n##参考阿里巴巴开发手册,POJO 类中布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误\n#foreach($column in $tableInfo.fullColumn)\n#if($column.name.startsWith(\"is\") && $column.type.equals(\"java.lang.Boolean\"))\n $!column.setName($tool.firstLowerCase($column.name.substring(2)))\n#end\n#end\n\n##实现动态排除列\n#set($temp = $tool.newHashSet(\"testCreateTime\", \"otherColumn\"))\n#foreach($item in $temp)\n #set($newList = $tool.newArrayList())\n #foreach($column in $tableInfo.fullColumn)\n #if($column.name!=$item)\n ##带有反回值的方法调用时使用$tool.call来消除返回值\n $tool.call($newList.add($column))\n #end\n #end\n ##重新保存\n $tableInfo.setFullColumn($newList)\n#end\n\n##对importList进行篡改\n#set($temp = $tool.newHashSet())\n#foreach($column in $tableInfo.fullColumn)\n #if(!$column.type.startsWith(\"java.lang.\"))\n ##带有反回值的方法调用时使用$tool.call来消除返回值\n $tool.call($temp.add($column.type))\n #end\n#end\n##覆盖\n#set($importList = $temp)"
}, {
"name" : "mybatisSupport.vm",
"value" : "##针对Mybatis 进行支持,主要用于生成xml文件\n#foreach($column in $tableInfo.fullColumn)\n ##储存列类型\n $tool.call($column.ext.put(\"sqlType\", $tool.getField($column.obj.dataType, \"typeName\")))\n #if($tool.newHashSet(\"java.lang.String\").contains($column.type))\n #set($jdbcType=\"VARCHAR\")\n #elseif($tool.newHashSet(\"java.lang.Boolean\", \"boolean\").contains($column.type))\n #set($jdbcType=\"BOOLEAN\")\n #elseif($tool.newHashSet(\"java.lang.Byte\", \"byte\").contains($column.type))\n #set($jdbcType=\"BYTE\")\n #elseif($tool.newHashSet(\"java.lang.Integer\", \"int\", \"java.lang.Short\", \"short\").contains($column.type))\n #set($jdbcType=\"INTEGER\")\n #elseif($tool.newHashSet(\"java.lang.Long\", \"long\").contains($column.type))\n #set($jdbcType=\"INTEGER\")\n #elseif($tool.newHashSet(\"java.lang.Float\", \"float\", \"java.lang.Double\", \"double\").contains($column.type))\n #set($jdbcType=\"NUMERIC\")\n #elseif($tool.newHashSet(\"java.util.Date\", \"java.sql.Timestamp\", \"java.time.Instant\", \"java.time.LocalDateTime\", \"java.time.OffsetDateTime\", \"\tjava.time.ZonedDateTime\").contains($column.type))\n #set($jdbcType=\"TIMESTAMP\")\n #elseif($tool.newHashSet(\"java.sql.Date\", \"java.time.LocalDate\").contains($column.type))\n #set($jdbcType=\"TIMESTAMP\")\n #else\n ##其他类型\n #set($jdbcType=\"VARCHAR\")\n #end\n $tool.call($column.ext.put(\"jdbcType\", $jdbcType))\n#end\n\n##定义宏,查询所有列\n#macro(allSqlColumn)#foreach($column in $tableInfo.fullColumn)$column.obj.name#if($velocityHasNext), #end#end#end\n"
}, {
"name" : "baseEntity.vm",
"value" : "com.xiaobing.common.base.BaseEntity"
}, {
"name" : "baseController.vm",
"value" : "import com.xiaobing.common.base.BaseController;"
} ]
}
}
}
EasyCodeConfig-2026-03-04-添加DDD领域驱动-集成mybatisPlus
{
"author" : "xulk",
"version" : "1.2.9",
"userSecure" : "",
"currTypeMapperGroupName" : "Default",
"currTemplateGroupName" : "Default",
"currColumnConfigGroupName" : "Default",
"currGlobalConfigGroupName" : "Default",
"typeMapper" : {
"Default" : {
"name" : "Default",
"elementList" : [ {
"matchType" : "REGEX",
"columnType" : "varchar(\\(\\d+\\))?",
"javaType" : "java.lang.String"
}, {
"matchType" : "REGEX",
"columnType" : "char(\\(\\d+\\))?",
"javaType" : "java.lang.String"
}, {
"matchType" : "REGEX",
"columnType" : "(tiny|medium|long)*text",
"javaType" : "java.lang.String"
}, {
"matchType" : "REGEX",
"columnType" : "decimal(\\(\\d+,\\d+\\))?",
"javaType" : "java.lang.Double"
}, {
"matchType" : "ORDINARY",
"columnType" : "integer",
"javaType" : "java.lang.Integer"
}, {
"matchType" : "REGEX",
"columnType" : "(tiny|small|medium)*int(\\(\\d+\\))?",
"javaType" : "java.lang.Integer"
}, {
"matchType" : "ORDINARY",
"columnType" : "int4",
"javaType" : "java.lang.Integer"
}, {
"matchType" : "ORDINARY",
"columnType" : "int8",
"javaType" : "java.lang.Long"
}, {
"matchType" : "REGEX",
"columnType" : "bigint(\\(\\d+\\))?",
"javaType" : "java.lang.Long"
}, {
"matchType" : "ORDINARY",
"columnType" : "date",
"javaType" : "java.util.Date"
}, {
"matchType" : "ORDINARY",
"columnType" : "datetime",
"javaType" : "java.util.Date"
}, {
"matchType" : "ORDINARY",
"columnType" : "timestamp",
"javaType" : "java.util.Date"
}, {
"matchType" : "ORDINARY",
"columnType" : "time",
"javaType" : "java.time.LocalTime"
}, {
"matchType" : "ORDINARY",
"columnType" : "boolean",
"javaType" : "java.lang.Boolean"
}, {
"matchType" : "ORDINARY",
"columnType" : "double(14,11)",
"javaType" : "java.lang.Double"
}, {
"matchType" : "ORDINARY",
"columnType" : "float(5,1)",
"javaType" : "java.math.BigDecimal"
} ]
}
},
"template" : {
"MybatisPlus-Mixed" : {
"name" : "MybatisPlus-Mixed",
"elementList" : [ {
"name" : "controller.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Controller\")\n\n##保存文件(宏定义)\n#save(\"/controller\", \"Controller.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"controller\")\n\n##定义服务名\n#set($serviceName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), \"Service\"))\n\n##定义实体对象名\n#set($entityName = $!tool.firstLowerCase($!tableInfo.name))\n\nimport com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;\nimport com.baomidou.mybatisplus.extension.api.ApiController;\nimport com.baomidou.mybatisplus.extension.api.R;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.annotation.Resource;\nimport java.io.Serializable;\nimport java.util.List;\n\n##表注释(宏定义)\n#tableComment(\"表控制层\")\n@RestController\n@RequestMapping(\"$!tool.firstLowerCase($!tableInfo.name)\")\npublic class $!{tableName} extends ApiController {\n /**\n * 服务对象\n */\n @Resource\n private $!{tableInfo.name}Service $!{serviceName};\n\n /**\n * 分页查询所有数据\n *\n * @param page 分页对象\n * @param $!entityName 查询实体\n * @return 所有数据\n */\n @GetMapping\n public R selectAll(Page<$!tableInfo.name> page, $!tableInfo.name $!entityName) {\n return success(this.$!{serviceName}.page(page, new QueryWrapper<>($!entityName)));\n }\n\n /**\n * 通过主键查询单条数据\n *\n * @param id 主键\n * @return 单条数据\n */\n @GetMapping(\"{id}\")\n public R selectOne(@PathVariable Serializable id) {\n return success(this.$!{serviceName}.getById(id));\n }\n\n /**\n * 新增数据\n *\n * @param $!entityName 实体对象\n * @return 新增结果\n */\n @PostMapping\n public R insert(@RequestBody $!tableInfo.name $!entityName) {\n return success(this.$!{serviceName}.save($!entityName));\n }\n\n /**\n * 修改数据\n *\n * @param $!entityName 实体对象\n * @return 修改结果\n */\n @PutMapping\n public R update(@RequestBody $!tableInfo.name $!entityName) {\n return success(this.$!{serviceName}.updateById($!entityName));\n }\n\n /**\n * 删除数据\n *\n * @param idList 主键结合\n * @return 删除结果\n */\n @DeleteMapping\n public R delete(@RequestParam(\"idList\") List<Long> idList) {\n return success(this.$!{serviceName}.removeByIds(idList));\n }\n}\n"
}, {
"name" : "dao.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Dao\")\n\n##保存文件(宏定义)\n#save(\"/dao\", \"Dao.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"dao\")\n\nimport java.util.List;\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport org.apache.ibatis.annotations.Param;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n\n##表注释(宏定义)\n#tableComment(\"表数据库访问层\")\npublic interface $!{tableName} extends BaseMapper<$!tableInfo.name> {\n\n/**\n* 批量新增数据(MyBatis原生foreach方法)\n*\n* @param entities List<$!{tableInfo.name}> 实例对象列表\n* @return 影响行数\n*/\nint insertBatch(@Param(\"entities\") List<$!{tableInfo.name}> entities);\n\n/**\n* 批量新增或按主键更新数据(MyBatis原生foreach方法)\n*\n* @param entities List<$!{tableInfo.name}> 实例对象列表\n* @return 影响行数\n* @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参\n*/\nint insertOrUpdateBatch(@Param(\"entities\") List<$!{tableInfo.name}> entities);\n\n}\n"
}, {
"name" : "entity.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/entity\", \".java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"entity\")\n\n##自动导入包(全局变量)\n$!autoImport\nimport com.baomidou.mybatisplus.extension.activerecord.Model;\nimport java.io.Serializable;\n\n##表注释(宏定义)\n#tableComment(\"表实体类\")\n@SuppressWarnings(\"serial\")\npublic class $!{tableInfo.name} extends Model<$!{tableInfo.name}> {\n#foreach($column in $tableInfo.fullColumn)\n #if(${column.comment})//${column.comment}#end\n\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n\n#foreach($column in $tableInfo.fullColumn)\n#getSetMethod($column)\n#end\n\n#foreach($column in $tableInfo.pkColumn)\n /**\n * 获取主键值\n *\n * @return 主键值\n */\n @Override\n protected Serializable pkVal() {\n return this.$!column.name;\n }\n #break\n#end\n}\n"
}, {
"name" : "mapper.xml.vm",
"code" : "##引入mybatis支持\n$!{mybatisSupport.vm}\n\n##设置保存名称与保存位置\n$!callback.setFileName($tool.append($!{tableInfo.name}, \"Dao.xml\"))\n$!callback.setSavePath($tool.append($modulePath, \"/src/main/resources/mapper\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"$!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao\">\n\n <resultMap type=\"$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}\" id=\"$!{tableInfo.name}Map\">\n#foreach($column in $tableInfo.fullColumn)\n <result property=\"$!column.name\" column=\"$!column.obj.name\" jdbcType=\"$!column.ext.jdbcType\"/>\n#end\n </resultMap>\n\n <!-- 批量插入 -->\n <insert id=\"insertBatch\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n values\n <foreach collection=\"entities\" item=\"entity\" separator=\",\">\n (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)\n </foreach>\n </insert>\n <!-- 批量插入或按主键更新 -->\n <insert id=\"insertOrUpdateBatch\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n values\n <foreach collection=\"entities\" item=\"entity\" separator=\",\">\n (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)\n </foreach>\n on duplicate key update\n #foreach($column in $tableInfo.otherColumn)$!column.obj.name = values($!column.obj.name) #if($velocityHasNext), #end#end\n </insert>\n\n</mapper>\n"
}, {
"name" : "service.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Service\")\n\n##保存文件(宏定义)\n#save(\"/service\", \"Service.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service\")\n\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n\n##表注释(宏定义)\n#tableComment(\"表服务接口\")\npublic interface $!{tableName} extends IService<$!tableInfo.name> {\n\n}\n"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"ServiceImpl\")\n\n##保存文件(宏定义)\n#save(\"/service/impl\", \"ServiceImpl.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service.impl\")\n\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.stereotype.Service;\n\n##表注释(宏定义)\n#tableComment(\"表服务实现类\")\n@Service(\"$!tool.firstLowerCase($tableInfo.name)Service\")\npublic class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Dao, $!{tableInfo.name}> implements $!{tableInfo.name}Service {\n\n}\n"
} ]
},
"MybatisPlus" : {
"name" : "MybatisPlus",
"elementList" : [ {
"name" : "controller.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Controller\")\n##保存文件(宏定义)\n#save(\"/controller\", \"Controller.java\")\n##包路径(宏定义)\n#setPackageSuffix(\"controller\")\n##定义服务名\n#set($serviceName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), \"Service\"))\n\n##定义实体对象名\n#set($entityName = $!tool.firstLowerCase($!tableInfo.name))\n$!{result.vm}\n$!{baseController.vm}\nimport com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.web.bind.annotation.*;\nimport com.xiaobing.common.res.Result;\nimport javax.annotation.Resource;\nimport java.io.Serializable;\nimport java.util.List;\n\n##表注释(宏定义)\n#tableComment(\"表控制层\")\n@RestController\n@RequestMapping(\"$!tool.firstLowerCase($!tableInfo.name)\")\npublic class $!{tableName} extends BaseController {\n /**\n * 服务对象\n */\n @Resource\n private $!{tableInfo.name}Service $!{serviceName};\n\n /**\n * 分页查询所有数据\n *\n * @param page 分页对象\n * @param $!entityName 查询实体\n * @return 所有数据\n */\n @GetMapping\n public Result selectAll(Page<$!tableInfo.name> page, $!tableInfo.name $!entityName) {\n return Result.success(this.$!{serviceName}.page(page, new QueryWrapper<>($!entityName)));\n }\n\n /**\n * 通过主键查询单条数据\n *\n * @param id 主键\n * @return 单条数据\n */\n @GetMapping(\"{id}\")\n public Result selectOne(@PathVariable Serializable id) {\n return Result.success(this.$!{serviceName}.getById(id));\n }\n\n /**\n * 新增数据\n *\n * @param $!entityName 实体对象\n * @return 新增结果\n */\n @PostMapping\n public Result insert(@RequestBody $!tableInfo.name $!entityName) {\n return Result.success(this.$!{serviceName}.save($!entityName));\n }\n\n /**\n * 修改数据\n *\n * @param $!entityName 实体对象\n * @return 修改结果\n */\n @PutMapping\n public Result update(@RequestBody $!tableInfo.name $!entityName) {\n return Result.success(this.$!{serviceName}.updateById($!entityName));\n }\n\n /**\n * 删除数据\n *\n * @param idList 主键结合\n * @return 删除结果\n */\n @DeleteMapping\n public Result delete(@RequestParam(\"idList\") List<Long> idList) {\n return Result.success(this.$!{serviceName}.removeByIds(idList));\n }\n}\n"
}, {
"name" : "dao.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)(拼接的后缀Mapper)\n#setTableSuffix(\"Mapper\")\n\n##保存文件(宏定义)(...Mapper.java)\n#save(\"/dao\", \"Mapper.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"dao\")\n\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport com.xiaobing.user.entity.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n\n##表注释(宏定义)\n#tableComment(\"表数据库访问层\")\npublic interface $!{tableName} extends BaseMapper<$!tableInfo.name> {\n\n}\n"
}, {
"name" : "entity.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n##保存文件(宏定义)(文件后缀)\n#save(\"/entity\", \".java\") \n#set($temp = $tool.newHashSet(\"id\", \"createBy\", \"updateBy\", \"createTime\", \"updateTime\", \"delFlag\"))\n#foreach($item in $temp)\n #set($newList = $tool.newArrayList())\n #foreach($column in $tableInfo.fullColumn)\n #if($column.name!=$item)\n $tool.call($newList.add($column))\n #end\n #end\n $tableInfo.setFullColumn($newList)\n#end\n \n#setPackageSuffix(\"entity\")\n##自动导入包(全局变量)\n$!{baseEntity.vm}\n$!{autoImport.vm}\nimport com.baomidou.mybatisplus.annotation.TableName;\nimport java.io.Serializable;\nimport lombok.Data;\nimport lombok.AllArgsConstructor;\nimport lombok.NoArgsConstructor;\n \n##表注释(宏定义)\n#tableComment(\"表实体类\")\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\n@TableName(\"$!{tableInfo.obj.name}\")\npublic class $!{tableInfo.name} extends BaseEntity implements Serializable {\n \n private static final long serialVersionUID = 1L;\n \n#foreach($column in $tableInfo.fullColumn)\n #if(${column.comment})//${column.comment}#end\n \n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n \n}"
}, {
"name" : "service.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Service\")\n\n##保存文件(宏定义)\n#save(\"/service\", \"Service.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service\")\n\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport com.xiaobing.user.entity.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n\n##表注释(宏定义)\n#tableComment(\"表服务接口\")\npublic interface $!{tableName} extends IService<$!tableInfo.name> {\n\n}\n"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"ServiceImpl\")\n\n##保存文件(宏定义)(文件后缀例如:...ServiceImpl.java)\n#save(\"/service/impl\", \"ServiceImpl.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service.impl\")\n\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.stereotype.Service;\nimport $!{tableInfo.savePackageName}.entity.$!tableInfo.name;\n\n##表注释(宏定义)\n#tableComment(\"表服务实现类\")\n@Service(\"$!tool.firstLowerCase($tableInfo.name)Service\")\npublic class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Mapper, $!{tableInfo.name}> implements $!{tableInfo.name}Service {\n\n}\n"
}, {
"name" : "mapper.xml.vm",
"code" : "##引入mybatis支持\n$!{mybatisSupport.vm}\n \n##设置保存名称与保存位置\n$!callback.setFileName($tool.append($!{tableInfo.name}, \"Mapper.xml\"))\n$!callback.setSavePath($tool.append($modulePath, \"/src/main/resources/mybatis\"))\n \n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n \n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"$!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Mapper\">\n \n <resultMap type=\"$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}\" id=\"$!{tableInfo.name}Map\">\n#foreach($column in $tableInfo.fullColumn)\n <result property=\"$!column.name\" column=\"$!column.obj.name\"/>\n#end\n </resultMap>\n \n</mapper>"
} ]
},
"spring-data-mongodb" : {
"name" : "spring-data-mongodb",
"elementList" : [ {
"name" : "controller.java.vm",
"code" : "##导入宏定义、设置包名、类名、文件名##导入宏定义\n$!{define.vm}\n#setPackageSuffix(\"controller\")\n#setTableSuffix(\"Controller\")\n#save(\"/controller\", \"Controller.java\")\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n##定义服务名\n#set($serviceSortType = $!tool.append($!tableInfo.name, \"Service\"))\n#set($serviceType = $!tool.append($!tableInfo.savePackageName, \".service.\", $serviceSortType))\n#set($serviceVarName = $!tool.firstLowerCase($serviceSortType))\n\n#set($entityShortType = $!tableInfo.name)\n#set($entityType = $!tableInfo.psiClassObj.getQualifiedName())\n#set($entityVarName = $!tool.firstLowerCase($!tableInfo.name))\n#set($pkType = $!pk.type)\n\nimport $pkType;\nimport $entityType;\nimport $serviceType;\nimport lombok.AllArgsConstructor;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n\n/**\n * $!{tableInfo.comment}控制层\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@RestController\n@RequestMapping(\"/$!tool.firstLowerCase($!tableInfo.name)\")\n@AllArgsConstructor\npublic class $!{tableName} {\n\n\tprivate $serviceSortType $serviceVarName;\n\n\t/**\n\t * 获取$!{tableInfo.comment}列表(分页)\n\t */\n\t@GetMapping(\"/list\")\n\tpublic Page<$entityShortType> list(Pageable page) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * 获取$!{tableInfo.comment}\n\t */\n\t@GetMapping(\"/get\")\n\tpublic $entityShortType get($!pk.shortType id) {\n\t\treturn ${serviceVarName}.findById(id);\n\t}\n\n\t/**\n\t * 添加$!{tableInfo.comment}\n\t */\n\t@PostMapping(\"/add\")\n\tpublic void add(@RequestBody $entityShortType $entityVarName) {\n\t\t${serviceVarName}.save($entityVarName);\n\t}\n\n\n\t/**\n\t * 修改$!{tableInfo.comment}\n\t */\n\t@PostMapping(\"/update\")\n\tpublic void update(@RequestBody $entityShortType $entityVarName) {\n\t\t${serviceVarName}.save($entityVarName);\n\t}\n\n\t/**\n\t * 删除$!{tableInfo.comment}\n\t */\n\t@PostMapping(\"/delete\")\n\tpublic void delete($!pk.shortType id) {\n\t\t${serviceVarName}.deleteById(id);\n\t}\n\n}\n"
}, {
"name" : "entity.java.vm",
"code" : "##引入宏定义\n$!{define.vm}\n\n##使用宏定义设置回调(保存位置与文件后缀)\n#save(\"/entity\", \".java\")\n\n##使用宏定义设置包后缀\n#setPackageSuffix(\"entity\")\n\n##使用全局变量实现默认包导入\n$!{autoImport.vm}\nimport java.io.Serializable;\n\n##使用宏定义实现类注释信息\n#tableComment(\"实体类\")\npublic class $!{tableInfo.name} implements Serializable {\n private static final long serialVersionUID = $!tool.serial();\n#foreach($column in $tableInfo.fullColumn)\n #if(${column.comment})/**\n * ${column.comment}\n */#end\n\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n\n#foreach($column in $tableInfo.fullColumn)\n##使用宏定义实现get,set方法\n#getSetMethod($column)\n#end\n\n}\n"
}, {
"name" : "repository.java.vm",
"code" : "##导入宏定义、设置包名、类名、文件名##导入宏定义\n$!{define.vm}\n#setPackageSuffix(\"repository\")\n#setTableSuffix(\"Repository\")\n#save(\"/repository\", \"Repository.java\")\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n##实体类名、主键类名\n#set($entityShortType = $!tableInfo.name)\n#set($entityType = $!tableInfo.psiClassObj.getQualifiedName())\n#set($pkShortType = $!pk.shortType)\n#set($pkType = $!pk.type)\n\nimport $pkType;\nimport $entityType;\nimport org.springframework.data.mongodb.repository.MongoRepository;\n\n\n/**\n * $!{tableInfo.comment}持久层\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} extends MongoRepository<$entityShortType, $pkShortType> {\n\n}\n"
}, {
"name" : "service.java.vm",
"code" : "##导入宏定义、设置包名、类名、文件名##导入宏定义\n$!{define.vm}\n#setPackageSuffix(\"service\")\n#setTableSuffix(\"Service\")\n#save(\"/service\", \"Service.java\")\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n##实体类名、主键类名\n#set($entityShortType = $!tableInfo.name)\n#set($entityType = $!tableInfo.psiClassObj.getQualifiedName())\n#set($entityVarName = $!tool.firstLowerCase($!tableInfo.name))\n#set($pkShortType = $!pk.shortType)\n#set($pkType = $!pk.type)\n\nimport $pkType;\nimport $entityType;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport java.util.Collection;\nimport java.util.List;\n\n\n/**\n * $!{tableInfo.comment}业务层\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} {\n\n void save($entityShortType $entityVarName);\n\n void deleteById($pkShortType id);\n\n $entityShortType findById($pkShortType id);\n\n List<$entityShortType> findById(Collection<$pkShortType> ids);\n\n Page<$entityShortType> list(Pageable page);\n\n}\n"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##导入宏定义、设置包名、类名、文件名\n$!{define.vm}\n#setPackageSuffix(\"service.impl\")\n#setTableSuffix(\"ServiceImpl\")\n#save(\"/service/impl\", \"ServiceImpl.java\")\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n##业务层类名、持久层类名、实体名\n#set($serviceSortType = $!tool.append($!tableInfo.name, \"Service\"))\n#set($serviceType = $!tool.append($!tableInfo.savePackageName, \".service.\", $serviceSortType))\n#set($repositorySortType = $!tool.append($!tableInfo.name, \"Repository\"))\n#set($repositoryType = $!tool.append($!tableInfo.savePackageName, \".repository.\", $repositorySortType))\n#set($repositoryVarName = $!tool.firstLowerCase($!repositorySortType))\n#set($entityShortType = $!tableInfo.name)\n#set($entityType = $!tableInfo.psiClassObj.getQualifiedName())\n#set($entityVarName = $!tool.firstLowerCase($!tableInfo.name))\n#set($pkShortType = $!pk.shortType)\n#set($pkType = $!pk.type)\n\nimport $pkType;\nimport $entityType;\nimport $serviceType;\nimport $repositoryType;\nimport org.springframework.stereotype.Service;\nimport javax.annotation.Resource;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.stream.Collectors;\nimport java.util.stream.StreamSupport;\n\n\n/**\n * $!{tableInfo.comment}业务层\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@Service\npublic class $!{tableName} implements $!serviceSortType {\n\n\t@Resource\n private $repositorySortType $repositoryVarName;\n\n @Override\n public void save($entityShortType $entityVarName) {\n $!{repositoryVarName}.save($entityVarName);\n }\n\n @Override\n public void deleteById($pkShortType id) {\n $!{repositoryVarName}.delete(id);\n }\n\n @Override\n public $entityShortType findById($pkShortType id) {\n return $!{repositoryVarName}.findOne(id);\n }\n\n @Override\n public List<$entityShortType> findById(Collection<$pkShortType> ids) {\n Iterable<$entityShortType> iterable = $!{repositoryVarName}.findAll(ids);\n return StreamSupport.stream(iterable.spliterator(), false)\n .collect(Collectors.toList());\n }\n\n @Override\n public Page<$entityShortType> list(Pageable page) {\n return $!{repositoryVarName}.findAll(page);\n }\n\n}\n"
} ]
},
"Default" : {
"name" : "Default",
"elementList" : [ {
"name" : "controller.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Controller\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/controller\"))\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}controller;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}QueryDTO;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}DTO;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}VO;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.web.bind.annotation.*;\n\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.web.bind.annotation.RequestMapping; \nimport org.springframework.web.bind.annotation.RestController;\nimport org.springframework.validation.annotation.Validated;\nimport com.jtport.common.core.domain.R;\nimport com.jtport.common.core.web.page.TableDataInfo;\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表控制层\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@RestController\n@RequestMapping(\"$!tool.firstLowerCase($tableInfo.name)\")\npublic class $!{tableName} {\n /**\n * 服务对象\n */\n @Autowired\n private $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;\n\n /**\n * 分页查询\n *\n * @param dto 筛选条件 \n * @return 查询结果\n */\n @GetMapping(\"/page\")\n public R<TableDataInfo<$!{tableInfo.name}VO>> page(@Validated $!{tableInfo.name}QueryDTO dto) {\n\t\tTableDataInfo<$!{tableInfo.name}VO> page = this.$!{tool.firstLowerCase($tableInfo.name)}Service.queryPage(dto);\n return R.ok(page);\n\t\t\n\t}\n\n /**\n * 通过主键查询单条数据\n *\n * @param id 主键\n * @return 单条数据\n */\n\t@GetMapping(\"/detailById\")\n public R<$!{tableInfo.name}VO> detailById(@RequestParam(\"id\") String id) {\n return R.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.detailById(id));\n }\n\t\n\n /**\n * 新增数据\n *\n * @param dto 实体\n * @return 新增结果\n */ \n\t@PostMapping(\"/add\")\n public R<String> add(@RequestBody $!{tableInfo.name}DTO dto) {\n return this.$!{tool.firstLowerCase($tableInfo.name)}Service.add(dto);\n }\n\n /**\n * 编辑数据\n *\n * @param dto 实体\n * @return 编辑结果\n */\n @PostMapping(\"/update\")\n public R<String> update(@RequestBody $!{tableInfo.name}DTO dto) {\n return this.$!{tool.firstLowerCase($tableInfo.name)}Service.edit(dto);\n }\n\t\n\n /**\n * 删除数据\n *\n * @param id 主键\n * @return 删除是否成功\n */\n @DeleteMapping(value = \"/deleteById\")\n public R<Boolean> deleteById(@PathVariable $!pk.shortType id) {\n return this.$!{tool.firstLowerCase($tableInfo.name)}Service.deleteById(id);\n }\t\n\t\n\n}\n"
}, {
"name" : "service.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Service\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/service\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}DTO;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}VO;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}QueryDTO;\n\nimport com.jtport.common.core.domain.R;\nimport com.jtport.common.core.web.page.TableDataInfo;\nimport com.baomidou.mybatisplus.extension.service.IService;\n\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表服务接口\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} extends IService<$!{tableInfo.name}> {\n\n\n /**\n * 分页查询\n *\n * dto 筛选条件 \n * @return 查询结果\n */\n TableDataInfo<$!{tableInfo.name}VO> queryPage($!{tableInfo.name}QueryDTO dto);\n \n \n\t/**\n * 详情\n * @param id\n * @return\n */ \n\t$!{tableInfo.name}VO detailById(String id);\n\t\n\n\n /**\n * 新增数据\n *\n * @param dto 实例对象\n * @return 实例对象\n */\n R<String> add($!{tableInfo.name}DTO dto);\n\t\t\n\t\t\n\n /**\n * 修改数据\n *\n * dto 实例对象\n * @return 实例对象\n */ \n R<String> edit($!{tableInfo.name}DTO dto);\n\t\n\t\n\n /**\n * 通过主键删除数据\n *\n * @param $!pk.name 主键\n * @return 是否成功\n */\n R<Boolean> deleteById(String id);\n\n}"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"ServiceImpl\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/service/impl\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service.impl;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}VO;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}DTO;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}QueryDTO;\nimport $!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper; \nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.stereotype.Service; \nimport org.springframework.beans.factory.annotation.Autowired;\nimport com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;\nimport com.jtport.common.core.web.page.TableDataInfo;\nimport org.springframework.beans.BeanUtils;\nimport com.baomidou.mybatisplus.core.metadata.IPage;\nimport com.jtport.modules.check.adapter.util.PageConvertUtils;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.jtport.common.core.domain.R;\nimport com.jtport.common.core.utils.StringUtils;\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; \n\n\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表服务实现类\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@Service \npublic class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Mapper, $!{tableInfo.name}> implements $!{tableInfo.name}Service {\n\n \n\t@Autowired\n private $!{tableInfo.name}Mapper $!tool.firstLowerCase($!{tableInfo.name})Mapper;\n\n\n\n /**\n * 分页查询\n *\n * @param $!{tool.firstLowerCase($tableInfo.name)} 筛选条件\n * @param pageRequest 分页对象\n * @return 查询结果\n */\n @Override\n public TableDataInfo<$!{tableInfo.name}VO> queryPage($!{tableInfo.name}QueryDTO dto) {\n\t\tPage<$!{tableInfo.name}> page = new Page<>(dto.getPageNum(), dto.getPageSize());\n LambdaQueryWrapper<$!{tableInfo.name}> wrapper = new LambdaQueryWrapper<>();\n\n\t\tIPage<$!{tableInfo.name}> ipage = $!tool.firstLowerCase($!{tableInfo.name})Mapper.selectPage(page, wrapper);\n return PageConvertUtils.convertToTableDataInfo(ipage, doItem -> {\n $!{tableInfo.name}VO vo = new $!{tableInfo.name}VO();\n BeanUtils.copyProperties(doItem, vo);\n return vo;\n });\n }\n\t \n\t\n\t\n /**\n * 通过ID查询单条数据\n *\n * @param $!pk.name 主键\n * @return 实例对象\n */\n @Override\n public $!{tableInfo.name}VO detailById($!pk.shortType $!pk.name) {\n\t\t$!{tableInfo.name} entity = $!tool.firstLowerCase($!{tableInfo.name})Mapper.selectById(id);\n $!{tableInfo.name}VO vo = new $!{tableInfo.name}VO();\n BeanUtils.copyProperties(entity, vo);\n return vo;\n\t\t\n }\n\t\n\n /**\n * 新增数据\n *\n * @param dto 实例对象\n * @return 实例对象\n */\n @Override\n public R<String> add($!{tableInfo.name}DTO dto) {\n $!{tableInfo.name} entity = new $!{tableInfo.name}();\n BeanUtils.copyProperties(dto, entity);\n this.$!tool.firstLowerCase($!{tableInfo.name})Mapper.insert(entity);\n return R.ok();\n }\n\t\n\t\n\n /**\n * 修改数据\n *\n * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n * @return 实例对象 \n */\n @Override\n public R<String> edit($!{tableInfo.name}DTO dto) { \n\t\tif (dto == null || StringUtils.isEmpty(dto.getId())) {\n return R.fail(\"主键Id不能为空!\");\n }\n $!{tableInfo.name} entity = new $!{tableInfo.name}();\n BeanUtils.copyProperties(dto, entity);\n this.$!tool.firstLowerCase($!{tableInfo.name})Mapper.updateById(entity);\n return R.ok();\n }\n\n\t\n\n /**\n * 通过主键删除数据\n *\n * @param $!pk.name 主键\n * @return 是否成功\n */\n @Override\n public R<Boolean> deleteById($!pk.shortType $!pk.name) {\n\t\tint count = this.$!tool.firstLowerCase($!{tableInfo.name})Mapper.deleteById(Long.valueOf($!pk.name));\n return R.ok( count > 0 ? Boolean.TRUE : Boolean.FALSE);\n }\n\t\n\t\n\t\n}"
}, {
"name" : "entity.java.vm",
"code" : "##引入宏定义\n$!{define.vm}\n\n##使用宏定义设置回调(保存位置与文件后缀)\n#save(\"/entity\", \".java\")\n\n##使用宏定义设置包后缀\n#setPackageSuffix(\"entity\")\n\n##使用全局变量实现默认包导入\n$!{autoImport.vm}\nimport java.io.Serializable;\nimport com.baomidou.mybatisplus.annotation.FieldFill;\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.baomidou.mybatisplus.annotation.TableField;\nimport com.baomidou.mybatisplus.annotation.TableId;\nimport com.baomidou.mybatisplus.annotation.TableLogic;\nimport com.baomidou.mybatisplus.annotation.TableName;\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport com.jtport.common.core.web.domain.BaseEntity;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\n\n##使用宏定义实现类注释信息\n#tableComment(\"实体类\")\n\n@EqualsAndHashCode(callSuper = true)\n@Data\n@TableName(\"$!{tableInfo.obj.name}\")\npublic class $!{tableInfo.name} extends BaseEntity implements Serializable {\n\n private static final long serialVersionUID = $!tool.serial();\n\n @TableId(type = IdType.ASSIGN_ID)\n private String id;\n\n #foreach($column in $tableInfo.otherColumn)\n#if(${column.name} != \"delFlag\")\n #if(${column.comment})\n /** ${column.comment} */\n #end\n #if(${column.name} == \"createTime\" && ${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n @TableField(fill = FieldFill.INSERT)\n #elseif(${column.name} == \"updateTime\" && ${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n @TableField(fill = FieldFill.INSERT_UPDATE)\n #elseif(${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n #end\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n\n#end\n #end\n /**\n * 删除标识(0:未删除;1:已删除)\n */\n @TableLogic // 逻辑删除注解\n private Integer delFlag;\n \n}"
}, {
"name" : "mapper.xml.vm",
"code" : "##引入mybatis支持\n$!{mybatisSupport.vm}\n\n##设置保存名称与保存位置\n$!callback.setFileName($tool.append($!{tableInfo.name}, \"Mapper.xml\"))\n$!callback.setSavePath($tool.append($modulePath, \"/src/main/resources/mapper\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"$!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper\">\n\n <resultMap type=\"$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}\" id=\"$!{tableInfo.name}Map\">\n#foreach($column in $tableInfo.fullColumn)\n <result property=\"$!column.name\" column=\"$!column.obj.name\" jdbcType=\"$!column.ext.jdbcType\"/>\n#end\n </resultMap>\n\n \n\n</mapper>\n"
}, {
"name" : "Mapper.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Mapper\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/mapper\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}mapper;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}; \nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport org.apache.ibatis.annotations.Mapper; \n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层\n *\n * @author $!author\n * @since $!time.currTime()\n */ \n@Mapper\npublic interface $!{tableName} extends BaseMapper<$!{tableInfo.name}> {\n \n \n \n}\n"
}, {
"name" : "QueryDTO.java.vm",
"code" : "##引入宏定义\n$!{define.vm}\n\n##使用宏定义设置回调(保存位置与文件后缀)\n#save(\"/dto\", \"QueryDTO.java\")\n\n##使用宏定义设置包后缀\n#setPackageSuffix(\"dto\")\n\n##使用全局变量实现默认包导入\n$!{autoImport.vm} \nimport lombok.Data;\nimport com.fasterxml.jackson.annotation.JsonFormat; \n\n##使用宏定义实现类注释信息 \n#tableComment(\"QueryDTO\")\n@Data\npublic class $!{tableInfo.name}QueryDTO {\n \n private String id;\n\n #foreach($column in $tableInfo.otherColumn)\n#if(${column.name} != \"delFlag\")\n #if(${column.comment})\n /** ${column.comment} */\n #end\n #if(${column.name} == \"createTime\" && ${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n #elseif(${column.name} == \"updateTime\" && ${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n #elseif(${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n #end\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n\n#end\n #end\n\n}\n"
}, {
"name" : "VO.java.vm",
"code" : "##引入宏定义\n$!{define.vm}\n\n##使用宏定义设置回调(保存位置与文件后缀)\n#save(\"/vo\", \"VO.java\")\n\n##使用宏定义设置包后缀\n#setPackageSuffix(\"vo\")\n\n##使用全局变量实现默认包导入\n$!{autoImport.vm}\nimport lombok.Data;\nimport com.fasterxml.jackson.annotation.JsonFormat; \n\n##使用宏定义实现类注释信息\n#tableComment(\"VO\")\n@Data\npublic class $!{tableInfo.name}VO {\n \n private String id;\n\n #foreach($column in $tableInfo.otherColumn)\n#if(${column.name} != \"delFlag\")\n #if(${column.comment})\n /** ${column.comment} */\n #end\n #if(${column.name} == \"createTime\" && ${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n #elseif(${column.name} == \"updateTime\" && ${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n #elseif(${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n #end\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n\n#end\n #end\n\n}\n"
}, {
"name" : "DTO.java.vm",
"code" : "##引入宏定义\n$!{define.vm}\n\n##使用宏定义设置回调(保存位置与文件后缀)\n#save(\"/dto\", \"DTO.java\")\n\n##使用宏定义设置包后缀\n#setPackageSuffix(\"dto\")\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport lombok.Data;\n\n##使用宏定义实现类注释信息\n#tableComment(\"DTO\")\n@Data\npublic class $!{tableInfo.name}DTO extends $!{tableInfo.name} { \n\n\n}\n"
}, {
"name" : "BO.java.vm",
"code" : "##引入宏定义\n$!{define.vm}\n\n##使用宏定义设置回调(保存位置与文件后缀)\n#save(\"/bo\", \"BO.java\")\n\n##使用宏定义设置包后缀\n#setPackageSuffix(\"bo\")\n\n##使用全局变量实现默认包导入\n$!{autoImport.vm}\nimport lombok.Data;\nimport com.fasterxml.jackson.annotation.JsonFormat; \n\n##使用宏定义实现类注释信息\n#tableComment(\"BO\")\n@Data\npublic class $!{tableInfo.name}BO {\n \n private String id;\n\n #foreach($column in $tableInfo.otherColumn)\n#if(${column.name} != \"delFlag\")\n #if(${column.comment})\n /** ${column.comment} */\n #end\n #if(${column.name} == \"createTime\" && ${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n #elseif(${column.name} == \"updateTime\" && ${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n #elseif(${tool.getClsNameByFullName($column.type)} == \"Date\")\n @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\n #end\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n\n#end\n #end\n\n}\n"
}, {
"name" : "Mapping.java.vm",
"code" : "\n##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Mapping\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/mapping\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}mapping;\n\nimport $!{tableInfo.savePackageName}.dto.$!{tableInfo.name}DTO;\nimport $!{tableInfo.savePackageName}.bo.$!{tableInfo.name}BO;\nimport $!{tableInfo.savePackageName}.vo.$!{tableInfo.name}VO;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.dto.$!{tableInfo.name}QueryDTO;\nimport com.jtport.common.core.web.page.TableDataInfo; \nimport org.mapstruct.Mapper;\nimport org.mapstruct.ReportingPolicy;\nimport org.mapstruct.factory.Mappers;\nimport java.util.List;\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})映射类\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE, unmappedSourcePolicy = ReportingPolicy.IGNORE) \npublic interface $!{tableName} {\n \n $!{tableName} MAPPING = Mappers.getMapper($!{tableName}.class);\n \n \n\t$!{tableInfo.name}BO queryDtoToBO($!{tableInfo.name}QueryDTO queryDTO);\n\n\tTableDataInfo<$!{tableInfo.name}VO> boToVOList(TableDataInfo<$!{tableInfo.name}BO> boLIst);\n\n\tList<$!{tableInfo.name}BO> entityToBoList(List<$!{tableInfo.name}> entityList);\n\n\t$!{tableInfo.name}BO saveOrUpdateDtoToBo($!{tableInfo.name}DTO dto);\n\n\t$!{tableInfo.name} saveOrUpdateBoToEntity($!{tableInfo.name}BO bo);\n\n\t$!{tableInfo.name}BO entityToBo($!{tableInfo.name} entity);\n\n\t$!{tableInfo.name}VO boToVo($!{tableInfo.name}BO entity);\n\n}"
}, {
"name" : "controllerNew.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Controller\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/controller\"))\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}controller;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.DeleteMapping;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.RestController;\nimport com.jtport.common.core.domain.R;\nimport com.jtport.common.core.web.page.TableDataInfo;\nimport $!{tableInfo.savePackageName}.dto.$!{tableInfo.name}QueryDTO;\nimport $!{tableInfo.savePackageName}.bo.$!{tableInfo.name}BO;\nimport $!{tableInfo.savePackageName}.dto.$!{tableInfo.name}DTO;\nimport $!{tableInfo.savePackageName}.vo.$!{tableInfo.name}VO;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport $!{tableInfo.savePackageName}.mapping.$!{tableInfo.name}Mapping;\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表控制层\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@RestController\n@RequestMapping(\"/$!tool.firstLowerCase($tableInfo.name)\")\npublic class $!{tableName} {\n\n /**\n * 服务对象\n */\n @Autowired\n private $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;\n\n /**\n * 分页查询\n *\n * @param dto 筛选条件\n * @return 查询结果\n */\n @GetMapping(\"/page\")\n public R<TableDataInfo<$!{tableInfo.name}VO>> page(@Validated $!{tableInfo.name}QueryDTO dto) {\n $!{tableInfo.name}BO bo = $!{tableInfo.name}Mapping.MAPPING.queryDtoToBO(dto);\n TableDataInfo<$!{tableInfo.name}BO> boList = this.$!{tool.firstLowerCase($tableInfo.name)}Service.queryPage(bo);\n return R.ok($!{tableInfo.name}Mapping.MAPPING.boToVOList(boList));\n }\n\n /**\n * 通过主键查询单条数据\n *\n * @param id 主键\n * @return 单条数据\n */\n @GetMapping(\"/detailById\")\n public R<$!{tableInfo.name}VO> detailById(@RequestParam(\"id\") String id) {\n $!{tableInfo.name}BO bo = this.$!{tool.firstLowerCase($tableInfo.name)}Service.detailById(id);\n return R.ok($!{tableInfo.name}Mapping.MAPPING.boToVo(bo));\n }\n\n /**\n * 新增数据\n *\n * @param dto 实体\n * @return 新增结果\n */\n @PostMapping(\"/add\")\n public R<String> add(@RequestBody $!{tableInfo.name}DTO dto) {\n $!{tableInfo.name}BO bo = $!{tableInfo.name}Mapping.MAPPING.saveOrUpdateDtoToBo(dto);\n return this.$!{tool.firstLowerCase($tableInfo.name)}Service.save(bo);\n }\n\n /**\n * 编辑数据\n *\n * @param dto 实体\n * @return 编辑结果\n */\n @PostMapping(\"/update\")\n public R<String> update(@RequestBody $!{tableInfo.name}DTO dto) {\n $!{tableInfo.name}BO bo = $!{tableInfo.name}Mapping.MAPPING.saveOrUpdateDtoToBo(dto);\n return this.$!{tool.firstLowerCase($tableInfo.name)}Service.update(bo);\n }\n\n /**\n * 删除数据\n *\n * @param id 主键\n * @return 删除是否成功\n */\n @DeleteMapping(\"/deleteById\")\n public R<Boolean> deleteById(@PathVariable $!pk.shortType id) {\n return this.$!{tool.firstLowerCase($tableInfo.name)}Service.deleteById(id);\n }\n}"
}, {
"name" : "serviceNew.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Service\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/service\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service;\n\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport com.jtport.common.core.domain.R;\nimport com.jtport.common.core.web.page.TableDataInfo;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.bo.$!{tableInfo.name}BO;\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表服务接口\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} extends IService<$!{tableInfo.name}> {\n\n /**\n * 分页查询\n *\n * @param bo 筛选条件\n * @return 查询结果\n */\n TableDataInfo<$!{tableInfo.name}BO> queryPage($!{tableInfo.name}BO bo);\n\n /**\n * 详情\n *\n * @param id 主键\n * @return 业务对象\n */\n $!{tableInfo.name}BO detailById(String id);\n\n /**\n * 新增数据\n *\n * @param bo 实例对象\n * @return 操作结果\n */\n R<String> save($!{tableInfo.name}BO bo);\n\n /**\n * 修改数据\n *\n * @param bo 实例对象\n * @return 操作结果\n */\n R<String> update($!{tableInfo.name}BO bo);\n\n /**\n * 通过主键删除数据\n *\n * @param id 主键\n * @return 是否成功\n */\n R<Boolean> deleteById(String id);\n}"
}, {
"name" : "serviceImplNew.java.vm",
"code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"ServiceImpl\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/service/impl\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service.impl;\n\nimport java.util.List;\nimport com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport com.jtport.common.core.domain.R;\nimport com.jtport.common.core.utils.StringUtils;\nimport com.jtport.common.core.web.page.PageUtil;\nimport com.jtport.common.core.web.page.TableDataInfo;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.bo.$!{tableInfo.name}BO;\nimport $!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper;\nimport $!{tableInfo.savePackageName}.mapping.$!{tableInfo.name}Mapping;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表服务实现类\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@Service\npublic class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Mapper, $!{tableInfo.name}> implements $!{tableInfo.name}Service {\n\n @Autowired\n private $!{tableInfo.name}Mapper $!tool.firstLowerCase($!{tableInfo.name})Mapper;\n\n /**\n * 分页查询\n *\n * @param bo 筛选条件\n * @return 查询结果\n */\n @Override\n public TableDataInfo<$!{tableInfo.name}BO> queryPage($!{tableInfo.name}BO bo) {\n PageUtil.startPage();\n LambdaQueryWrapper<$!{tableInfo.name}> wrapper = new LambdaQueryWrapper<>();\n\n List<$!{tableInfo.name}> list = $!tool.firstLowerCase($!{tableInfo.name})Mapper.selectList(wrapper);\n return PageUtil.getDataTable(list, $!{tableInfo.name}Mapping.MAPPING::entityToBoList);\n }\n\n /**\n * 通过ID查询单条数据\n *\n * @param $!pk.name 主键\n * @return 实例对象\n */\n @Override\n public $!{tableInfo.name}BO detailById($!pk.shortType $!pk.name) {\n $!{tableInfo.name} entity = $!tool.firstLowerCase($!{tableInfo.name})Mapper.selectById($!pk.name);\n return $!{tableInfo.name}Mapping.MAPPING.entityToBo(entity);\n }\n\n /**\n * 新增数据\n *\n * @param bo 实例对象\n * @return 实例对象\n */\n @Override\n public R<String> save($!{tableInfo.name}BO bo) {\n $!{tableInfo.name} entity = $!{tableInfo.name}Mapping.MAPPING.saveOrUpdateBoToEntity(bo);\n this.$!tool.firstLowerCase($!{tableInfo.name})Mapper.insert(entity);\n return R.ok();\n }\n\n /**\n * 修改数据\n *\n * @param bo 实例对象\n * @return 实例对象\n */\n @Override\n public R<String> update($!{tableInfo.name}BO bo) {\n if (bo == null || StringUtils.isEmpty(bo.getId())) {\n return R.fail(\"主键Id不能为空!\");\n }\n $!{tableInfo.name} entity = $!{tableInfo.name}Mapping.MAPPING.saveOrUpdateBoToEntity(bo);\n this.$!tool.firstLowerCase($!{tableInfo.name})Mapper.updateById(entity);\n return R.ok();\n }\n\n /**\n * 通过主键删除数据\n *\n * @param $!pk.name 主键\n * @return 是否成功\n */\n @Override\n public R<Boolean> deleteById($!pk.shortType $!pk.name) {\n int count = this.$!tool.firstLowerCase($!{tableInfo.name})Mapper.deleteById(Long.valueOf($!pk.name));\n return R.ok(count > 0 ? Boolean.TRUE : Boolean.FALSE);\n }\n}"
} ]
}
},
"columnConfig" : {
"Default" : {
"name" : "Default",
"elementList" : [ {
"title" : "disable",
"type" : "BOOLEAN",
"selectValue" : ""
}, {
"title" : "support",
"type" : "SELECT",
"selectValue" : "add,edit,query,del,ui"
} ]
}
},
"globalConfig" : {
"Default" : {
"name" : "Default",
"elementList" : [ {
"name" : "autoImport.vm",
"value" : "##自动导入包(仅导入实体属性需要的包,通常用于实体类)\n#foreach($import in $importList)\nimport $!import;\n#end"
}, {
"name" : "define.vm",
"value" : "##(Velocity宏定义)\n\n##定义设置表名后缀的宏定义,调用方式:#setTableSuffix(\"Test\")\n#macro(setTableSuffix $suffix)\n #set($tableName = $!tool.append($tableInfo.name, $suffix))\n#end\n\n##定义设置包名后缀的宏定义,调用方式:#setPackageSuffix(\"Test\")\n#macro(setPackageSuffix $suffix)\n#if($suffix!=\"\")package #end#if($tableInfo.savePackageName!=\"\")$!{tableInfo.savePackageName}.#{end}$!suffix;\n#end\n\n##定义直接保存路径与文件名简化的宏定义,调用方式:#save(\"/entity\", \".java\")\n#macro(save $path $fileName)\n $!callback.setSavePath($tool.append($tableInfo.savePath, $path))\n $!callback.setFileName($tool.append($tableInfo.name, $fileName))\n#end\n\n##定义表注释的宏定义,调用方式:#tableComment(\"注释信息\")\n#macro(tableComment $desc)\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})$desc\n *\n * @author $!author\n * @since $!time.currTime()\n */\n#end\n\n##定义GET,SET方法的宏定义,调用方式:#getSetMethod($column)\n#macro(getSetMethod $column)\n\n public $!{tool.getClsNameByFullName($column.type)} get$!{tool.firstUpperCase($column.name)}() {\n return $!{column.name};\n }\n\n public void set$!{tool.firstUpperCase($column.name)}($!{tool.getClsNameByFullName($column.type)} $!{column.name}) {\n this.$!{column.name} = $!{column.name};\n }\n#end"
}, {
"name" : "init.vm",
"value" : "##初始化区域\n\n##去掉表的t_前缀\n$!tableInfo.setName($tool.getClassName($tableInfo.obj.name.replaceFirst(\"book_\",\"\")))\n\n##参考阿里巴巴开发手册,POJO 类中布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误\n#foreach($column in $tableInfo.fullColumn)\n#if($column.name.startsWith(\"is\") && $column.type.equals(\"java.lang.Boolean\"))\n $!column.setName($tool.firstLowerCase($column.name.substring(2)))\n#end\n#end\n\n##实现动态排除列\n#set($temp = $tool.newHashSet(\"testCreateTime\", \"otherColumn\"))\n#foreach($item in $temp)\n #set($newList = $tool.newArrayList())\n #foreach($column in $tableInfo.fullColumn)\n #if($column.name!=$item)\n ##带有反回值的方法调用时使用$tool.call来消除返回值\n $tool.call($newList.add($column))\n #end\n #end\n ##重新保存\n $tableInfo.setFullColumn($newList)\n#end\n\n##对importList进行篡改\n#set($temp = $tool.newHashSet())\n#foreach($column in $tableInfo.fullColumn)\n #if(!$column.type.startsWith(\"java.lang.\"))\n ##带有反回值的方法调用时使用$tool.call来消除返回值\n $tool.call($temp.add($column.type))\n #end\n#end\n##覆盖\n#set($importList = $temp)"
}, {
"name" : "mybatisSupport.vm",
"value" : "##针对Mybatis 进行支持,主要用于生成xml文件\n#foreach($column in $tableInfo.fullColumn)\n ##储存列类型\n $tool.call($column.ext.put(\"sqlType\", $tool.getField($column.obj.dataType, \"typeName\")))\n #if($tool.newHashSet(\"java.lang.String\").contains($column.type))\n #set($jdbcType=\"VARCHAR\")\n #elseif($tool.newHashSet(\"java.lang.Boolean\", \"boolean\").contains($column.type))\n #set($jdbcType=\"BOOLEAN\")\n #elseif($tool.newHashSet(\"java.lang.Byte\", \"byte\").contains($column.type))\n #set($jdbcType=\"BYTE\")\n #elseif($tool.newHashSet(\"java.lang.Integer\", \"int\", \"java.lang.Short\", \"short\").contains($column.type))\n #set($jdbcType=\"INTEGER\")\n #elseif($tool.newHashSet(\"java.lang.Long\", \"long\").contains($column.type))\n #set($jdbcType=\"INTEGER\")\n #elseif($tool.newHashSet(\"java.lang.Float\", \"float\", \"java.lang.Double\", \"double\").contains($column.type))\n #set($jdbcType=\"NUMERIC\")\n #elseif($tool.newHashSet(\"java.util.Date\", \"java.sql.Timestamp\", \"java.time.Instant\", \"java.time.LocalDateTime\", \"java.time.OffsetDateTime\", \"\tjava.time.ZonedDateTime\").contains($column.type))\n #set($jdbcType=\"TIMESTAMP\")\n #elseif($tool.newHashSet(\"java.sql.Date\", \"java.time.LocalDate\").contains($column.type))\n #set($jdbcType=\"TIMESTAMP\")\n #else\n ##其他类型\n #set($jdbcType=\"VARCHAR\")\n #end\n $tool.call($column.ext.put(\"jdbcType\", $jdbcType))\n#end\n\n##定义宏,查询所有列\n#macro(allSqlColumn)#foreach($column in $tableInfo.fullColumn)$column.obj.name#if($velocityHasNext), #end#end#end\n"
}, {
"name" : "baseEntity.vm",
"value" : "com.xiaobing.common.base.BaseEntity"
}, {
"name" : "baseController.vm",
"value" : "import com.xiaobing.common.base.BaseController;"
} ]
}
}
}

9439

被折叠的 条评论
为什么被折叠?



