这个是在模板的基础上改造的,改造幅度不大,毕竟是测试,看个人需求可以改造更多
- MyControllerTemplate.java.ftl
package ${package.Controller};
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import ${package.Entity}.${table.entityName};
import ${package.Service}.${table.serviceName};
<#if restControllerStyle>
import org.springframework.web.bind.annotation.RestController;
<#else>
import org.springframework.stereotype.Controller;
</#if>
<#if superControllerClassPackage??>
import ${superControllerClassPackage};
</#if>
import java.util.List;
/**
* <p>
* ${table.comment!} 前端控制器
* </p>
*
* @author ${author}
* @since ${date}
*/
<#if restControllerStyle>
@RestController
<#else>
@Controller
</#if>
@RequestMapping("<#if package.ModuleName??>/${package.ModuleName}</#if>/${table.name?replace("_", "-")}-api")
<#if superControllerClass??>
public class ${table.controllerName} extends ${superControllerClass} {
<#else>
public class ${table.controllerName} {
</#if>
@Autowired
private ${table.serviceName} ${table.serviceName?uncap_first};
}
- MyEntityTemplate.java.ftl
package ${package.Entity};
<#list table.importPackages as pkg>
import ${pkg};
</#list>
<#if swagger2>
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
</#if>
<#if entityLombokModel>
import lombok.Data;
import lombok.EqualsAndHashCode;
<#if chainModel>
import lombok.experimental.Accessors;
</#if>
</#if>
/**
*
*
* ${entity}对象
* ${table.name} ${table.comment}
*
* @author ${author}
* @since ${date}
*/
<#if entityLombokModel>
@Data
<#if superEntityClass??>
@EqualsAndHashCode(callSuper = true)
<#else>
@EqualsAndHashCode(callSuper = false)
</#if>
<#if chainModel>
@Accessors(chain = true)
</#if>
</#if>
<#if table.convert>
@TableName("${table.name}")
</#if>
<#if swagger2>
@ApiModel(value="${entity}对象", description="${table.comment!}")
</#if>
<#if superEntityClass??>
public class ${entity} extends ${superEntityClass}<#if activeRecord><${entity}></#if> {
<#elseif activeRecord>
public class ${entity} extends Model<${entity}> {
<#else>
public class ${entity} implements Serializable {
</#if>
<#if entitySerialVersionUID>
private static final long serialVersionUID = 1L;
</#if>
<#-- ---------- BEGIN 字段循环遍历 ---------->
<#list table.fields as field>
<#if field.keyFlag>
<#assign keyPropertyName="${field.propertyName}"/>
</#if>
<#if field.comment!?length gt 0>
<#if swagger2>
@ApiModelProperty(value = "${field.comment}")
<#else>
/**
* ${field.comment}
*/
</#if>
</#if>
<#if field.keyFlag>
<#-- 主键 -->
<#if field.keyIdentityFlag>
@TableId(value = "${field.annotationColumnName}", type = IdType.AUTO)
<#elseif idType??>
@TableId(value = "${field.annotationColumnName}", type = IdType.${idType})
<#elseif field.convert>
@TableId("${field.annotationColumnName}")
</#if>
<#-- 普通字段 -->
<#elseif field.fill??>
<#-- ----- 存在字段填充设置 ----->
<#if field.convert>
@TableField(value = "${field.annotationColumnName}", fill = FieldFill.${field.fill})
<#else>
@TableField(fill = FieldFill.${field.fill})
</#if>
<#elseif field.convert>
@TableField("${field.annotationColumnName}")
</#if>
<#-- 乐观锁注解 -->
<#if (versionFieldName!"") == field.name>
@Version
</#if>
<#-- 逻辑删除注解 -->
<#if (logicDeleteFieldName!"") == field.name>
@TableLogic
</#if>
private ${field.propertyType} ${field.propertyName};
</#list>
<#------------ END 字段循环遍历 ---------->
<#if !entityLombokModel>
<#list table.fields as field>
<#if field.propertyType == "boolean">
<#assign getprefix="is"/>
<#else>
<#assign getprefix="get"/>
</#if>
public ${field.propertyType} ${getprefix}${field.capitalName}() {
return ${field.propertyName};
}
<#if chainModel>
public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
<#else>
public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
</#if>
this.${field.propertyName} = ${field.propertyName};
<#if chainModel>
return this;
</#if>
}
</#list>
</#if>
<#if entityColumnConstant>
<#list table.fields as field>
public static final String ${field.name?upper_case} = "${field.name}";
</#list>
</#if>
<#if activeRecord>
@Override
protected Serializable pkVal() {
<#if keyPropertyName??>
return this.${keyPropertyName};
<#else>
return null;
</#if>
}
</#if>
<#if !entityLombokModel>
@Override
public String toString() {
return "${entity}{" +
<#list table.fields as field>
<#if field_index==0>
"${field.propertyName}=" + ${field.propertyName} +
<#else>
", ${field.propertyName}=" + ${field.propertyName} +
</#if>
</#list>
"}";
}
</#if>
}
- MyMapper.xml.ftl
<?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="${package.Mapper}.${table.mapperName}">
<#if baseResultMap>
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="${package.Entity}.${entity}">
<#-- table.fields 来自
com.baomidou.mybatisplus.generator.config.po.TableInfo
fields属性
-->
<#list table.fields as field>
<#if field.keyFlag>
<#--生成主键排在第一位-->
<id column="${field.name}" property="${field.propertyName}"/>
</#if>
</#list>
<#list table.commonFields as field>
<#--生成公共字段 -->
<result column="${field.name}" property="${field.propertyName}"/>
</#list>
<#list table.fields as field>
<#if !field.keyFlag>
<#--生成普通字段 -->
<result column="${field.name}" property="${field.propertyName}"/>
</#if>
</#list>
</resultMap>
</#if>
<#if baseColumnList>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
<#list table.commonFields as field>
${field.name},
</#list>
${table.fieldNames}
</sql>
<select id="selectSysUserList" parameterType="${package.Entity}.${entity}" resultType="${package.Entity}.${entity}">
select
<include refid="Base_Column_List"></include>
from ${table.name}
<where>
<#list table.fields as field>
<#if field.keyFlag>
<#--生成id字段 -->
<if test="${field.propertyName} !=null ">
and ${field.name} = <#noparse>#{</#noparse>${field.propertyName}<#noparse>}</#noparse>
</if>
</#if>
</#list>
<#list table.fields as field>
<#if !field.keyFlag>
<#--生成普通字段 -->
<#--field.type 写法 同等 ${field.type}-->
<if test="${field.propertyName} !=null <#if field.type?contains("varchar")> and ${field.propertyName} != ''</#if>">
and ${field.name} = <#noparse>#{</#noparse>${field.propertyName}<#noparse>}</#noparse>
</if>
</#if>
</#list>
</where>
</select>
<select id="selectEntity" parameterType="${package.Entity}.${entity}"
resultType="${package.Entity}.${entity}">
select
<include refid="Base_Column_List"></include>
from ${table.name}
<where>
<#list table.fields as field>
<#if field.keyFlag>
<#--生成id字段 -->
<if test="${field.propertyName} !=null ">
and ${field.name} = <#noparse>#{</#noparse>${field.propertyName}<#noparse>}</#noparse>
</if>
</#if>
</#list>
<#list table.fields as field>
<#if !field.keyFlag>
<#--生成普通字段 -->
<if test="${field.propertyName} !=null">
and ${field.name} = <#noparse>#{</#noparse>${field.propertyName}<#noparse>}</#noparse>
</if>
</#if>
</#list>
</where>
</select>
<insert id="insert">
insert into ${table.name}
<trim prefix="(" suffix=")" suffixOverrides=",">
<#list table.fields as field>
<#if field.keyFlag>
<if test="${field.propertyName} !=null ">
${field.name},
</if>
</#if>
</#list>
<#list table.fields as field>
<#if !field.keyFlag><#--生成普通字段 -->
<if test="${field.propertyName} !=null ">
${field.name},
</if>
</#if>
</#list>
</trim>
values
<trim prefix="(" suffix=")" suffixOverrides=",">
<#list table.fields as field>
<#--主键id-->
<#if field.keyFlag>
<if test="${field.propertyName} !=null ">
<#noparse>#{</#noparse>${field.propertyName}<#noparse>}</#noparse>,
</if>
</#if>
<#--生成普通字段 -->
<#if !field.keyFlag>
<if test="${field.propertyName} !=null">
<#noparse>#{</#noparse>${field.propertyName}<#noparse>}</#noparse>,
</if>
</#if>
</#list>
</trim>
</insert>
<update id="update" parameterType="${package.Entity}.${entity}">
update ${table.name}
<trim prefix="SET" suffixOverrides=",">
<#list table.fields as field>
<#if field.keyFlag>
<if test="${field.propertyName} !=null ">
${field.name} = <#noparse>#{</#noparse>${field.propertyName}<#noparse>}</#noparse>,
</if>
</#if>
</#list>
<#list table.fields as field>
<#if !field.keyFlag><#--生成普通字段 -->
<if test="${field.propertyName} !=null ">
${field.name} = <#noparse>#{</#noparse>${field.propertyName}<#noparse>}</#noparse>,
</if>
</#if>
</#list>
</trim>
<where>
<#list table.fields as field>
<#if field.keyFlag>
<if test="${field.propertyName} !=null ">
${field.name} = <#noparse>#{</#noparse>${field.propertyName}<#noparse>}</#noparse>
</if>
</#if>
</#list>
</where>
</update>
<delete id="deleteById" parameterType="integer">
delete from ${table.name}
<where>
<#list table.fields as field>
<#if field.keyFlag>
<#--生成id字段 -->
<if test="${field.propertyName} !=null ">
${field.name} = <#noparse>#{id}</#noparse>
</if>
</#if>
</#list>
</where>
</delete>
<delete id="deleteByIds" parameterType="integer">
delete from ${table.name}
where
<#list table.fields as field>
<#if field.keyFlag> ${field.name} in
<#--生成id字段 -->
<foreach item="${field.name}" collection="array" open="(" separator="," close=")">
<#noparse>#{id}</#noparse>
</foreach>
</#if>
</#list>
</delete>
</#if>
</mapper>
- MyMapperTemplate.java.ftl
package ${package.Mapper};
import ${package.Entity}.${entity};
import ${superMapperClassPackage};
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
* ${table.comment!} Mapper 接口
*
*
* @author ${author}
* @since ${date}
*/
<#if kotlin>
interface ${table.mapperName} : ${superMapperClass}<${entity}>
<#else>
public interface ${table.mapperName} {
List<${entity}> select${entity}List(${entity} parameter);
${entity} selectEntity(${entity} parameter);
Integer update(${entity} parameter);
Integer insert(${entity} parameter);
Integer deleteById(@Param("id") Integer id);
Integer deleteByIds(Integer[] ids);
}
</#if>
- MyService.java.ftl
package ${package.Service};
/**
* <p>
* ${table.comment!} 服务类
* </p>
*
* @author ${author}
* @since ${date}
*/
<#if kotlin>
interface ${table.serviceName} : ${superServiceClass}<${entity}>
<#else>
public interface ${table.serviceName} {
}
</#if>
- MyServiceImpl.java.ftl
package ${package.ServiceImpl};
import ${package.Service}.${table.serviceName};
import org.springframework.stereotype.Service;
/**
* <p>
* ${table.comment!} 服务实现类
* </p>
*
* @author ${author}
* @since ${date}
*/
@Service
<#if kotlin>
open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>(), ${table.serviceName} {
}
<#else>
public class ${table.serviceImplName} implements ${table.serviceName} {
}
</#if>
- 1