Hibernate 数据类型映射关系
Java 基本类型的 Hibernate 映射
标准SQL类型 | 大小和取值范围 | 映射类型 | Java类型 |
---|---|---|---|
INTEGER | 4字节 | integer或者int | int或者java.lang.Integer |
BIGINT | 8字节 | long | long or java.lang.Long |
SMALLINT | 2字节 | short | short or java.lang.Short |
TINYINT | 1字节 | byte | byte or java.lang.Byte |
FLOAT | 4字节 | float | float or java.lang.Float |
DOUBLE | 8字节 | double | double or java.lang.Double |
NUMERIC | NUMERIC(8,2)8位 | big_decimal | java.math.BigDecimal |
CHAR(1) | 定长字符 | character | char Character java.lang.String |
VARCHAR | 变长字符串 | string | java.lang.String |
BIT | 布尔类型 | boolean | boolean or java.lang.Boolean |
CHAR(1)(Y-N) | 布尔类型 | yes_no | boolean or java.lang.Boolean |
CHAR(1)(T-F) | 布尔类型 | true_false | boolean or java.lang.Boolean |
Java 时间和日期类型的 Hibernate 映射
标准SQL类型 | 描述 | 映射类型 | Java类型 |
---|---|---|---|
DATE | YYYY-MM-DD | date | java.util.Date or java.sql.Date |
TIME | HH:MM:SS | time | java.util.Date or java.sql.Time |
TIMESTAMP | YYYYMMDDHHMMSS | timestamp | java.util.Date or java.sql.Timestamp |
TIMESTAMP | YYYYMMDDHHMMSS | calendar | java.util.Calendar |
DATE | YYYY-MM-DD | calendar/date | java.util.Calendar |
Java 大对象类型的 Hibernate 映射
标准SQL类型 | MySQL 类型 | Oracle 类型 | 映射类型 | Java类型 |
---|---|---|---|---|
VARBINARY( 或 BLOB) | BLOB | BLOB | binary | byte[] |
CLOB | TEXT | CLOB | text | java.lang.String |
VARBINARY( 或 BLOB) | BLOB | BLOB | serializable | java.io.Serializable的任何实例 |
CLOB | TEXT | CLOB | clob | java.sql.Clob |
BLOB | BLOB | BLOB | blob | java.sql.Blob |
VARCHAR | class | java.lang.Class | ||
VARCHAR | locale | java.util.Locale | ||
VARCHAR | timezone | java.util.TimeZone | ||
VARCHAR | currency | java.util.Currency |
数据库整数型描述
INT 类型 | 类型的实际含义 | 描述 |
---|---|---|
tinyint(m) | 8位整数 占用1个字节 (-128 ~ +127) |
TINYINT的取值范围是从-128 ~ +127,如果使用了UNSIGNED属性,那么它的取值范围就变成了0 ~ +255。 如果用户试图存入超过字段取值范围的数字,MYSQL所做的工作就非常简单,它会直接替换成最大可取值或最小可取值。 tinyint(m)括号中的m,指的是最大"显示"宽度。 |
smallint(m) | 16位整数 占用2个字节 (-32768~+32767) |
|
medimumint(m) | 24位整数 占用3个字节 (-8388608~+8388607) |
|
int(m),integer(m) | 32位整数 占用4个字节 (-2147483648~+2147483647) |
|
bigint(m) | 64位整数 占用8个字节 (-9.22E+18 ~ +9.22E+18) |
|
serial | bigint auto_increment not null primary key 的简写 | serial含义里的auto_increment,代表了该字段是自增字段。 即,往有该属性的字段里插数据时,系统会自动把该字段的当前最大值加上1后存进去。 一般而言,该属性往往用于主键字段。 在使用该属性时应当注意以下几个问题: 1、该属性必须与NOT NULL、primary Key 或者 Unique属性同时使用。 2、每个数据表只能存有一个auto_increment属性的数据列 3、该属性一般是在进行数据插入时,没有明确指定值或者指定值为NULL时,才起作用。如果指定了值,并且该值还没有出现过,MYSQL将使用该值插入,以生成一条新记录。这时候就有两种情况: a) 原有的数据是1100,后来删除了2080的内容,即数据库里只存在119,81100的数据,当插入ID为20的数据时,数据库还是会按照规则,把20这条记录插进去,并不会报错,自增值仍然是100,下次正常插入时,还是会默认使用101这个值。 b) 原有的数据是1~100,我插入ID为1000的数据时,不会报错,但自增值变为1000,下次插入数据从1001起算。 参考 Mysql 数据类型:https://www.cnblogs.com/mjtabu/p/12885043.html |