MySql 字段类型对应 Java 实体类型
前言
MySQL Connector/J 对于 MySql 数据类型和 Java 数据类型之间的转换是很灵活的:
一般来讲,任何 MySql 数据类型都可以被转换为一个 java.lang.String。
任何 MySql 数字类型都可以被转换为任何一种 Java 数字类型。
(当然这样也可能出一些四舍五入,溢出,精度丢失之类的问题)。
Java基础类型与包装类型
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字段类型
decimal(8,2):
有2位小数的定点数,定点数支持很大的数(甚至是超过int,bigint存储范围的数)
decimal不会损失精度,存储空间会随数据的增大而增大。double占用固定空间,较大数的存储会损失精度。
字符串型:
定长与变长的区别,CHAR类型占用空间比较大,但是处理速度比VARCHAR快。
如果长度变化不大,最好选择CHAR类型。对于长度不确定的,最好选择VARCHAR。



MySql 字段类型对应 Java 实体类型的更多相关文章
- asp.net core系列 28 EF模型配置(字段,构造函数,拥有实体类型)
一. 支持字段 EF允许读取或写入字段而不是一个属性.在使用实体类时,用面向对象的封装来限制或增强应用程序代码对数据访问的语义时,这可能很有用.无法使用数据注释配置.除了约定,还可以使用Fluent ...
- 数据库类型对应Java语言类型表
下表列出了基本 SQL Server.JDBC 和 Java 编程语言数据类型之间的默认映射: SQL Server 类型 JDBC 类型 (java.sql.Types) Java 语言类型 big ...
- Mysql和oracle字段类型与java对象类型对应表收藏
https://blog.csdn.net/michaelzhou224/article/details/16827029 Mysql Oracle Java BIGINT NUMBER(19,0) ...
- MySql 的类型和Java的类型
参考:https://www.cnblogs.com/jerrylz/p/5814460.html 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 ...
- mysql类型对应Java的类型
整型 JDBCtinyint java.lang.Integersmallintmediumint java.lang.Longint bigint ...
- 无聊系列 - C#中一些常用类型与java的类型对应关系
昨天在那个.NET转java群里,看到一位朋友在问C#的int 对应java的哪个对象,就心血来潮,打算写一下C#中一些基础性的东西,在java中怎么找. 1. 基础值类型 如:int,long,do ...
- java.sql.Types,数据库字段类型,java数据类型的对应关系
以下转自:http://kummy.itpub.net/post/17165/172850 本文在原文基础上有增减. 本概述是从<JDBCTM Database Access from Java ...
- SQLServer类型与Java类型转换问题解决
ResultSet 接口提供用于从当前行获取列值的获取 方法(getBoolean.getLong 等).可以使用列的索引编号或列的名称获取值.一般情况下,使用列索引较为高效.列从 1 开始编号.为了 ...
- JVM总结-java基本类型
为什么要引进基本类型? Java 引进了八个基本类型,来支持数值计算.Java 这么做的原因主要是工程上的考虑,因为使用基本类型能够在执行效率以及内存使用两方面提升软件性能. Java 虚拟机的 bo ...
随机推荐
- JavaScript常用技巧之时间操作
1.获取当前时间戳 +new Date Date.parse(new Date())
- 获取min-max之间的随机数
private static String getRandom(int min, int max){ Integer random =(int)(min+Math.random()*(max-min+ ...
- Mac上安装Android SDK
今天开始学习IOS,所以先买了个设备先,但是开始使用了苹果本,还是需要继续开发Android,因为那是我现在吃饭的东西,所以就需要在Mac上配置Android SDK,原以为安装SDK很简单,和Win ...
- div + css 边框 虚线
div + css 边框 虚线 dotted:[点线|有点的|点线式边框|点虚线] .introduce { border:1px dotted gray; margin:8px 5px 8px 10 ...
- on() 不支持hover事件
因为 .hover() 是 jQuery 自己定义的事件… 是为了方便用户绑定调用 mouseenter 和 mouseleave 事件而已,它并非一个真正的事件,所以当然不能当做 .bind() 中 ...
- 通过Bochs分析Lilo启动Linux内核的过程
1. Bochs调试 参考:http://www.cnblogs.com/long123king/p/3414884.html http://bochs.sourceforge.net/cgi-bin ...
- LeetCode 复制带随机指针的链表
题目链接:https://leetcode-cn.com/problems/copy-list-with-random-pointer/ 题目大意 略. 分析 空间复杂度 O(1) 的做法非常开拓思维 ...
- Codeforces 1191B Tokitsukaze and Mahjong
题目链接:http://codeforces.com/problemset/problem/1191/B 题意:类似于麻将,三个一样花色一样数字的,或者三个同花顺就赢了,新抽的能当任何类型,问至少几个 ...
- C# WinfForm 控件之dev报表 XtraReport (五) 并排报表
有了前边的基础这个就很简单了,建一个容器报表 在detail,上放两个xrsubReport.再做两个明细报表,分别指定到xrsubreport就可以了
- DNF抽奖活动
活动内容: DNF用户在注册页面注册获得抽奖资格(或分享好友注册)参与抽奖,产生奖品后,活动参与用户,在活动领奖页面领取奖品,金币及点券需填写相应游戏区服.qq号等信息,并且为防止活动刷子,在领取页提 ...