* $!{table.comment} *
* * @author ${author} * @since ${date} */ #if(${entityLombokModel}) @Data #if(${superEntityClass}) @EqualsAndHashCode(callSuper = true) #else @EqualsAndHashCode(callSuper = false) #end @Accessors(chain = true) #end #if(${table.convert}) @TableName("${table.name}") #end #if(${swagger2}) @ApiModel(value="${entity}对象", description="$!{table.comment}") #end #if(${superEntityClass}) public class ${entity} extends ${superEntityClass}#if(${activeRecord})<${entity}>#end { #elseif(${activeRecord}) public class ${entity} extends Model<${entity}> { #else public class ${entity} implements Serializable { #end #if(${entitySerialVersionUID}) private static final long serialVersionUID=1L; #end #set($arr = []) ## ---------- BEGIN 字段循环遍历 ---------- #foreach($field in ${table.fields}) #if(${field.keyFlag}) #set($keyPropertyName=${field.propertyName}) #end #if("$!field.comment" != "") #if(${swagger2}) @ApiModelProperty(value = "${field.comment}") #else /** * ${field.comment} */ #end #end #if(${field.keyFlag}) ## 主键 #if(${field.keyIdentityFlag}) @TableId(value = "${field.name}", type = IdType.AUTO) #elseif(!$null.isNull(${idType}) && "$!idType" != "") @TableId(value = "${field.name}", type = IdType.${idType}) #elseif(${field.convert}) @TableId("${field.name}") #end ## 普通字段 #elseif(${field.fill}) ## ----- 存在字段填充设置 ----- #if(${field.convert}) @TableField(value = "${field.name}", fill = FieldFill.${field.fill}) #else @TableField(fill = FieldFill.${field.fill}) #end #elseif(${field.convert}) @TableField("${field.name}") #end ## 乐观锁注解 #if(${versionFieldName}==${field.name}) @Version #end ## 逻辑删除注解 #if(${logicDeleteFieldName}==${field.name}) @TableLogic #end private ${field.propertyType} ${field.propertyName}; #if(${field.comment.length()} > 0) #if($!field.comment.indexOf("{") != -1 && $!field.comment.indexOf("}") != -1 && $!field.comment.indexOf(";") != -1 && $!field.comment.indexOf(",") != -1) #set($object_str = $!field.comment.substring($!field.comment.indexOf("{") + 1,$!field.comment.indexOf("}"))) ## ---------- 添加到数组 组合信息 ---------- #set($tmp = $arr.add($object_str+"~~"+${field.propertyName}+"~"+$field.propertyType+"~"+$field.name)) #end #end #end ## ---------- 生成常量 ---------- #foreach($comment_element_space in $!{arr}) ## ---------- 分离常量 与 配置 ---------- #set($comment_element_join = $!{comment_element_space.replace(" ","").split("~~")}) ## ---------- 常量 ---------- #set($comment_element_list = $!comment_element_join.get(0)) ## ---------- 配置 ---------- #set($comment_element_last = $!comment_element_join.get(1)) ## ---------- 拆分配置 ---------- #set($comment_element_arr = $!{comment_element_last.split("~")}) #set($propertyName = $!comment_element_arr.get(0)) #set($propertyType = $!comment_element_arr.get(1)) #set($fieldName = $!comment_element_arr.get(2)) ## ---------- 拆分常量 ---------- #set($element_list = $!comment_element_list.split(";")) #foreach($comment_element in $!{element_list}) #set($firstName = $!comment_element.substring(0,$!comment_element.indexOf(":"))) #set($firstIndex = $!comment_element.indexOf(":") + 1) #set($lastIndex = $!comment_element.indexOf(":") + 2) #set($meanIndex = $!comment_element.indexOf(",") + 1) ## 常量值 #set($lastName = $!comment_element.substring($firstIndex,$lastIndex)) ## 常亮注释 #set($meanName = $!comment_element.substring($meanIndex,$!comment_element.length())) /** * ${propertyName}:${meanName} */ public final static ${propertyType} $!fieldName.toUpperCase()_$!firstName.toUpperCase() = ${lastName}; #end #end ## ---------- END 字段循环遍历 ---------- #if(!${entityLombokModel}) #foreach($field in ${table.fields}) #if(${field.propertyType.equals("boolean")}) #set($getprefix="is") #else #set($getprefix="get") #end public ${field.propertyType} ${getprefix}${field.capitalName}() { return ${field.propertyName}; } #if(${entityBuilderModel}) public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) { #else public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) { #end this.${field.propertyName} = ${field.propertyName}; #if(${entityBuilderModel}) return this; #end } #end ## --foreach end--- #end ## --end of #if(!${entityLombokModel})-- #if(${entityColumnConstant}) #foreach($field in ${table.fields}) public static final String ${field.name.toUpperCase()} = "${field.name}"; #end #end #if(${activeRecord}) @Override protected Serializable pkVal() { #if(${keyPropertyName}) return this.${keyPropertyName}; #else return null; #end } #end #if(!${entityLombokModel}) @Override public String toString() { return "${entity}{" + #foreach($field in ${table.fields}) #if($!{foreach.index}==0) "${field.propertyName}=" + ${field.propertyName} + #else ", ${field.propertyName}=" + ${field.propertyName} + #end #end "}"; } #end } ``` ## mapper.java.vm ```java package ${package.Mapper}; import ${package.Entity}.${entity}; import ${superMapperClassPackage}; import java.util.List; import org.apache.ibatis.annotations.Param; /** ** $!{table.comment} Mapper 接口 *
* * @author ${author} * @since ${date} */ #if(${kotlin}) interface ${table.mapperName} : ${superMapperClass}<${entity}> #else public interface ${table.mapperName} extends ${superMapperClass}<${entity}> { /** * 批量添加 * @param list 数组 * @return * @author Mr.Xi * @date ${date} */ int insertBatch(@Param("list") List<${entity}> list); } #end ``` ## mapper.xml.vm ```xml* $!{table.comment} 服务类 *
* * @author ${author} * @since ${date} */ #if(${kotlin}) interface ${table.serviceName} : ${superServiceClass}<${entity}> #else public interface ${table.serviceName} extends ${superServiceClass}<${entity}> { /** * 批量添加 * @param list * @return * @author Mr.Xi * @date 2020/8/14 下午8:35 */ int addList(List<${entity}> list); } #end ``` ## serviceImpl.java.vm ```java package ${package.ServiceImpl}; import ${package.Entity}.${entity}; import ${package.Mapper}.${table.mapperName}; import ${package.Service}.${table.serviceName}; import ${superServiceImplClassPackage}; import org.springframework.stereotype.Service; import java.util.List; /** ** $!{table.comment} 服务实现类 *
* * @author ${author} * @since ${date} */ @Service #if(${kotlin}) open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>(), ${table.serviceName} { } #else public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}> implements ${table.serviceName} { /** * 批量添加 * @param list * @return * @author Mr.Xi * @date 2020/8/14 下午8:35 */ @Override public int addList(List<${entity}> list){ return baseMapper.insertBatch(list); } } #end ``` ## 填充拦截器 MybatisPlusMetaObjectHandler ```java package com.xxx.core.handler; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.xxx.common.utils.JwtTokenUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; import java.time.LocalDateTime; /** * mybatis plus 自动填充设置 * * @author Mr.Xi * @date 2020/08/13 */ @Slf4j @Component public class MybatisPlusMetaObjectHandler implements MetaObjectHandler { /** * 插入自动填充 * * @param metaObject * @return void * @author Mr.Xi * @date 2020/08/13 */ @Override public void insertFill(MetaObject metaObject) { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); String[] names = metaObject.getGetterNames(); if (attributes != null) { # 此处逻辑自己修改 HttpServletRequest request = attributes.getRequest(); String token = JwtTokenUtils.getToken(request); String username = StringUtils.isNotBlank(token) ? JwtTokenUtils.getIdStringFromToken(token) : null; if (names != null && names.length > 0) { for (String name : names) { if ("createBy".equals(name)) { this.setFieldValByName("createBy", username, metaObject); } else if ("createTime".equals(name)) { this.setFieldValByName("createTime", LocalDateTime.now(), metaObject); } else if ("updateBy".equals(name)) { this.setFieldValByName("updateBy", username, metaObject); } else if ("updateTime".equals(name)) { this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject); } } } else { log.warn("mybatis-plus 自动更新 获取属性失败"); } } else { log.info("任务调度默认值处理"); for (String name : names) { if ("createTime".equals(name)) { this.setFieldValByName("createTime", LocalDateTime.now(), metaObject); } else if ("updateTime".equals(name)) { this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject); } } } } /** * 更新自动填充 * * @param metaObject * @return void * @author Mr.Xi * @date 2020/08/13 */ @Override public void updateFill(MetaObject metaObject) { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); if (attributes != null) { HttpServletRequest request = attributes.getRequest(); # 此处逻辑自己修改 String token = JwtTokenUtils.getToken(request); String username = StringUtils.isNotBlank(token) ? JwtTokenUtils.getIdStringFromToken(token) : null; if (StringUtils.isNotBlank(token) && StringUtils.isNotBlank(username)) { String[] names = metaObject.getGetterNames(); if (names != null && names.length > 0) { for (String name : names) { if ("updateBy".equals(name)) { this.setFieldValByName("updateBy", username, metaObject); } else if ("updateTime".equals(name)) { this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject); } } } else { log.warn("mybatis-plus 自动更新 获取属性失败"); } }else{ this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject); } }else{ this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject); } } } ```