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中演示
心得:
属性是字段的一种。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论