base-entity.java.ftl 通用基类实体模板

SQL代码生成器实战:JDBC元数据与FreeMarker模板生成Java代码 在后端工程中,数据库表结构向Java实体与Mapper层的转换常伴随大量重复劳动。理解JDBC元数据的读取原理是破解这一痛点的关键——通过DatabaseMetaData接口,可以稳定获取表名、列名、类型及注释,避免解析不同数据库方言的DDL文本带来的脆弱性。结合FreeMarker模板引擎,将元数据映射为Java类型并渲染出Entity、Mapper接口、XML及Service等成套代码,具备高复用性与确定性。这类代码生成器在实际项目中不仅提升CRUD开发效率,还能通过类型映射规则、保留字处理及自增主键回 阅读详情

以下是符合 企业级 Java 开发规范、遵循 MyBatis-Plus 最佳实践 的两个核心实体类模板文件:

  • entity.java.ftl(具体业务实体类)
  • base-entity.java.ftl(通用基类实体)

这两个模板均不包含 OpenAPI 注解(遵循前文规范:Entity 不应耦合 API 层),但包含完整的 JPA/MyBatis-Plus 注解、逻辑删除、自动填充等企业级特性,并附有详尽的中文注释,可直接用于 MyBatis-Plus Generator 代码生成。


✅ 1. base-entity.java.ftl(通用基类实体模板)

package ${package.Entity};

<#-- 导入必要注解 -->
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 通用基类实体
 * </p>
 *
 * <p>
 * 【设计目标】
 * 1. 统一管理所有实体的公共字段(如创建时间、更新时间、逻辑删除等)
 * 2. 避免在每个业务实体中重复定义相同字段
 * 3. 与 MyBatis-Plus 自动填充、逻辑删除等插件无缝集成
 * </p>
 *
 * <p>
 * 【关键特性说明】
 * - {@code id}:主键(由子类通过 {@code @TableId} 声明具体策略)
 * - {@code createTime}:创建时间,插入时自动填充
 * - {@code updateTime}:更新时间,插入和更新时自动填充
 * - {@code deleted}:逻辑删除标识(0-未删除,1-已删除)
 * </p>
 *
 * <p>
 * 【重要原则】
 * - 此类为抽象基类,不应直接实例化
 * - 所有业务实体应继承此类
 * - 字段命名采用下划线转驼峰(如 create_time → createTime)
 * - 不包含任何 OpenAPI/Swagger 注解(Entity 不应暴露给 API 层)
 * </p>
 *
 * @author ${author}
 * @since ${date}
 */
@Data
@Accessors(chain = true)
public abstract class BaseEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 创建时间
     * <p>
     * 使用 MyBatis-Plus 的自动填充功能:
     * - 插入时自动设为当前时间
     * - 更新时保持不变
     * </p>
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     * <p>
     * 使用 MyBatis-Plus 的自动填充功能:
     * - 插入时设为当前时间
     * - 每次更新时自动刷新为当前时间
     * </p>
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /**
     * 逻辑删除标识
     * <p>
     * - 0:未删除(正常状态)
     * - 1:已删除(逻辑删除)
     * </p>
     * <p>
     * 配合 MyBatis-Plus 的 {@code @TableLogic} 注解和全局配置,
     * 所有查询操作会自动追加 {@code AND deleted = 0} 条件,
     * 所有删除操作会自动转为 {@code UPDATE ... SET deleted = 1}。
     * </p>
     */
    @TableLogic
    @TableField(fill = FieldFill.INSERT) // 插入时默认为 0(未删除)
    private Integer deleted = 0;
}

✅ 2. entity.java.ftl(具体业务实体类模板)

package ${package.Entity};

<#-- 导入必要注解 -->
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
<#if entitySerialVersionUID>
import java.util.UUID;
</#if>

