mybatis-plus 自定义代码生成器模板

这个是在模板的基础上改造的,改造幅度不大,毕竟是测试,看个人需求可以改造更多

  • 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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值