Java 实体类生成 MySQL 建表语句 - 代码示例与最佳实践

本文将介绍如何根据 Java 实体类自动生成 MySQL 建表语句,并提供代码示例、最佳实践以及需要注意的事项,帮助开发者快速构建数据库结构。

实体类示例

package com.zbkj.common.response;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 客户表
 */
@Data
public class ErpCustomerDo implements Serializable {
//    @ApiModelProperty(value = "表ID")
//    private Long originId;

    /**
     * id
     */
    @ApiModelProperty(value = "id")
    private Integer id;

    /**
     * 客户编码
     */
    @ApiModelProperty(value = "客户编码")
    private String code;

    /**
     * 客户名称
     */
    @ApiModelProperty(value = "客户名称")
    private String customer_name;

    /**
     * 客户简称
     */
    @ApiModelProperty(value = "客户简称")
    private String shortName;

    /**
     * 客户分类
     */
    @ApiModelProperty(value = "客户分类")
    private String source;

    /**
     * 行业分类
     */
    @ApiModelProperty(value = "行业分类")
    private String industryClass;

    /**
     * 送货方式
     */
    @ApiModelProperty(value = "送货方式")
    private String deliveryType;

    /**
     * 公司网址
     */
    @ApiModelProperty(value = "公司网址")
    private String website;

    /**
     * 邮政编码
     */
    @ApiModelProperty(value = "邮政编码")
    private String postalCode;

    /**
     * 销售人员
     */
    @ApiModelProperty(value = "销售人员")
    private String sale;

    /**
     * 销售组别
     */
    @ApiModelProperty(value = "销售组别")
    private String saleCategory;

    /**
     * 曾用名
     */
    @ApiModelProperty(value = "曾用名")
    private String formerName;

    /**
     * 送货路线
     */
    @ApiModelProperty(value = "送货路线")
    private String deliveryRoute;

    /**
     * 省/直辖市
     */
    @ApiModelProperty(value = "省/直辖市")
    private String province;

    /**
     * 市
     */
    @ApiModelProperty(value = "市")
    private String city;

    /**
     * 区/县
     */
    @ApiModelProperty(value = "区/县")
    private String county;

    /**
     * 镇
     */
    @ApiModelProperty(value = "镇")
    private String town;

    /**
     * 详细地址
     */
    @ApiModelProperty(value = "详细地址")
    private String address;

    /**
     * 是否有效
     */
    @ApiModelProperty(value = "是否有效")
    private Boolean canUse;

    /**
     * 送货单类型
     */
    @ApiModelProperty(value = "送货单类型")
    private Byte deliveryNoteType;

    /**
     * 是否需要材质证明书
     */
    @ApiModelProperty(value = "是否需要材质证明书")
    private Boolean needProve;

    /**
     * 是否需要贴纸
     */
    @ApiModelProperty(value = "是否需要贴纸")
    private Boolean needNote;

    /**
     * 整单送货
     */
    @ApiModelProperty(value = "整单送货")
    private Boolean fullDelivery;

    /**
     * 币种
     */
    @ApiModelProperty(value = "币种")
    private String moneyType;

    /**
     * 数量小数位
     */
    @ApiModelProperty(value = "数量小数位")
    private Byte numDecimal;

    /**
     * 金额小数位
     */
    @ApiModelProperty(value = "金额小数位")
    private Byte moneyDecimal;

    /**
     * 报价默认计重方式
     */
    @ApiModelProperty(value = "报价默认计重方式")
    private Byte weighType;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private Boolean c061;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private Boolean c062;

    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
    private String createBy;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    private Date createTime;

    /**
     * 更新人
     */
    @ApiModelProperty(value = "更新人")
    private String updateBy;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;

    /**
     * 组织ID
     */
    @ApiModelProperty(value = "组织ID")
    private Byte organizationId;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private String c901;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private String c902;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private String c903;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private String c904;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private String c905;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private String c906;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private String c907;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private String c908;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private String c909;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private String c910;

    /**
     * 送货单前置码
     */
    @ApiModelProperty(value = "送货单前置码")
    private String deliveryFrontNum;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private String c912;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private String c913;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private String c914;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private String c915;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private String c916;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private String c917;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private String c918;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private String c919;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private String c920;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private String c035;

    /**
     *
     */
    @ApiModelProperty(value = "")
    private Byte c036;

    /**
     * 客户PO
     */
    @ApiModelProperty(value = "客户PO")
    private Boolean consumerPo;

    /**
     * 模具编号
     */
    @ApiModelProperty(value = "模具编号")
    private Boolean modelCode;

    /**
     * 料号
     */
    @ApiModelProperty(value = "料号")
    private Boolean materialCode;

    /**
     * 客户品名
     */
    @ApiModelProperty(value = "客户品名")
    private Boolean customerName;

    /**
     * 长宽厚
     */
    @ApiModelProperty(value = "长宽厚")
    private Boolean size;


    private static final long serialVersionUID = 1L;
}

MySQL 建表语句

