精华内容
下载资源
问答
  • 标准SQL类型 字节大小 integer/int java.lang.Integer/int INTEGER 4Byte long java.lang.Long/long BIGINT 8Byte short java.lang.Short/short SMALLINT 2Byte byte ja...

    【1】常见的映射关系表

    常见的映射对应关系如下表所示:

    Hibernate映射类型 Java类型 标准SQL类型 字节大小
    integer/int java.lang.Integer/int INTEGER 4Byte
    long java.lang.Long/long BIGINT 8Byte
    short java.lang.Short/short SMALLINT 2Byte
    byte java.lang.Byte/byte TINYINT 1Byte
    float java.lang.Float/float FLOAT 4Byte
    double java.lang.Double/double DOUBLE 8Byte
    big_decimal java.math.BigDecimal NUMERIC
    character java.lang.Character/java.lang.String/char CHAR 定长字符
    string java.lang.String VARCHAR 变长字符
    boolean/yes_no/true_false java.lang.Boolean/boolean BIT 布尔类型
    date java.util.Date/java.sql.Date DATE 日期
    time java.util.Date/java.sql.Time TIME 时间
    timestamp java.util.Date/java.util.Timestamp TIMESTAMP 日期
    calendar java.util.Calendar TIMESTAMP 日期
    calendar_dar java.util.Calendar DATE 日期
    binary byte[] BLOB BLOB
    text java.lang.String CLOB CLOB
    serializable 实现java.io.Serializable接口的任意Java类 BLOB BLOB
    clob java.sql.Clob CLOB CLOB
    blob java.sql.Blob BLOB BLOB
    class java.lang.Class VARCHAR 定长字符
    locale java.util.Locale VARCHAR 定长字符
    timezone java.util.TimeZone VARCHAR 定长字符
    currency java.util.Currency VARCHAR 定长字符

    【2】Java时间和日期类型的Hibernate映射

    在 Java 中, 代表时间和日期的类型包括: java.util.Date 和 java.util.Calendar。

    此外, 在 JDBC API 中还提供了 3 个扩展了 java.util.Date 类的子类: java.sql.Date, java.sql.Time 和 java.sql.Timestamp, 这三个类分别和标准 SQL 类型中的 DATE, TIME 和 TIMESTAMP 类型对应。

    因此在Java类中通常都将Date类型设置为java.util.Date。

    在这里插入图片描述

    在标准 SQL 中, DATE 类型表示日期, TIME 类型表示时间, TIMESTAMP 类型表示时间戳, 同时包含日期和时间信息。

    映射类型 Java类型 标准SQL类型 描述(java中表示)
    date java.util.Date/java.sql.Date DATE 日期:yyyy-MM-dd
    time java.util.Date/java.sql.Time TIME 时间 :HH:mm:ss
    timestamp java.util.Date/java.util.Timestamp TIMESTAMP 日期和时间:yyyy-MM-dd HH:mm:ss
    calendar java.util.Calendar TIMESTAMP 同上
    calendar_dar java.util.Calendar DATE 日期:yyyy-MM-dd

    如何把java.util.Date映射为DATE , TIME和TIMESTAMP?

    一个 Java 类型可能对应多个 Hibernate 映射类型。 例如: 如果持久化类的属性为 java.util.Date 类型, 对应的 Hibernate 映射类型可以是 date, time 或 timestamp。

    此时可以根据对应的数据表的字段的 SQL 类型, 来确定 Hibernate 映射类型。

    如果字段为 DATE 类型, 那么 Hibernate 映射类型为 date; 如果字段为 TIME 类型, 那么 Hibernate 映射类型为 time; 如果字段为 TIMESTATMP 类型, 那么 Hibernate 映射类型为 timestamp。

    当然也可以在XML中显示指定Hibernate映射类型如下所示:

     <property name="date" type="timestamp">
       <column name="DATE" default="null" />
     </property>
    

    不同类型日期时间在Java中的表示

    java.sql.Time和java.sql.Date如上表所示,格式为:

    HH:mm:ss
    yyyy-MM-dd
    

    但是java.util.Date和java.sql.Timestamp就有些细节要注意了:

    //数据库 datetime类型和timestamp类型
    2018-10-05 16:13:46
    2018-10-10 09:58:23
    
    //Java显示 java.util.Date和java.sql.Timestamp
    date=2018-10-05 16:13:46.0
    timestamp=2018-10-10 09:58:23.0
    

    后面会多一个小数位秒,称之为纳秒,具体可以查看java.util.Date和java.sql.Timestamp源码。

    尤其是如果数据库为date类型,Java对应接收类型为java.util.Date,就更有意思了:

    //数据库  date类型
    2018-10-05
    // Java  java.util.Date类型
    date=2018-10-05 00:00:00.0
    

    会自动给你补上00:00:00

    参考博文:

    MySQL中日期和时间格式化
    MyBatis中Java类型和JDBC类型映射


    【3】Java 大对象类型的 Hiberante 映射

    ① 几个概念

    在 Java 中, java.lang.String 可用于表示长字符串(长度超过 255), 字节数组 byte[] 可用于存放图片或文件的二进制数据。

    此外, 在 JDBC API 中还提供了 java.sql.Clob 和 java.sql.Blob 类型, 它们分别和标准 SQL 中的 CLOB 和 BLOB 类型对应。 CLOB 表示字符串大对象(Character Large Object), BLOB表示二进制对象(Binary Large Object)。

    映射类型 Java类型 标准SQL类型 MySQL类型 Oracle类型
    binary byte[] VARCHAR/BLOB BLOB BLOB
    text java.lang.String CLOB TEXT CLOB
    clob java.sql.Clob CLOB TEXT CLOB
    blob java.sql.Blob BLOB BLOB BLOB

    MySQL不支持标准 SQL 的 CLOB 类型, 在 MySQL 中, 用 TEXT, MEDIUMTEXT 及 LONGTEXT 类型来表示长度超过 255 的长文本数据。

    在持久化类中, 二进制大对象可以声明为 byte[] 或 java.sql.Blob 类型; 字符串可以声明为 java.lang.String 或 java.sql.Clob。

    实际上在 Java 应用程序中处理长度超过 255 的字符串, 使用 java.lang.String 比 java.sql.Clob 更方便。


    ② 实例测试

    • 在pojo中添加blob属性字段:
    public class News {
    	
    	private Integer id; //field
    	private String title;
    	private String author;
    	
    	private String describle;
    	
    	private Date date;
    	
    	//使用 title + "," + content 可以来描述当前的 News 记录. 
    	//即 title + "," + content 可以作为 News 的 describle 属性值
    	//大文本
    	private String content;
    	
    	private Blob picture;
    	//...
    }
    
    • News.hbm.xml:
    <property name="picture" type="java.sql.Blob">
       <column name="PICTURE" default="null" />
    </property>
    
    • 测试代码如下:
    	@Test
    	public void testBlob() throws Exception{
    		News news = new News();
    		news.setAuthor("cc");
    		news.setContent("CONTENT");
    		news.setDate(new Date());
    		news.setDescrible("DESC");
    		news.setTitle("CC");
    		
    		InputStream stream = new FileInputStream("1.jpg");
    		Blob image = Hibernate.getLobCreator(session)
    				              .createBlob(stream, stream.available());
    		news.setPicture(image);
    		
    		session.save(news);
    		System.out.println(news);
    	}
    
    • 测试结果如下:
    Hibernate: 
        insert 
        into
            NEWS
            (TITLE, AUTHOR, DATE, CONTENT, PICTURE) 
        values
            (?, ?, ?, ?, ?)
    News [id=10, title=CC, author=cc, describle=DESC, date=Mon Oct 08 12:17:24 CST 2018, 
    content=CONTENT, picture=org.hibernate.engine.jdbc.BlobProxy@28c88600]
    //注意,这里picture为Blob代理对象
    
    • 数据表效果如下:
      在这里插入图片描述

    另外,若希望精确映射 SQL 类型, 可以使用 sql-type 属性:

      <!-- 映射大对象 -->
    <property name="content">
     	<column name="CONTENT" sql-type="mediumtext"></column>
     </property>
     
     <property name="picture">
     	<column name="PICTURE" sql-type="mediumblob"></column>
     </property>
    
    展开全文
  • 标准SQL类型 描 述 date java.util.Date或者java.sql.Date DATE 代表日期,形式为: YYYY-MM-DD time java.util.Date或者java.sql.Time TIME 代表时间,

    映 射 类 型

    Java类型

    标准SQL类型

    描    述

    date

    java.util.Date或者java.sql.Date

    DATE

    代表日期,形式为:

    YYYY-MM-DD

    time

    java.util.Date或者java.sql.Time

    TIME

    代表时间,形式为:

    HH:MM:SS

    timestamp

    java.util.Date或者java.sql.

    Timestamp

    TIMESTAMP

    代表时间和日期, 形式为:

    YYYYMMDDHHMMSS

    calendar

    java.util.Calendar

    TIMESTAMP

    同上

    calendar_date

    java.util.Calendar

    DATE

    代表日期,形式为:

    YYYY-MM-DD


    展开全文
  • sql 类型转换,获取列字符串长度

    千次阅读 2012-10-12 11:59:37
    sql类型转换:   将某种数据类型的表达式显式转换为另一种数据类型。CAST 和 CONVERT 提供相似的功能。 语法 使用 CAST: CAST ( expression AS data_type ) 使用 CONVERT: CONVERT (data_type[...
    sql类型转换:
     
    将某种数据类型的表达式显式转换为另一种数据类型。CAST 和 CONVERT 提供相似的功能。
    
    语法
    使用 CAST:
    
    CAST ( expression AS data_type )
    
    使用 CONVERT:
    
    CONVERT (data_type[(length)], expression [, style])
    
    参数
    expression
    
    是任何有效的 Microsoft SQL Server" 表达式。有关更多信息,请参见表达式。
    
    data_type
    
    目标系统所提供的数据类型,包括 bigint 和 sql_variant。不能使用用户定义的数据类型。有关可用的数据类型的更多信息,请参见数据类型。
    
    length
    
    nchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。
    
    style
    
    日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。
    
    
     
    将某种数据类型的表达式显式转换为另一种数据类型。有关可用的数据类型的更多信息,请参见数据类型。日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。当转换为字符数据时输出。
     
    
    隐性转换对于用户是不可见的。 
    SQL Server 自动将数据从一种数据类型转换成另一种数据类型。例如,如果一个 smallint 变量和一个 int 变量相比较,这个 smallint 变量在比较前即被隐性转换成 int 变量。
    
    显式转换使用 CAST 或 CONVERT 函数。 
    CAST 和 CONVERT 函数将数值从一个数据类型(局部变量、列或其它表达式)转换到另一个数据类型。例如,下面的 CAST 函数将数值 $157.27 转换成字符串 ''$157.27'':CAST ( $157.27 AS VARCHAR(10) )
    CAST 函数基于 SQL-92 标准并且优先于 CONVERT。
    
    当从一个 SQL Server 对象的数据类型向另一个转换时,一些隐性和显式数据类型转换是不支持的。例如,nchar 数值根本就不能被转换成 image 数值。nchar 只能显式地转换成 binary,隐性地转换到 binary 是不支持的。nchar 可以显式地或者隐性地转换成 nvarchar。
    
    当处理 sql_variant 数据类型时,SQL Server 支持将具有其它数据类型的对象隐性转换成 sql_variant 类型。然而,SQL Server 并不支持从 sql_variant 数据隐性地转换到其它数据类型的对象。
     
    sql 长度截取
    select   *   from * t where length(t.access_code)< =4

     

    展开全文
  • SQL 类型到Java 类型的映射关系

    千次阅读 2012-09-14 20:10:23
    ResultSet 接口提供用于从当前行获取列值的获取 方法(getBoolean、getLong 等)。可以使用列的索引编号或列的...对于获取方法,JDBC 驱动程序尝试将底层数据转换为在获取方法中指定的 Java 类型,并返回适当的 Java
  • Java类型和SQL类型的匹配

    千次阅读 2011-11-04 14:24:15
    本概述是从《JDBCTM Database Access from JavaTM: A Tutorial and Annotated Reference》这本书中摘引来的。JavaSoft 目前正在准备这本书。这本书是一本教程,同时也是 JDBC 的重要参考手册,它将作为 ...
  • sql类型转换和精度控制

    千次阅读 2015-09-28 10:16:29
    查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩 select a.S# , a.Sname , cast(avg(b.score) as decimal(18,2)) avg_score from Student a , sc b where a.S# = b.S# group by a.S# , a.Sname ...
  • 标准SQL字段类型 大小/描述 big_decimal Java.math.BigDecimal NUMERIC 精度数值(8位) binary Byte[] VARBINARY,BLOB 变长二进制数据 blob Java.sql.Blob BLOB 二进制数据 boolean boole
  • sql类型转换函数cast和convert

    万次阅读 2009-10-19 10:08:00
    大多数情况下,这两个函数是重叠的,它们反映了SQL语言的演化历史。这两个函数的功能相似,不过它们的语法不同。虽然并非所有类型的值都能转变为其他数据类型,但总的来说,任何可以转换的值都可以用简单的函数实现...
  • 一、Hibernate-Java-SQL类型映射表 图片版(易于查看): 表格版(方便复制粘贴): Hibernate基本类型 JAVA类型 标准SQL字段类型 大小/描述 big_decimal Java.math.BigDecimal NUMERIC ...
  • 一、Jpublisher概述Oracle JPublisher是一个用于在Java和SQL之间转换和交换结构化对象数据的工具,它还可以访问其他的数据库资源,如PL/SQL包和Java存储过程。它生成Java类来表示数据库实体,如SQL对象和操作、PL/...
  • ElasticSearch SQL 数据类型

    万次阅读 2019-04-29 19:28:40
    ElasticSearch SQL 数据类型 ElasticSearch类型 ElasticSearch sql 类型 sql 类型 SQL精度 核心数据类型 null null NU LL ...
  • SQL Server 数据类型

    千次阅读 2018-04-04 16:48:15
    SQL Server 2014数据类型(1)在SQL Server中,数据类型是创建表的基础。在创建表时,必须为表中的每列指派一种数据类型。本节将介绍SQL Server中最常用的一些数据类型。即使创建自定义数据类型,也必须基于一种标准...
  • SQL数据类型

    千次阅读 2009-07-29 17:06:00
    任何一种语言都有它自己所固有的数据类型SQL Server提供一下25种固有的数据类型SQL Server数据类型一览表 ·Binary [(n)] ·Varbinary [(n)] ·Char [(n)] ·Varchar[(n)] ·Nchar[(n)] ·Nvarchar[(n)]...
  • Spark SQL数据类型

    千次阅读 2018-12-03 16:03:38
    Spark SQL数据类型 数字类型 ByteType:代表一个字节的整数。范围是-128到127 ShortType:代表两个字节的整数。范围是-32768到32767 IntegerType:代表4个字节的整数。范围是-2147483648到2147483647 Long...
  • SQLServer的sql_variant数据类型

    千次阅读 2018-03-09 15:52:28
    sql_variant类型的字段在使用中踩过的坑,总结一下: sql_variant类型的字段如果在select语句上直接使用会导致后台抛错,错误信息如下: com.microsoft.sqlserver.jdbc.SQLServerException: The "variant&...
  • Sql数据类型转换

    千次阅读 2014-04-18 14:53:22
    Sql数据类型之间的转换,通过实例助于理解
  • 不幸的是,不同数据库产品所支持的 SQL 类型之间有很大的不同。即使不同的数据库以相同的语义支持 SQL 类型,它们也可能用不同的名称。例如,绝大多数的主流数据库都支持一种表示大型二进制值的 SQL 类型,但 Oracle...
  • SQL Server 数据类型

    千次阅读 2011-06-07 10:51:00
    1. SQL SERVER的数据类型 数据类型是数据的一种属性,表示数据信息的类型,任何一种计算机语言都定义了自己的数据类型。当然,不同的程序语言都具有不同的特点,所定义的数据类型的各类和名称都或多或少有些不同。...
  • SQL Server sql_variant 类型的比较

    千次阅读 2011-11-30 23:28:47
    sql_variant 类型用于存储SQL SERVER中支持的各种数据类型。 为了进行 sql_variant 比较,SQL Server 数据类型层次结构顺序划分为多个数据类型系,sql_variant 数据类型在用于转换的数据类型层次结构列表中位于...
  • SQL 插入 CLOB类型

    千次阅读 2019-04-25 19:27:31
    oracle默认把字符串转换成varchar2类型,而这个字符串的长度,又比4000大,所以会报ora-01704错误。说得通俗一点,就是两个单引号之间的字符不能超过4000。 遇到这个问题,可以使用PL/SQL语法,采取绑定变量的方式...
  • sql 字段类型转换

    千次阅读 2019-07-15 09:03:19
    MySQL 的CAST()函数可用来获取一个类型的值,并产生另一个类型的值 cast()函数是一个转换函数,参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。 cast 转换为double 类型,对于D\M取值注意事项。...
  • sql处理char类型

    千次阅读 2018-07-24 17:17:55
    在oracle或sqlServer下会遇到,查询数据表字段类型为char,如果使用Hibernate原生SQL去执行查询,往往只会返回 一个字符.原因是char在java中只有两个字节. 解决方法 1.改成 select cast(列 as varchar2(列大小)...
  • SQL 数据类型 汇总

    千次阅读 2017-06-14 00:29:06
    SQL中的五种数据类型:字符型,文本型,数值型,逻辑型和日期型 一 字符型 char,varchar,nvarchar char和varchar的区别在于,varchar占用的空间会自动调节,用于不确定的字符长度。比如你定义varchar(40),但是在...
  • ORACLE SQL数据类型转换

    千次阅读 2019-04-07 22:35:53
    ORACLE SQL数据类型转换 开发工具与关键技术:Oracle sql*plus PLSQL Developer 作者:张启翔 撰写时间:2019年3月25日 下面要说的是,如何将不同类型的数据进行转换处理 这里主要包括有三个函数 时间转换:...
  • Sql注入类型小结

    千次阅读 2018-05-24 21:42:16
    Sql注入类型1.前言Sql注入形成的原因:用户输入的非法数据被解释器执行 2.注入类型2.1注入点的不同(1)数字类型的注入当输入参数为数字类型时,例如页码,ID等,存在注入时则为数字类型的注入。测试方法如下:...
  • spark sql 处理时间类型

    万次阅读 2017-05-18 16:31:33
    spark sql 处理时间类型 1、时间类型应用 2、时间类型运算 3、时间类型小时级别运算
  • sqlserver数据库类型对应Java中的数据类型下表列出了基本 SQL Server、JDBC 和 Java 编程语言数据类型之间的默认映射: SQL Server 类型JDBC 类型 (java.sql.Types)Java 语言类型...
  • sqlserver类型取值范围

    千次阅读 2017-04-12 10:21:46
    SQL SERVER的数据类型 数据类型是数据的一种属性,表示数据所表示信息的类型。任何一种计算机语言都定义了自己的数据类型。当然,不同的程序语言都具有不同的特点。 SQL Server提供了25种数据类型: Binary [(n)]...
  • 标准SQL类型 integer java.lang.Integer integer long java.lang.Long bigint short java.lang.Short smallint float java.lang.Float float double java.lan

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 86,175
精华内容 34,470
关键字:

sql类型