Java 实体类生成 MySQL 建表语句 - 代码示例与最佳实践
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='客户表';
最佳实践
- 使用注解: 利用
@TableName,@TableId,@TableField等注解,方便进行数据库表和字段映射。 - 字段命名规范: 使用驼峰命名法,并使用
@ApiModelProperty注解描述字段含义,提高代码可读性。 - 类型匹配: 确保 Java 数据类型和 MySQL 数据类型匹配,例如:
String对应varchar,Integer对应int,Date对应datetime。 - 使用工具: 可以使用一些工具自动生成建表语句,例如 MyBatis Generator (MBG),简化开发流程。
注意事项
- 字段长度: 设置合理的字段长度,防止数据过长导致数据库性能问题。
- 索引: 根据实际需求添加索引,提高查询效率。
- 外键: 如果需要建立外键约束关系,需要在建表语句中添加相应的约束信息。
总结
通过本文的介绍,开发者可以根据 Java 实体类自动生成 MySQL 建表语句,提高开发效率,并保证数据库结构的规范性。
希望本文对开发者有所帮助,欢迎分享你的经验和想法。
原文地址: https://www.cveoy.top/t/topic/oFle 著作权归作者所有。请勿转载和采集!