sql表逆向实体类和mapper和service

SKILL开发
开发 未标注权限 许可证不明确
安装这个技能

SQL建表语句逆向生成Java实体类,支持MySQL数据库,自动生成MyBatis-Plus和Lombok注解。当用户需要从SQL CREATE TABLE语句生成Java实体类时使用此skill,包括:(1) 解析SQL建表语句,(2) 生成带注解的Java实体类,(3) 自动映射数据类型,(4) 支持字段注释和表注释。适用于数据库表到Java实体类的逆向工程场景。

一句话选型结论

按资料字段整理

sql表逆向实体类和mapper和service是开发类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类开发 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_faca7523/sql-to-entity
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

开发
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_faca7523仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791737360
正文体量7.9 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
写代码与改 bug

按需求补代码、定位并修掉报错。

读仓库与生成改动

让模型读懂项目结构,再给出可落地的改动。

跑测试与排查故障

按现象排查问题,补测试用例并复跑。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在开发场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
sql表逆向实体类和mapper和service当前 未标注权限 未标注 未标注 未标注 有
技能审查员 浏览器控制 ClawHub 市场 877.9 万 OpenClaw 有
Vercel React 最佳实践 浏览器控制 GitHub 仓库 849.1 万 Codex、Claude、Cursor 有
GitHub 代码协作 联网访问 ClawHub 市场 763.3 万 OpenClaw 有
网页设计指南 联网访问 GitHub 仓库 668.6 万 Codex、Claude、Cursor 有
本体论 只读 ClawHub 市场 663.7 万 OpenClaw 有

SKILL.md 全文

7.9 KB
模型实际读到的说明书原文,来自技能仓库

SQL逆向实体类生成器

将MySQL建表语句(CREATE TABLE)逆向生成Java实体类(以DO结尾)、Mapper、Service和ServiceImpl,自动添加MyBatis-Plus和Lombok注解。

快速开始

基本用法 - 生成实体类

使用转换脚本生成实体类:

python scripts/sql_to_entity.py your_table.sql -o User.java

指定包名

python scripts/sql_to_entity.py your_table.sql -o User.java -p com.example.entity

生成所有文件(Entity, Mapper, Service, ServiceImpl)

python scripts/sql_to_entity.py your_table.sql --all --output-dir ./src/main/java/com/example -p com.example.entity

禁用注解

# 不使用Lombok
python scripts/sql_to_entity.py your_table.sql --no-lombok

# 不使用MyBatis-Plus
python scripts/sql_to_entity.py your_table.sql --no-mybatis-plus

工作流程

  1. 解析SQL: 读取并解析CREATE TABLE语句
  2. 提取信息: 提取表名、字段、注释、约束等
  3. 类型映射: 将MySQL类型映射为Java类型
  4. 生成代码: 生成带注解的Java代码文件

支持的特性

数据类型映射

自动将MySQL数据类型映射为Java类型:
- 数值类型: INT → Integer, BIGINT → Long, DECIMAL → BigDecimal
- 字符串类型: VARCHAR → String, TEXT → String
- 日期类型: DATETIME → LocalDateTime, TIMESTAMP → LocalDateTime, DATE → Date
- 二进制类型: BLOB → byte[]

详细映射关系见 references/mysql_to_java_types.md

MyBatis-Plus注解

自动生成以下注解:
- @TableName: 表名映射(仅包含表名)
- @TableId(type = IdType.ASSIGN_ID): 主键标记,使用雪花算法
- @TableField: 字段映射(当字段名与列名不同时)
- @TableField(fill = FieldFill.INSERT): create_time字段自动填充
- @TableField(fill = FieldFill.INSERT_UPDATE): update_time字段自动填充

详细说明见 references/mybatis_plus_annotations.md

Lombok注解

自动生成以下注解:
- @Data: 生成getter/setter/equals/hashCode/toString
- @Builder: 支持建造者模式
- @NoArgsConstructor: 生成无参构造函数
- @AllArgsConstructor: 生成全参构造函数
- @Slf4j: ServiceImpl中自动生成日志对象

详细说明见 references/lombok_annotations.md

Jackson注解

  • @JsonFormat(shape = JsonFormat.Shape.STRING): ID字段防止前端精度丢失

