首先找到模版位置
找到使用的模版,我用的是MybatisPlus-H,这是我新建的一个模版
controller.java.vm模版
##导入宏定义
$!{define.vm}##设置表后缀(宏定义)
#setTableSuffix("Controller")##保存文件(宏定义)
#save("/controller", "Controller.java")##包路径(宏定义)
#setPackageSuffix("controller")##定义服务名
#set($serviceName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), "Service"))##定义实体对象名
#set($entityName = $!tool.firstLowerCase($!tableInfo.name))import $!{tableInfo.savePackageName}.entity.$!tableInfo.name;
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;
import java.util.List;
import com.hao.utils.AjaxJson;
import java.lang.String;##表注释(宏定义)
#tableComment("表控制层")
@RestController
@RequestMapping("$!tool.firstLowerCase($!tableInfo.name)")
public class $!{tableName} {/*** 服务对象*/@Resourceprivate $!{tableInfo.name}Service $!{serviceName};/*** 分页查询所有数据** @param $!entityName 查询实体* @return 所有数据*/@RequestMappingpublic AjaxJson getPage(@RequestBody $!tableInfo.name $!entityName) {return AjaxJson.getSuccessData(this.$!{serviceName}.getPage($!entityName));}/*** 通过主键查询单条数据** @return 单条数据*/@RequestMappingpublic AjaxJson selectOne(@RequestBody $!tableInfo.name $!entityName) {return AjaxJson.getSuccessData(this.$!{serviceName}.selectOne($!entityName));}/*** 新增数据** @param $!entityName 实体对象* @return 新增结果*/@RequestMapping("addOne")public AjaxJson addOne(@RequestBody $!tableInfo.name $!entityName) {return AjaxJson.getSuccessData(this.$!{serviceName}.save($!entityName));}/*** 修改数据** @param $!entityName 实体对象* @return 修改结果*/@RequestMapping("updateOne")public AjaxJson updateOne(@RequestBody $!tableInfo.name $!entityName) {return AjaxJson.getSuccessData(this.$!{serviceName}.updateOne($!entityName));}/*** 删除数据** @param idList 主键结合* @return 删除结果*/@RequestMapping("deleteOne")public AjaxJson deleteOne(@RequestBody List<String> idList) {this.$!{serviceName}.removeByIds(idList);return AjaxJson.getSuccess();}
}
dao.java.vm模版
##导入宏定义
$!{define.vm}##设置表后缀(宏定义)
#setTableSuffix("Dao")##保存文件(宏定义)
#save("/dao", "Dao.java")##包路径(宏定义)
#setPackageSuffix("dao")import java.util.List;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import $!{tableInfo.savePackageName}.entity.$!tableInfo.name;
import com.baomidou.mybatisplus.core.metadata.IPage;##表注释(宏定义)
#tableComment("表数据库访问层")
public interface $!{tableName} extends BaseMapper<$!tableInfo.name> {/**
* 批量新增数据(MyBatis原生foreach方法)
*
* @param entities List<$!{tableInfo.name}> 实例对象列表
* @return 影响行数
*/
int insertBatch(@Param("entities") List<$!{tableInfo.name}> entities);/**
* 批量新增或按主键更新数据(MyBatis原生foreach方法)
*
* @param entities List<$!{tableInfo.name}> 实例对象列表
* @return 影响行数
* @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
*/
int insertOrUpdateBatch(@Param("entities") List<$!{tableInfo.name}> entities);IPage<$!{tableInfo.name}> getPage(IPage<$!tableInfo.name> page,$!tableInfo.name body);$!{tableInfo.name} selectOne($!tableInfo.name body);
}
entity.java.vm模版
##导入宏定义
$!{define.vm}##保存文件(宏定义)
#save("/entity", ".java")##包路径(宏定义)
#setPackageSuffix("entity")##自动导入包(全局变量)
$!autoImportimport java.io.Serializable;
import com.baomidou.mybatisplus.annotation.TableName;import com.hao.utils.*;
import lombok.Data;##表注释(宏定义)
#tableComment("表实体类")
@Data
@TableName("$!{tableInfo.obj.name}")
public class $!{tableInfo.name} extends SuperModel {
#foreach($column in $tableInfo.fullColumn)#if(${column.name} != "createTime" && ${column.name} != "updateTime" && ${column.name} != "isDelete")#if(${column.comment})//${column.comment}#endprivate $!{tool.getClsNameByFullName($column.type)} $!{column.name};#end
#end}
mapper.xml.vm模版
##引入mybatis支持
$!{mybatisSupport.vm}##设置保存名称与保存位置
$!callback.setFileName($tool.append($!{tableInfo.name}, "Dao.xml"))
$!callback.setSavePath($tool.append($modulePath, "/src/main/resources/mapper"))##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())#set($pk = $tableInfo.pkColumn.get(0))
#end<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="$!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao"><resultMap type="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}" id="$!{tableInfo.name}Map">
#foreach($column in $tableInfo.fullColumn)<result property="$!column.name" column="$!column.obj.name" jdbcType="$!column.ext.jdbcType"/>
#end</resultMap><!-- 批量插入 --><insert id="insertBatch" keyProperty="$!pk.name" useGeneratedKeys="true">insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)values<foreach collection="entities" item="entity" separator=",">(#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)</foreach></insert><!-- 批量插入或按主键更新 --><insert id="insertOrUpdateBatch" keyProperty="$!pk.name" useGeneratedKeys="true">insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)values<foreach collection="entities" item="entity" separator=",">(#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)</foreach>on duplicate key update#foreach($column in $tableInfo.otherColumn)$!column.obj.name = values($!column.obj.name) #if($velocityHasNext), #end#end</insert><select id="getPage" resultMap = "$!{tableInfo.name}Map">SELECT* FROM$!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name} WHEREis_delete = 0</select><select id="selectOne" resultMap = "$!{tableInfo.name}Map">SELECT* FROM$!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name} WHEREis_delete = 0 AND id = #{body.id}</select></mapper>
service.java.vm模版
##导入宏定义
$!{define.vm}##设置表后缀(宏定义)
#setTableSuffix("Service")##保存文件(宏定义)
#save("/service", "Service.java")##包路径(宏定义)
#setPackageSuffix("service")##定义实体对象名
#set($entityName = $!tool.firstLowerCase($!tableInfo.name))import com.baomidou.mybatisplus.extension.service.IService;
import $!{tableInfo.savePackageName}.entity.$!tableInfo.name;
import java.util.List;##表注释(宏定义)
#tableComment("表服务接口")
public interface $!{tableName} extends IService<$!tableInfo.name> {Object getPage($!tableInfo.name $!entityName);Object addOne($!tableInfo.name $!entityName);Object updateOne($!tableInfo.name $!entityName);Object selectOne($!tableInfo.name $!entityName);void removeByIds(List<String> idList);}
serviceImpl.java.vm模版
##导入宏定义
$!{define.vm}##设置表后缀(宏定义)
#setTableSuffix("ServiceImpl")##保存文件(宏定义)
#save("/service/impl", "ServiceImpl.java")##包路径(宏定义)
#setPackageSuffix("service.impl")##定义实体对象名
#set($entityName = $!tool.firstLowerCase($!tableInfo.name))import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao;
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;import java.util.List;##表注释(宏定义)
#tableComment("表服务实现类")
@Service("$!tool.firstLowerCase($tableInfo.name)Service")
public class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Dao, $!{tableInfo.name}> implements $!{tableInfo.name}Service {public Object getPage($!tableInfo.name $!entityName){IPage<$!tableInfo.name> page = new Page<$!tableInfo.name>();IPage<$!tableInfo.name> data = this.baseMapper.getPage(page,$!entityName);return data;
}public Object addOne($!tableInfo.name $!entityName){save($!entityName);return $!entityName;
}public Object updateOne($!tableInfo.name $!entityName){updateById($!entityName);return $!entityName;
}public Object selectOne($!tableInfo.name $!entityName){$!tableInfo.name one = this.baseMapper.selectOne($!entityName);return one;
}public void removeByIds(List<String> idList){removeByIds(idList);
}}
语法规范
说明文档:属性$author 设置中的作者 java.lang.String$modulePath 选中的module路径 java.lang.String$projectPath 项目绝对路径 java.lang.String对象$tableInfo 表对象obj 表原始对象 com.intellij.database.model.DasTablepreName 表前缀 java.lang.Stringname 表名(转换后的首字母大写)java.lang.Stringcomment 表注释 java.lang.StringfullColumn 所有列 java.util.List<ColumnInfo>pkColumn 主键列 java.util.List<ColumnInfo>otherColumn 其他列 java.util.List<ColumnInfo>,除主键以外的列savePackageName 保存的包名 java.lang.StringsavePath 保存路径 java.lang.StringsaveModelName 保存的model名称 java.lang.StringcolumnInfo 列对象obj 列原始对象 com.intellij.database.model.DasColumnname 列名(首字母小写) java.lang.Stringcomment 列注释 java.lang.Stringtype 列类型(类型全名) java.lang.StringshortType 列类型(短类型) java.lang.Stringcustom 是否附加列 java.lang.Booleanext 附加字段(Map类型) java.lang.Map<java.lang.String, java.lang.Object>$tableInfoList java.util.List<TableInfo>所有选中的表$importList 所有需要导入的包集合 java.util.Set<java.lang.String>回调&callback 回调对象setFileName(String) 设置文件储存名字setSavePath(String) 设置文件储存路径,默认使用选中路径setReformat(Boolean) 设置是否重新格式化生成后的代码,默认为界面选定值setWriteFile(Boolean) 设置是否生成文件,默认为true工具$toolfirstUpperCase(String name) 首字母大写方法firstLowerCase(String name) 首字母小写方法getClsNameByFullName(String fullName) 通过包全名获取类名getJavaName(String name) 将下划线分割字符串转驼峰命名(属性名)getClassName(String name) 将下划线分割字符串转驼峰命名(类名)hump2Underline(String str) 将驼峰字符串转下划线字符串append(Object... objs) 多个数据进行拼接newHashSet(Object... objs) 创建一个HashSet对象newArrayList(Object... objs) 创建一个ArrayList对象newLinkedHashMap() 创建一个LinkedHashMap()对象newHashMap() 创建一个HashMap()对象getField(Object obj, String fieldName) 获取对象的属性值,可以访问任意修饰符修饰的属性.配合debug方法使用.call(Object... objs) 空白执行方法,用于调用某些方法时消除返回值debug(Object obj) 调式方法,用于查询对象结构.可查看对象所有属性与public方法serial() 随机获取序列化的UIDservice(String serviceName, Object... param)远程服务调用parseJson(String) 将字符串转Map对象toJson(Object, Boolean) 将对象转json对象,Boolean:是否格式化json,不填时为不格式化。toUnicode(String, Boolean) 将String转换为unicode形式,Boolean:是否转换所有符号,不填时只转换中文及中文符号。$timecurrTime(String format) 获取当前时间,指定时间格式(默认:yyyy-MM-dd HH:mm:ss)$generateServicerun(String, Map<String,Object>) 代码生成服务,参数1:模板名称,参数2:附加参数。$dasUtil Database提供的工具类,具体可方法请查看源码,适用于高端玩家$dasUtil.$dbUtil Database提供的工具类,具体可方法请查看源码,适用于高端玩家