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中演示

心得:
属性是字段的一种。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持IT俱乐部。
