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 ...
随机推荐
- shell 编程四剑客简介 find sed grep awk(微信公众号摘抄)
一,Shell编程四剑客之Find 通过如上基础语法的学习,读者对Shell编程有了更近一步的理解,Shell编程不再是简单命令的堆积,而是演变成了各种特殊的语句.各种语法.编程工具.各种命令的集合. ...
- js两个数组去重后,绑定控件,并支持模糊搜索数组项以及数组互移
设计大概是这个样子的,很简单,两个div,两个互移按钮,一个搜索框,要求搜索框输入时,触发待选框的搜索项 <input class="form-control" placeh ...
- docker安装cboard
参考链接: https://hub.docker.com/r/chenlmdocker/docker-cboard/dockerfile https://www.cnblogs.com/zimo-ji ...
- 使用Vue和djangoframwork完成登录页面构建 001
使用Vue和djangoframwork完成登录页面构建 001 环境的搭建 首先,我在我的电脑的F盘创建了一个文件夹 forNote,进入到这个文件夹中 F:\forNote> vue环境的搭 ...
- 调用JavaScript实现字符串计算器
调用JavaScript实现字符串计算器 如果表达式是字符串的形式,那么一般我们求值都会遇到很大的问题. 这里有一种直接调用JavaScript的方法来返回数值,无疑神器. 代码如下: @Fros ...
- Spring 容器初始化方法
Resource resource = new ClassPathResource("/bean.xml"); resource = new FileSystemR ...
- HDU6333 求组合数前m项的和
目录 分块 莫队 @ HDU6333:传送门 题意:求组合数前m项的和. 在线分块or离线莫队 分块 重要的一个定理: \[C_{n}^{m} = 0\;\;m > n\] \[C_{n}^{m ...
- (14)centos7 进程管理
一.查询进程 1. 进程显示 ps -a 显示当前所有的进程信息 -u 以用户的格式显示进程信息 -x 显示后台进程运行的参数 ps -aux #通常查看内存 USER #执行进程的用户 PID #进 ...
- 戏说 .NET GDI+系列学习教程(二、Graphics类的方法)
一.DrawBezier 画立体的贝尔塞曲线 private void frmGraphics_Paint(object sender, PaintEventArgs e) { Graphics g ...
- TFS 中如何将项目加入已有的源代码管理器中?
Visual Studio 的某解决方案已经加入 Team Foundation Server,现在再将已经存在的项目加入到解决方案中,可是签入时,并没有把新加入的项目签入,怎么办呢? 在团队资源管理 ...