字段注释

自动提取SQL中的COMMENT作为Java字段注释:

`user_name` VARCHAR(50) COMMENT '用户姓名'

生成:

/** 用户姓名 */
private String userName;

类文档注释

自动生成包含表注释、作者和创建时间的文档注释:

/**
 * 用户表
 *
 * @author Auto Generated
 * @date 2026-04-09 10:50:00
 */

示例

输入SQL

CREATE TABLE `t_user` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `user_name` VARCHAR(50) NOT NULL COMMENT '用户名',
  `email` VARCHAR(100) DEFAULT NULL COMMENT '邮箱',
  `age` INT(11) DEFAULT NULL COMMENT '年龄',
  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';

输出Java实体类

package com.example.entity;

import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 用户表
 *
 * @author Auto Generated
 * @date 2026-04-09 10:50:00
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("t_user")
public class UserDO implements Serializable {

    private static final long serialVersionUID = 1L;

    /** 主键ID */
    @TableId(type = IdType.ASSIGN_ID)
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long id;

    /** 用户名 */
    @TableField("user_name")
    private String userName;

    /** 邮箱 */
    private String email;

    /** 年龄 */
    private Integer age;

    /** 创建时间 */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /** 更新时间 */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}

输出Mapper接口

package com.example.mapper;

import com.example.entity.UserDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;

/**
 * 用户表 Mapper接口
 *
 * @author Auto Generated
 * @date 2026-04-09 10:50:00
 */
@Mapper
public interface UserMapper extends BaseMapper<UserDO> {

}

输出Service接口

package com.example.service;

import com.example.entity.UserDO;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * 用户表 Service接口
 *
 * @author Auto Generated
 * @date 2026-04-09 10:50:00
 */
public interface UserService extends IService<UserDO> {

}

输出ServiceImpl实现类

package com.example.service.impl;

import com.example.entity.UserDO;
import com.example.mapper.UserMapper;
import com.example.service.UserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;

/**
 * 用户表 Service实现类
 *
 * @author Auto Generated
 * @date 2026-04-09 10:50:00
 */
@Slf4j
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, UserDO> implements UserService {

}

注意事项

  1. 命名转换: 自动将下划线命名(snake_case)转换为驼峰命名(camelCase)
  2. 实体类命名: 实体类名自动添加DO后缀(Data Object),例如: UserDO
  3. Mapper/Service命名: Mapper、Service和ServiceImpl不使用DO后缀,例如: UserMapper、UserService、UserServiceImpl
  4. 主键识别: AUTO_INCREMENT字段自动标记为@TableId,使用雪花算法
  5. 字段映射: 当驼峰命名与原字段名不同时,自动添加@TableField注解
  6. 导入优化: 根据实际使用的类型自动导入相应的包
  7. 时间类型: DATETIME和TIMESTAMP类型映射为LocalDateTime
  8. ID精度: ID字段自动添加@JsonFormat注解防止前端精度丢失
  9. 自动填充: create_time和update_time字段自动配置填充策略

高级用法

批量转换

可以编写shell脚本批量转换多个SQL文件:

#!/bin/bash
for sql_file in sqls/*.sql; do
    table_name=$(basename "$sql_file" .sql)
    python scripts/sql_to_entity.py "$sql_file" --all --output-dir ./src/main/java/com/example -p com.example.entity
done

自定义模板

如需自定义生成模板,可以修改 scripts/sql_to_entity.py 中的以下函数:
- generate_java_entity: 实体类生成
- generate_java_mapper: Mapper接口生成
- generate_java_service: Service接口生成
- generate_java_service_impl: ServiceImpl实现类生成

参考资源

  • MySQL到Java类型映射 - 详细的数据类型映射关系
  • MyBatis-Plus注解说明 - MyBatis-Plus常用注解详解
  • Lombok注解说明 - Lombok常用注解详解

常见问题

5 问
答案由本站依据条目字段整理
sql表逆向实体类和mapper和service怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_faca7523/sql-to-entity。安装方式为未标注。装完刷新技能列表或重开客户端。

sql表逆向实体类和mapper和service支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

sql表逆向实体类和mapper和service权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

sql表逆向实体类和mapper和service收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

sql表逆向实体类和mapper和service用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。