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 ...
随机推荐
- JSP中调用Spring的方法
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- Eclipse导入的Maven项目没有Build Path
我导入的是 Signal-Server项目到 Eclipse中,发现 src 文件夹上面没有#号,包视图和语法提示都没有 ~~ 解决方法: 修改 Project Facets 在 项目右键 -> ...
- css 垂直居中、水平居中
在父元素.子元素未知的情况下居中有两种方法: 第一种方法: .partent{ display:flex; justify-content:center; align-items:center; } ...
- springboot集成使用rabbitmq笔记(1.rabbitmq安装)
使用rabbitmq笔记一 使用rabbitmq笔记二 使用rabbitmq笔记三 1.选择适配的版本,参考---https://www.rabbitmq.com/which-erlang.html ...
- 关于axios中post请求提交后变成get的问题
这个问题归结于自己的不细心,如下图. 头疼了好久,才发现是自己多写了一个s,在此记录一下.
- H5新属性 contenteditable
contenteditable 属性规定元素内容是否可编辑 <div contenteditable style="width: 100px;height:100px"> ...
- CSS格式化---属性排序
一.背景 与同事合作开发一个项目,后面修改 CSS 时,发现属性顺序跟我写的不一样 我从事开发前端时,导师是有给我大概指定了一定的书写规范 现在开发时,看到的 CSS 属性排序不一样,看起来有点难受( ...
- 【LeetCode 15】三数之和
题目链接 [题解] 先把n个数字升序排个序. 然后枚举三元组最左边的那个数字是第i个数字. 之后用两个指针l,r移动来获取三元组的第2个和第3个数字. (初始值,l=i+1,r = n-1); 如果a ...
- delphi 文件分割与合并
流的使用分割与合并文件的函数 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, ...
- [NOIP模拟测试3] 建造游乐园 题解(欧拉图性质)
Orz 出题人石二队爷 我们可以先求出有n个点的联通欧拉图数量,然后使它删或增一条边得到我们要求的方案 也就是让它乘上$C_n^2$ (n个点里选2个点,要么删边要么连边,选择唯一) 那么接下来就是求 ...