MySQL字段类型与Java实体类类型对应转换关系详解
作者:Whitemeen太白
这篇文章主要介绍了MySQL字段类型与Java实体类类型对应转换关系,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
MySQL字段类型与Java实体类类型对应转换
MySQL Connector/J( MySQL官方JDBC驱动程序)在处理MySQL数据类型和Java数据类型之间的转换方面非常灵活。
通常,任何MySQL数据类型都可以转换为java.lang.String。
可以将字符串和任何数字类型转换为任何Java数字类型,尽管可能会发生舍入、溢出或精度损失。
从Connector/J 3.1.0开始,JDBC驱动程序会发出警告或引发JDBC规范所要求的DataTruncation异常(数据截断异常),除非通过使用jdbcCompliantTruncation属性并将其设置为false来将连接配置为不这样做。
MySQL和Java类型之间始终保证有效的转换
MySQL类型 | 可转换的Java类型 |
---|---|
char, varchar, blob, text, enum, set | java.lang.String, java.io.InputStream, java.io.Reader, java.sql.Blob, java.sql.Clob |
float, real, double, precision, numeric, decimal, tinyint, smallint, mediumint, integer, bigint | java.lang.String, java.lang.Short, java.lang.Integer, java.lang.Long, java.lang.Double, java.math.BigDecimal |
date, time, datetime, timestamp | java.lang.String, java.sql.Date, java.sql.Timestamp |
注意:
如果选择的Java数字数据类型的精度或容量低于要转换的MySQL数据类型,则可能会发生舍入、溢出或精度损失。
对应关系
MySQL类型 | 对应Java类型 | 用途 |
---|---|---|
tinyint | 如果配置属性 tinyInt1isBit 设置为 true (默认)并且存储大小为1,则为 java.lang.Boolean ,否则是 java.lang.Integer。 | |
smallint | java.lang.Integer(不管它是否是unsigned ) | |
mediumint | java.lang.Integer(不管它是否是unsigned ) | |
int | java.lang.Integer, 如果是 unsigned 则是 java.lang.Long | 整数 |
integer | java.lang.Integer, 如果是 unsigned 则是 java.lang.Long | |
bigint | java.lang.Long, 如果是 unsigned 则是 java.math.BigInteger | |
bit(1) | java.lang.Boolean | |
bit(>1) | byte[] | |
real | Java | |
double | java.lang.Double | |
float | java.lang.Float | |
decimal | java.math.BigDecimal | 金额 |
numeric | Java | |
char | java.lang.String (除非列的字符集是BINARY,否则返回byte[]。) | |
varchar | java.lang.String (除非列的字符集是BINARY,否则返回byte[]。) | |
date | java.sql.Date | 日期 |
time | java.sql.Time | 时间 HH:MM:SS |
year | 如果 yearIsDateType 配置属性设置为 false,则返回的对象类型为 java.sql.Short。 如果设置为 true (默认),则返回的对象类型为 java.sql.Date,日期设置为1月1日0:00点。 | |
timestamp | java.sql.Timestamp | 时间戳 YYYY-MM-DD HH:MM:SS |
datetime | java.sql.Timestamp | YYYY-MM-DD HH:MM:SS |
tinyblob | byte[] | |
blob | byte[] | |
mediumblob | byte[] | |
longblob | byte[] | |
tinytext | java.lang.String | |
text | java.lang.String | |
mediumtext | java.lang.String | |
longtext | java.lang.String | |
enum | java.lang.String | |
set | java.lang.String | |
binary | byte[] | |
varbinary | byte[] | |
point | 位图 GIS地理坐标 | |
linestring | 线图 | |
polygon | 多边形 | |
geometry | 几何图形 | |
multipoint | 复合位图 | |
multilinestring | 复合线图 | |
multipolygon | 复合多边形 | |
geometrycollection | 几何集合 |
Java中属性与字段的关系
理论
通常来说:
- 字段(Field):是类中的变量,用于存储对象的状态或者类的状态。字段可以是任何基本数据类型(如 int、double、boolean 等),也可以是对象类型(如 String、自定义类等)。
- 属性(Property):是对字段的抽象和封装,通常通过 getter 和 setter 方法来控制对字段的访问。属性将字段封装在类的内部,提供了更好的控制和更友好的接口,使得数据在类内部更安全地被访问和操作。属性是字段的一种高级表示,它隐藏了字段的具体实现细节,提供了更严格的控制和更灵活的操作。
因此,可以说属性是字段的一种,但并不是所有的字段都是属性。
在很多情况下,属性是通过 getter 和 setter 方法来操作字段的,但也有些情况下,类中的字段可能不会被封装成属性,而直接暴露给外部使用。
在idea中演示
心得:
属性是字段的一种。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。