/**
 * <p>
 * ${table.comment!} 实体类
 * </p>
 *
 * <p>
 * 【设计说明】
 * 1. 继承 {@link BaseEntity},自动获得公共字段(createTime, updateTime, deleted)
 * 2. 使用 Lombok 简化 getter/setter/toString 等样板代码
 * 3. 通过 MyBatis-Plus 注解映射数据库表结构
 * 4. 主键策略、字段映射、逻辑删除等均由注解声明
 * </p>
 *
 * <p>
 * 【关键注解说明】
 * - {@code @TableName}:指定数据库表名(若类名与表名不一致)
 * - {@code @TableId}:标识主键字段及生成策略
 * - {@code @TableField}:映射普通字段(可指定列名、填充策略、是否参与查询等)
 * - {@code @TableLogic}:已在基类中定义,此处无需重复
 * </p>
 *
 * <p>
 * 【重要原则】
 * - 此类为持久层模型(ORM Entity),仅用于数据库操作
 * - **绝不直接用于 Controller 层返回或接收参数**(应使用 DTO/VO)
 * - **不包含任何 OpenAPI/Swagger 注解**(避免 API 层耦合)
 * - 字段应与数据库表结构严格对应
 * </p>
 *
 * @author ${author}
 * @since ${date}
 */
@Data
@EqualsAndHashCode(callSuper = true) // 包含父类字段参与 equals/hashCode
@Accessors(chain = true) // 支持链式调用:new User().setId(1).setName("张三")
@TableName("${table.name}") // 指定数据库表名
public class ${entity} extends BaseEntity implements Serializable {

    private static final long serialVersionUID = <#if entitySerialVersionUID>${entitySerialVersionUID}<#else>1L</#if>;

<#-- 遍历表字段生成属性 -->
<#list table.fields as field>
<#-- 跳过基类已定义的字段(createTime, updateTime, deleted) -->
<#if !(field.name == 'create_time' || field.name == 'update_time' || field.name == 'deleted')>
    <#-- 主键字段特殊处理 -->
    <#if field.keyFlag>
    /**
     * ${field.comment!}
     * <p>
     * 主键字段,使用 ${table.pk.name} 策略(通常为自增或雪花ID)
     * </p>
     */
    @TableId(value = "${field.name}", type = IdType.${table.pk.name})
    private ${field.propertyType} ${field.propertyName};
    <#else>
    /**
     * ${field.comment!}
     */
    <#-- 若字段名与属性名不一致,需显式指定 value -->
    <#if field.name != field.propertyName>
    @TableField("${field.name}")
    <#else>
    @TableField
    </#if>
    private ${field.propertyType} ${field.propertyName};
    </#if>
</#if>
</#list>

    /**
     * 【扩展建议】以下为常见业务场景示例(按需取消注释)
     */

    /*
    // 示例:枚举字段(数据库存 code,Java 用 Enum)
    private Integer status; // 数据库存 0/1

    // 转换方法(或使用 MyBatis-Plus TypeHandler)
    public UserStatus getStatusEnum() {
        return UserStatus.fromCode(this.status);
    }

    // 示例:JSON 字段(存储复杂对象)
    @TableField(typeHandler = JacksonTypeHandler.class)
    private Map<String, Object> metadata;
    */
}

🔍 关键设计说明与最佳实践

1. 分层架构严格分离
  • ✅ Entity:仅用于 DAO/Service 层,绝不暴露给 Controller
  • ✅ DTO/VO:专用于 API 层,包含 OpenAPI 注解
  • 🔄 通过 MapStruct 或 BeanUtils 在 Service 层进行 Entity ↔ DTO/VO 转换
2. MyBatis-Plus 特性集成
特性实现方式说明
自动填充@TableField(fill = FieldFill.INSERT)配合 MetaObjectHandler
逻辑删除@TableLogic + 全局配置查询自动过滤已删除数据
主键策略@TableId(type = IdType.ASSIGN_ID)支持雪花ID、自增等
字段映射@TableField("column_name")处理下划线命名
3. Lombok 使用规范
  • @Data:生成 getter/setter/toString/equals/hashCode
  • @EqualsAndHashCode(callSuper = true):确保继承关系下 equals 正确
  • @Accessors(chain = true):支持链式调用,提升可读性
