MySql字段类型对应Java实体类型

MySql字段类型对应Java实体类型

MySQL Connector/J 对于 MySql 数据类型和 Java 数据类型之间的转换是很灵活的。
一般来讲,任何 MySql 数据类型都可以被转换为一个 java.lang.String,

任何 MySql 数字类型都可以被转换为任何一种 Java 数字类型

(当然这样也可能出一些四舍五入,溢出,精度丢失之类的问题)。

 

 

基础类型与包装类型

a)

  如果你的数据库字段是允许为空的,使用包装类。

  如果不允许为空,使用包装的时候,如果你往数据库插入null值,此时就会抛出异常。

  然后你就可以对异常进行捕获并处理。

扫描二维码关注公众号,回复: 6920851 查看本文章

 

b)

  使用基本数据类型的时候,如果字段是NULL,那么JDBC会返回0,但是这里会有一个问题。

  有可能0在你的业务逻辑代表着特定含义,这时候就可能出现一些意想不到的后果。

 

 

 

总结:在项目中去使用包装类型而不是基本数据类型,这样可以使你编写代码更简单,

      除非有人给你一个更好的理由去使用基本数据类型或者你的上头要求一定要使用基本数据类型。

 

 

                ResultSet.getObject() 对 MySql 类型和 Java 类型转换表
MySql 类型名 GetColumnClassName 返回值 返回的 Java 类

bit(1)

(MySQL-5.0 )

BIT java.lang.Boolean

bit(大于 1) 

(MySQL-5.0 )

BIT byte[]
tinyint TINYINT

如果 tinyInt1isBit 配置

设置为 true(默认为 true),是java.lang.Boolean,存储空间 为 1;

否则是为 java.lang.Integer

bool

boolean

TINYINT 参见 TINYINT。这些是 TINYINT(1) 另一种写法而已

smallint(M)

[unsigned]

SMALLINT

[UNSIGNED]

java.lang.Integer(不管是否无符)

mediumint(M)

[unsigned]

MEDIUMINT

[UNSIGNED]

java.lang.Integer;

无符的话是 java.lang.Long(C/J 3.1 或更早),

或者 java.lang.Integer(C/J 5.0 或更晚)

int

integer(M)

[unsigned]

INTEGER

[UNSIGNED]

java.lang.Integer;

无符的话是 java.lang.Long

bigint(M)

[unsigned]

BIGINT

[UNSIGNED]

java.lang.Long;

无符的话是 java.math.BigInteger

float(M,D)

FLOAT java.lang.Float

double(M,B)

DOUBLE java.lang.Double

decimal(M,D)

DECIMAL java.math.BigDecimal

date

DATE java.sql.Date

datetime

DATETIME java.sql.Timestamp

timestamp(M)

TIMESTAMP java.sql.Timestamp

time

TIME java.sql.Time
year(2|4) YEAR

如果 yearIsDateType  

配置设置为 false,返回的对象类型为 java.sql.Short;

如果设置为 true(默认为 true),返回的对象类型是 java.sql.Date,其具体时间是为一月一日零时零分

char(M) CHAR

java.lang.String

(除非该列字符集设置为 BINARY,那样返回 byte[])

varchar(M)

[binary]

VARCHAR

java.lang.String

(除非该列字符集设置为 BINARY,那样返回 byte[])

binary(M)

BINARY byte[]

varbinary(M)

VARBINARY byte[]

tinyblob

TINYBLOB byte[]

tinytext

VARCHAR java.lang.String

blob

BLOB byte[]

text

VARCHAR java.lang.String

mediumblob

MEDIUMBLOB byte[]

mediumtext

VARCHAR java.lang.String

longblob

LONGBLOB byte[]

longtext

VARCHAR java.lang.String

enum

('value1','value2',...)

CHAR java.lang.String

set

('value1','value2',...)

CHAR java.lang.String

猜你喜欢

转载自www.cnblogs.com/loveer/p/11281710.html