欢迎光临我的博客[http://poetize.cn ],前端使用Vue2,聊天室使用Vue3,后台使用Spring Boot
Copy
MySQL Connector/J 对于 MySql 数据类型和 Java 数据类型之间的转换是很灵活的:
一般来讲,任何 MySql 数据类型都可以被转换为一个 java.lang.String。
任何 MySql 数字类型都可以被转换为任何一种 Java 数字类型。
(当然这样也可能出一些四舍五入,溢出,精度丢失之类的问题)。
Java基础类型与包装类型#
Copy
a )
如果数据库字段是允许为空的,使用包装类。
如果不允许为空,使用包装的时候,如果你往数据库插入null值,此时就会抛出异常。
然后你就可以对异常进行捕获并处理。
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
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
Mysql字段类型#
Copy
decimal (8 ,2 ):
有2 位小数的定点数,定点数支持很大的数(甚至是超过int ,bigint 存储范围的数)
decimal 不会损失精度,存储空间会随数据的增大而增大。double 占用固定空间,较大数的存储会损失精度。
字符串型:
定长与变长的区别,CHAR 类型占用空间比较大,但是处理速度比VARCHAR 快。
如果长度变化不大,最好选择CHAR 类型。对于长度不确定的,最好选择VARCHAR 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构