4. 序列化安全
  • 实现 Serializable 接口(分布式缓存、RPC 场景需要)
  • 显式定义 serialVersionUID(避免反序列化失败)
5. 字段过滤策略
  • 模板中自动跳过基类字段(create_time, update_time, deleted)
  • 避免字段重复定义

🛠️ 配套配置建议

(1) MyBatis-Plus 全局配置(application.yml)
mybatis-plus:
  global-config:
    db-config:
      logic-delete-value: 1    # 逻辑已删除值
      logic-not-delete-value: 0 # 逻辑未删除值
      id-type: assign_id       # 全局主键策略(雪花ID)
  configuration:
    map-underscore-to-camel-case: true # 下划线转驼峰
(2) 自动填充处理器(MetaObjectHandler)
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        this.strictInsertFill(metaObject, "createTime", LocalDateTime::now, LocalDateTime.class);
        this.strictInsertFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
        this.strictInsertFill(metaObject, "deleted", () -> 0, Integer.class);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.strictUpdateFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
    }
}

📦 项目结构示例

src/main/java
└── com.example.demo
    └── entity
        ├── BaseEntity.java      ← 通用基类
        └── User.java            ← 业务实体(继承 BaseEntity)

✅ 这两份模板体现了 “持久层模型纯净化” 和 “分层架构严格化” 的企业级开发思想:

  • Entity 专注数据持久化,无任何 API 层污染
  • 通过继承复用公共字段,减少重复代码
  • 与 MyBatis-Plus 深度集成,开箱即用
  • 为未来扩展(如审计字段、多租户)预留空间

可作为团队标准模板,在 MyBatis-Plus Generator 中直接使用。

Excel模板Java实体生成器 使用POI读取Excel支持03,07版Excel,根据Excel模板生成JAVA实体类。 此工程支持eclipse,netbean直接打开。 立即下载

相关推荐

使用 Mid360 从零开始搭建实物机器人入门级导航系统 —— 基于 Fast_Lio 和 Move_Base

本文详细介绍了如何使用Mid360机器人从零开始搭建一个基于Fast_Lio和Move_Base的入门级导航系统。通过配置 ROS2、集成激光雷达、IMU、Fast_Lio、Move_Base 等模块,我们成功构建了一个能够实现自动导航的机器人系统。在实际开发中,随着需求的变化,你可以不断调整参数、优化路径规划算法、增加新的传感器等,逐步提升机器人的智能与功能。

小蜗牛的珍贵百宝箱 3563

entity.java.ftl 实体类模板标准规范版

摘要 本文提供了符合MyBatis-Plus最佳实践的企业级实体类模板,包括entity.java.ftl和base-entity.java.ftl,用于自动生成规范的Java实体类。核心特性包括: 使用Lombok减少样板代码; 集成MyBatis-Plus注解(表名、主键、字段映射等); 自动填充时间字段; 支持乐观锁和逻辑删除; 继承基类复用公共字段; 完善的字段注释和警告提示。 base-entity.java.ftl定义公共父类,包含主键、时间戳等通用字段;entity.java.ftl生成具体业

python15397的博客 897

西门子交换机环网冗余设置(实战篇2.2)

MRP的重组时间为 200ms 因此 PROFINET 通信必须选择大于 200ms 的看门狗时间,看门狗。ET200SP默认为 2ms*3=6ms) MRP 的重组时间为 200ms 故系统会报出看门狗超时。更新,默认是 3 个周期,超出设置的周期数就会报 IO 设备故障。时间不是直接配置的,而是作为没有 IO 数据可接受的更新周期,也就是允许几个周期没有数据。来达到大于 200ms 的看门狗时间的要求(看门狗时间 可接受更新周期数 更新时间)。是IO 控制器和 IO 设备)

weixin_42580591的博客 363

使用Freemarker模板生成JAVA代码