CREATE TABLE `erp_customer_do` (
  `id` int(11) DEFAULT NULL COMMENT 'id',
  `code` varchar(255) DEFAULT NULL COMMENT '客户编码',
  `customer_name` varchar(255) DEFAULT NULL COMMENT '客户名称',
  `shortName` varchar(255) DEFAULT NULL COMMENT '客户简称',
  `source` varchar(255) DEFAULT NULL COMMENT '客户分类',
  `industryClass` varchar(255) DEFAULT NULL COMMENT '行业分类',
  `deliveryType` varchar(255) DEFAULT NULL COMMENT '送货方式',
  `website` varchar(255) DEFAULT NULL COMMENT '公司网址',
  `postalCode` varchar(255) DEFAULT NULL COMMENT '邮政编码',
  `sale` varchar(255) DEFAULT NULL COMMENT '销售人员',
  `saleCategory` varchar(255) DEFAULT NULL COMMENT '销售组别',
  `formerName` varchar(255) DEFAULT NULL COMMENT '曾用名',
  `deliveryRoute` varchar(255) DEFAULT NULL COMMENT '送货路线',
  `province` varchar(255) DEFAULT NULL COMMENT '省/直辖市',
  `city` varchar(255) DEFAULT NULL COMMENT '市',
  `county` varchar(255) DEFAULT NULL COMMENT '区/县',
  `town` varchar(255) DEFAULT NULL COMMENT '镇',
  `address` varchar(255) DEFAULT NULL COMMENT '详细地址',
  `canUse` tinyint(1) DEFAULT NULL COMMENT '是否有效',
  `deliveryNoteType` tinyint(4) DEFAULT NULL COMMENT '送货单类型',
  `needProve` tinyint(1) DEFAULT NULL COMMENT '是否需要材质证明书',
  `needNote` tinyint(1) DEFAULT NULL COMMENT '是否需要贴纸',
  `fullDelivery` tinyint(1) DEFAULT NULL COMMENT '整单送货',
  `moneyType` varchar(255) DEFAULT NULL COMMENT '币种',
  `numDecimal` tinyint(4) DEFAULT NULL COMMENT '数量小数位',
  `moneyDecimal` tinyint(4) DEFAULT NULL COMMENT '金额小数位',
  `weighType` tinyint(4) DEFAULT NULL COMMENT '报价默认计重方式',
  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
  `c061` tinyint(1) DEFAULT NULL COMMENT '',
  `c062` tinyint(1) DEFAULT NULL COMMENT '',
  `createBy` varchar(255) DEFAULT NULL COMMENT '创建人',
  `createTime` datetime DEFAULT NULL COMMENT '创建时间',
  `updateBy` varchar(255) DEFAULT NULL COMMENT '更新人',
  `updateTime` datetime DEFAULT NULL COMMENT '更新时间',
  `organizationId` tinyint(4) DEFAULT NULL COMMENT '组织ID',
  `c901` varchar(255) DEFAULT NULL COMMENT '',
  `c902` varchar(255) DEFAULT NULL COMMENT '',
  `c903` varchar(255) DEFAULT NULL COMMENT '',
  `c904` varchar(255) DEFAULT NULL COMMENT '',
  `c905` varchar(255) DEFAULT NULL COMMENT '',
  `c906` varchar(255) DEFAULT NULL COMMENT '',
  `c907` varchar(255) DEFAULT NULL COMMENT '',
  `c908` varchar(255) DEFAULT NULL COMMENT '',
  `c909` varchar(255) DEFAULT NULL COMMENT '',
  `c910` varchar(255) DEFAULT NULL COMMENT '',
  `deliveryFrontNum` varchar(255) DEFAULT NULL COMMENT '送货单前置码',
  `c912` varchar(255) DEFAULT NULL COMMENT '',
  `c913` varchar(255) DEFAULT NULL COMMENT '',
  `c914` varchar(255) DEFAULT NULL COMMENT '',
  `c915` varchar(255) DEFAULT NULL COMMENT '',
  `c916` varchar(255) DEFAULT NULL COMMENT '',
  `c917` varchar(255) DEFAULT NULL COMMENT '',
  `c918` varchar(255) DEFAULT NULL COMMENT '',
  `c919` varchar(255) DEFAULT NULL COMMENT '',
  `c920` varchar(255) DEFAULT NULL COMMENT '',
  `c035` varchar(255) DEFAULT NULL COMMENT '',
  `c036` tinyint(4) DEFAULT NULL COMMENT '',
  `consumerPo` tinyint(1) DEFAULT NULL COMMENT '客户PO',
  `modelCode` tinyint(1) DEFAULT NULL COMMENT '模具编号',
  `materialCode` tinyint(1) DEFAULT NULL COMMENT '料号',
  `customerName` tinyint(1) DEFAULT NULL COMMENT '客户品名',
  `size` tinyint(1) DEFAULT NULL COMMENT '长宽厚'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='客户表';

最佳实践

  1. 使用注解: 利用 @TableName, @TableId, @TableField 等注解,方便进行数据库表和字段映射。
  2. 字段命名规范: 使用驼峰命名法,并使用 @ApiModelProperty 注解描述字段含义,提高代码可读性。
  3. 类型匹配: 确保 Java 数据类型和 MySQL 数据类型匹配,例如:String 对应 varcharInteger 对应 intDate 对应 datetime
  4. 使用工具: 可以使用一些工具自动生成建表语句,例如 MyBatis Generator (MBG),简化开发流程。

注意事项

  1. 字段长度: 设置合理的字段长度,防止数据过长导致数据库性能问题。
  2. 索引: 根据实际需求添加索引,提高查询效率。
  3. 外键: 如果需要建立外键约束关系,需要在建表语句中添加相应的约束信息。

总结

通过本文的介绍,开发者可以根据 Java 实体类自动生成 MySQL 建表语句,提高开发效率,并保证数据库结构的规范性。

希望本文对开发者有所帮助,欢迎分享你的经验和想法。

Java 实体类生成 MySQL 建表语句 - 代码示例与最佳实践

原文地址: https://www.cveoy.top/t/topic/oFle 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录