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 ...
随机推荐
- kernel: possible SYN flooding on port 80. Sending cookies
1. sysctl -w net.ipv4.tcp_syncookies=1 #启用使用syncookiessysctl -w net.ipv4.tcp_synack_retries=1 #降低syn ...
- MySQL的一次优化记录 (IN子查询和索引优化)
这两天实习项目遇到一个网页加载巨慢的问题(10多秒),然后定位到是一个MySQL查询特别慢的语句引起的: SELECT * FROM ( SELECT DISTINCT t.vc_date, t.c_ ...
- Codeforces 251C Number Transformation DP, 记忆化搜索,LCM,广搜
题意及思路:https://blog.csdn.net/bossup/article/details/37076965 代码: #include <bits/stdc++.h> #defi ...
- nodejs express的基本用法
demo /** * Created by ZXW on 2017/11/6. */ var express=require("express"); var server=expr ...
- mongoose 常用数据库操作 删除
删除 Model.remove(conditions, [callback]) try.js var User = require("./user.js"); function d ...
- DELPHI 多线程(TThread类的实现)
之前学习了用API实现,让我们再学习下用DELPHI的TThread类. 先新建一个普通的工程,再新建一个线程类File>>New>>Othre>>Delphi F ...
- docker安装cboard
参考链接: https://hub.docker.com/r/chenlmdocker/docker-cboard/dockerfile https://www.cnblogs.com/zimo-ji ...
- C#txt文本分割器
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- .gitignore 文件使用说明
我们在使用 Git 进行版本控制的时候,有些文件是无需纳入 Git 管理的,通常都是些自动 生成的文件,像日志或者编译过程中创建的文件.我们可以创建一个名为 .gitignore 的文件,列出要忽略的 ...
- fiddler抓包工具详解
转自:http://www.cnblogs.com/yyhh/p/5140852.html Fiddler 抓包工具总结 阅读目录 1. Fiddler 抓包简介 1). 字段说明 2). Sta ...