前言记一次Freemarker的套路过程,通过JDBC访问数据库,查询表结构,对应生成Dao、Service、Entity、ServiceImpl等java文件,主要是为了实现之前一篇博文的注解整合SSM项目代码的生成功能。传入freemarker的数据格式为:Map<String, Map<String, Object>> 也可以用其他的,个人感觉这个方便一点。具体套路如下: 1. 涉及的JA

那些年,那些醉 1万+

CUDA&PCL 点云体素下采样

CUDA&PCL 点云体素下采样

dayuhaitang1的博客 1268

智能车图像处理24-进阶篇16--三叉路口的判断

这篇文章主要讲述图像处理中如何判断三叉路口并进行补线操作。

taiyuezyh的博客 1万+

mapper.java.ftl(Mapper 接口模板参考示例1)

摘要: 本文提供了两个MyBatis-Plus代码生成模板文件,遵循企业级开发规范: Mapper接口模板(mapper.java.ftl): 继承BaseMapper获得基础CRUD功能 包含详细中文注释和使用说明 提供自定义查询方法示例 强调类型安全和命名规范 Mapper XML映射文件模板(mapper.xml.ftl): 仅建议复杂SQL场景使用 包含SQL注入防护规范 提供动态SQL和分页查询示例 基础字段列表复用方案 包含多表关联、批量操作等扩展建议 两个模板均适配MyBatis-Plus G

python15397的博客 462

【异常】XXL-job触发调度:address:http://192.168.x.x:x/ code:500 msg:xxl-rpc remoting error(connect timed out)

XXL-JOB调度任务失败分析:调度中心(10.254.234.80)与执行器(192.168.x.x)连接超时,返回500错误。主要原因是网络不通或执行器异常:1.网络不通可能由防火墙或网段隔离导致;2.执行器未启动或端口未监听;3.地址配置错误。解决方案:1.关闭代理使用内网;2.测试网络连通性和端口可用性;3.检查执行器进程状态和端口监听情况;4.核对执行器地址配置;5.必要时配置防火墙规则放行端口。

奶爸的编程之路,也就一周冷个三天 413

使用sqlalchemy生成java中的实体类(一)

java,sql,python

qq_63401240的博客 871

AI实时盯盘与素材更新迭代功能开发——千川素材投流系统完全指南

《AI驱动的千川素材投流系统完全指南》摘要 本文针对抖音电商生态中巨量千川平台的素材投放挑战,提出了一套AI驱动的实时盯盘与素材更新迭代解决方案。系统通过分层架构设计,整合数据采集、实时监控、AI分析和自动化执行模块,实现分钟级数据追踪与智能决策。核心功能包括实时数据采集、异常检测、自动化投放调整和素材生命周期管理,有效解决人工盯盘效率低、素材生命周期短、决策响应慢等痛点。系统采用Python+FastAPI技术栈,结合机器学习和自动化工具,提供从数据采集到决策执行的全链路解决方案,帮助商家提升投放效率和R

huanghm88的专栏 228

从开票数据到 ML81N 一键过账:用 ABAP BAPI 批量创建 Service Entry Sheet 的落地方案

摘要:SAP ESM场景中,服务履约确认通常通过ML81N事务码创建服务条目表(SES)完成。本文介绍如何基于开票数据(VBRK/VBRP)自动生成SES:首先通过BAPI_PO_GETDETAIL获取采购订单服务行结构,然后使用BAPI_ENTRYSHEET_CREATE创建SES并覆盖开票数量与金额,最后调用BAPI_ENTRYSHEET_RELEASE自动释放。解决方案包含ALV交互界面、批量处理逻辑和结果跳转功能,实现从人工录入到自动化处理的转变。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 323

ftl模板之code-generator

二、创建ftl模板 三、Java实体类生成案例 四、效果如下 ftl模板,可以高度自定义生成代码…。如html、vue、Java等。{看一下ftl语法即可}

weixin_52236586的博客 583

把浮点数这件小事讲清楚:ABAP 7.51 里 Open SQL 与 ABAP CDS 的 FLTP 新玩法与避坑指南

