Files
skills/java-spec/references/orm.md
T
2026-09-26 16:09:11 +08:00

2.1 KiB

实体类与数据库表字段的映射规则

仅适用于Mybatis-Plus框架。

  • 数据库表结构字段名称、实体类字段名称,采用驼峰与下划线映射的方式。
  • @TableField注解中typeHandler等于JacksonTypeHandler.class时,表结构字段默认JSON类型,在spring-boot版本>=4.0应换成Jackson3TypeHandler。
  • 实体类字段包含@NotNull注解,如果字段被@Schema注解修饰,需要结合defaultValue属性判断是否需要设置默认值。
  • 主键列是否采用MySQL自增序列,取决于实体类被@TableId注解修饰的字段,要看其type属性,如果是IdType.AUTO则使用自增,否则不需要。
  • 如果字段被@Schema注解修饰,且指定了maxLength属性,按如下原则设置字段类型:
    • maxLength<=2000,使用VARCHAR
    • maxLength>2000且<10000,使用TEXT
    • maxLength>10000,使用LONGTEXT

MySQL

实体类字段类型 MySQL字段类型
String VARCHAT(255)
Long BIGINT
Integer INT
LocalDate DATE
LocalDateTime DATETIME
BigDecimal DECIMAL(14, 2)

SQLite

实体类属性类型 SQLite字段类型 说明
String TEXT -
Long INTEGER -
Integer INTEGER -
LocalDate TEXT 以yyyy-MM-dd格式字符串存储
LocalDateTime TEXT 以yyyy-MM-dd HH:mm:ss格式字符串存储
@TableField(typeHandler = JacksonTypeHandler.class) TEXT 配合JacksonTypeHandler自动序列化/反序列化
BigDecimal TEXT 用TEXT存储精确数值,避免浮点精度丢失

PostgreSQL

实体类属性类型 PostgreSQL字段类型 说明
String TEXT -
Long BIGINT -
Integer INTEGER -
LocalDate DATE 直接使用原生日期类型存储
LocalDateTime TIMESTAMP 直接使用原生时间戳类型存储
@TableField(typeHandler = JacksonTypeHandler.class) TEXT / JSONB 配合JacksonTypeHandler自动序列化/反序列化;JSONB性能更优且支持索引
BigDecimal NUMERIC 用NUMERIC存储精确数值,避免浮点精度丢失