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占用固定空间,较大数的存储会损失精度。

原文地址:https://www.cnblogs.com/loveer/p/11604423.html

时间: 2024-08-26 14:36:38

MySql 字段类型对应 Java 实体类型的相关文章

asp.net core系列 28 EF模型配置(字段,构造函数,拥有实体类型)

原文:asp.net core系列 28 EF模型配置(字段,构造函数,拥有实体类型) 一. 支持字段 EF允许读取或写入字段而不是一个属性.在使用实体类时,用面向对象的封装来限制或增强应用程序代码对数据访问的语义时,这可能很有用.无法使用数据注释配置.除了约定,还可以使用Fluent API为属性配置支持字段. 1.1 约定 public class Blog { // _<camel-cased property name> private string _url; public int

数据库类型对应Java语言类型表

下表列出了基本 SQL Server.JDBC 和 Java 编程语言数据类型之间的默认映射: SQL Server 类型 JDBC 类型 (java.sql.Types) Java 语言类型 bigint BIGINT long timestamp binary BINARY byte[] bit BIT boolean char CHAR String decimal money smallmoney DECIMAL java.math.BigDecimal float DOUBLE dou

mysql类型对应Java的类型

整型 JDBCtinyint         java.lang.Integersmallintmediumint       java.lang.Longint          bigint         java.math.BigInteger 单精度浮点型 JDBCfloat         java.lang.Float 双精度浮点型 JDBCdouble         java.lang.Double 其他 JDBCdecimal         java.math.BigDec

无聊系列 - C#中一些常用类型与java的类型对应关系

昨天在那个.NET转java群里,看到一位朋友在问C#的int 对应java的哪个对象,就心血来潮,打算写一下C#中一些基础性的东西,在java中怎么找. 1. 基础值类型 如:int,long,double,float,bool,char,decimal等 这些基础值类型除了对应java中同名的基础类型(decimal除外)外,还有对应的包装类对应C#中这些类型的操作方法. java中的基本类型,不像C#中可以用点调用出一些方法的.这个时候,就需要对应的包装类. 对应关系: C# Java包装

Spring Boot配置Mysql后无法根据java实体类生成table

https://www.imooc.com/qadetail/193270?t=292816 检查了两天,没找到问题.原因为实体类必须在主程序application的同名包或者子包下面,启动时才会扫描到.FUCK! 原文地址:https://www.cnblogs.com/nxzwcx/p/8997857.html

SQLServer类型与Java类型转换问题解决

ResultSet 接口提供用于从当前行获取列值的获取 方法(getBoolean.getLong 等).可以使用列的索引编号或列的名称获取值.一般情况下,使用列索引较为高效.列从 1 开始编号.为了获得最大的可移植性,应该按从左到右的顺序读取每行中的结果集列,每列只能读取一次. 对于获取方法,JDBC 驱动程序尝试将底层数据转换为在获取方法中指定的 Java 类型,并返回适当的 Java 值.JDBC 规范有一个表,显示允许的从 SQL 类型到 ResultSet 获取方法所使用的 Java

java表达式类型自动提升

[一道经典的Java面试题] short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 答案是:前者错,后者对.相信不管是否经历过java面试过,大家一定对这道题很熟悉.因为这道题确实太经典了,以至于成为了基本每个老师都会拿出来,当作课堂例题来讲.要说清这道题,首先看看java表达式类型转换规则. [java表达式类型转换] java是一门强类型语言,不仅每个变量具有指定的数据类型,它的表达式也有指定的数据类型.因此在不同类型之间进行

mysql 字段的类型有哪些

int型包括(tinyint, smallint, mediumint, int, bigint) tinyint是1个字节表达范围就是2的8次方(-128-128) 或者(0-255) 很多人不明白为什么有两种情况,因为在计算机中有一种说法叫做无符号,也就是全部是正整数,所以在用MySQL 选择整形字段的时候一定要加上unsigned也就是无符号,因为负数基本不会用到. smallint是2个字节表达范围2的16次方 smallint是3个字节表达范围2的24次方 int是4个字节表达范围2的

六、mysql字段类型选择

1.char类型字段会自动删除字符串后面所带的空格,而varchar不会 2.char比varchar快..... 3.myisam 建议 char类型,memory char跟varchar一样,都作为char类型处理:innodb建议 varchar类型 4.optimize table 清理碎片 text碎片产生实例: create table emp (id tinying(1),content text)engine=myisam; 新建测试表 insert into emp valu