ABAP浮点数计算的风险与应对 摘要:ABAP项目中的浮点数(FLTP)在跨平台计算时存在误差风险,同一逻辑在不同数据库平台可能产生细微差异。ABAP 7.51新增了两项关键能力:1)Open SQL和ABAP CDS中可为AVG函数指定结果类型,避免默认返回FLTP;2)ABAP CDS提供FLTP_TO_DEC转换函数。但需注意这些转换仍可能存在平台相关差异,且FLTP_TO_DEC会截断而非四舍五入小数位。开发者在涉及金额、数量等关键业务计算时,应明确数值语义并设计容错机制。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 213

MCreator 生物实体 AI 基础(AI Base)参数详解:让自定义生物继承原版实体行为

> 本文面向使用 MCreator 制作 Minecraft 模组的开发者,围绕「生物实体 AI 基础(AI Base)」参数展开:说明该参数的作用、何时应当使用与何时必须回避、它对实体生成代码与游戏内行为的实际影响,并借助仓库源码([LivingEntity.java](https://link.gitcode.com/i/1c88894eb05de4f2a92cb58ead0b4a73)、[l

gitblog_00648的博客 432

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

MCreator 实体“启用 AI 任务“选项详解:开关原理、AI 任务编辑器与 mob base 协同机制

本篇技术指南围绕 MCreator 生物实体定义中的 **Enable AI(启用 AI 任务)** 选项展开,说明该开关在 Java 版生物(Living Entity)建模中的实际作用、底层代码生成机制,以及它与 AI 任务编辑器(AI Task Builder)、AI 基类(AI Base)之间的协同关系。读完本文,你将掌握该选项的适用场景、如何判断何时应关闭它,并能从源码层面理解勾选/取消

gitblog_00558的博客 1091

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

foobox-cn 界面语言设置指南:菜单多语言、汉化与配置迁移一次讲清

foobox-cn 是套在 foobar2000 上的 DUI 界面,装好后最容易卡的点就是语言:主菜单看着英文不顺眼,又不知道哪些地方能单独调、哪些调了没用。先把范围划清楚——**主界面整体跟 foobar2000 汉化版走,面板菜单能各自选语言,个别文案要改文件**。下面按"先定目标,再走对应路线"的思路拆,避免一上来就翻文件。 [![foobox-cn 中文界面整体效果](https://

gitblog_00596的博客 215

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

如何用 bilingual_book_maker 把英文原版书做成 AI 双语电子书?一份完整实操指南

想精读英文原著,却发现机器翻译把章节层级、字号和插图位置全打乱了?bilingual_book_maker 是一个开源的电子书翻译工具:读入你的 EPUB / PDF / TXT 文件,调用 AI 翻译引擎逐段生成中文,产出双语 EPUB,排版结构基本原样保留。 **谁会用得上** - 外语学习:中英文对照排在一起,读中文的同时能逐句回看英文原文,不用两块屏幕来回切。 - 精读原版书:章节、段

gitblog_00383的博客 152

如何监控AI推理性能:Docker Model Runner聚合Prometheus /metrics指标详解

Docker Model Runner(DMR)内置了一个**聚合 /metrics 端点**,默认开启,无需任何配置。它会自动收集所有正在运行的 AI 推理 Runner(如 llama.cpp)的 Prometheus 兼容指标,统一打上 `backend`、`model`、`mode` 标签后,从一个入口一次性输出——让你无需逐个 Runner 抓取,就能用一条 curl 命令或一个 Pro

gitblog_00059的博客 610

MCreator 可骑乘实体(Ridable)功能完全指南:参数配置与生成代码原理

> 导读:本文围绕 MCreator 实体制作器中「可骑乘(Ridable)」参数展开,讲解如何在生物实体(Living Entity)上开启玩家骑乘能力,并可选启用前向移动与横向移动控制;同时深入源码,揭示该参数从数据模型(`LivingEntity.java`)到界面控件(`LivingEntityGUI.java`)、再到代码生成模板(`livingentity.java.ftl`)的完整实

gitblog_00545的博客 773

MCreator 属性默认基值(Default Base Value)详解:从界面配置到 NeoForge 代码生成

在 MCreator 中新建"属性(Attribute)"类型元素时,`默认基值(Default Value)` 是最核心的数值参数之一:它决定了该属性在实体出生、未受任何外部干预时的初始数值。本文将围绕 [default_value.md](https://link.gitcode.com/i/00ad96410b25316d940653708226f09b) 的说明,结合仓库中 [Attrib

gitblog_00542的博客 413

MCreator 生物实体最大行走高度(Step Height)配置指南:从界面设置到源码生成原理

本文围绕 MCreator 官方帮助文档中关于"实体最大行走高度(Step Height)"的条目展开,系统讲解该参数在生物(Living Entity)编辑器中的含义、默认取值与适用范围,并深入仓库源码剖析其从配置界面、参数校验到最终生成 `Attributes.STEP_HEIGHT` 代码的完整链路。读完本文,你将掌握如何在 MCreator 中为自定义生物设置步高、如何通过过程块在运行时动

gitblog_01087的博客 730

MCreator 实体「飞行实体」参数详解:让生物摆脱重力与摔落伤害的完整实现指南

在 MCreator 的实体(Living Entity)设计器中,有一个名为「Is flying entity / 是飞行实体」的开关参数。勾选它之后,你创建的实体将成为真正意义上的飞行生物:它不再被重力拉向地面,也不会因从高处摔落而受伤,同时自动获得飞行专用的路径寻路(navigation)与移动控制(move control)能力。本文以 MCreator 官方帮助文档([plugins/m

gitblog_00083的博客 687

MCreator 实体行为(Behaviour)参数完全指南:Mob、Creature 与 Raider 的选用逻辑与底层生成原理

本篇指南聚焦 MCreator 中「生物/实体(Living Entity)」模组元素里的 **Behaviour(行为)** 下拉框参数。该参数决定了你的自定义生物在 Minecraft 世界中属于主动攻击型、被动型,还是参与袭击(Raid)的特殊怪物。读完本文,你将掌握三种可选值(Mob、Creature、Raider)的适用场景、与「AI 基础(AI Base)」和「AI 任务」的联动规则、

gitblog_00890的博客 345

MCreator 实体追踪范围(Tracking Range)参数详解:含义、取值范围与代码生成原理

追踪范围(Tracking Range)是 MCreator 中定义生物实体(Living Entity)时的核心参数之一,它决定了**服务器在多大距离内持续向玩家同步该实体的位置与状态**。本文围绕该参数在 MCreator 中的数据模型、图形界面入口、Java 版代码生成结果与 Bedrock 版转换行为展开讲解,帮助你在自定义实体时正确设置追踪距离,并理解"设为 0 即完全禁用渲染与碰撞"这

gitblog_00592的博客 1015

AI如何安全执行Shell命令?深入Clawd-Code BashTool的安全设计与执行原理

Clawd-Code 是一个用 Python 完整重构的 Claude Code,其中最核心也最危险的组件就是 **BashTool**——它允许 AI Agent 直接在你的机器上执行 Shell 命令。那么问题来了:**AI 如何安全执行 Shell 命令**?本文将从危险命令拦截、目录沙箱、超时控制、输出截断和权限审批五个维度,带你拆解 [BashTool](https://link.git

gitblog_00381的博客 158

Hermes Agent Control Room 八大技能(Skills)清单:从 create-vps 到 agent-security-auditor 如何使用

本文为你逐一点名 Hermes Agent Control Room 内置的八项 Skills(技能):从用 create-vps 创建 Hetzner VPS、setup-control-room 引导控制室,到 agent-task-router 任务路由、agent-security-auditor 安全审计。如果你想在 VPS 上像"操作系统"一样管理多个 Hermes agent,这份完

gitblog_00101的博客 227
上一篇: controller.java.ftl 模板文件参考示例3
下一篇: entity.java.ftl 实体类模板标准规范版
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值