• hibernate的映射类型


    hibernate的映射类型 hibernate MySQL映射类型

    1、Hibernate的映射类型 hibernate mysql映射类型

    Hibernate 映射类型

    Java 类型

    标准 SQL 类型

    大小和取值范围

    integer 或者 int

    int 或者 java.lang.Integer

    INTEGER

    4 字节

    long

    long  Long

    BIGINT

    8 字节

    short

    short  Short

    SMALLINT

    2 字节

    byte

    byte  Byte

    TINYINT

    1 字节

    float

    float  Float

    FLOAT

    4 字节

    double

    double  Double

    DOUBLE

    8 字节

    big_decimal

    java.math.BigDecimal

    NUMERIC

    NUMERIC(8,2)8 位

    character

    char  Character  String

    CHAR(1)

    定长字符

    string

    String

    VARCHAR

    变长字符串

    boolean

    boolean  Boolean

    BIT

    布尔类型

    yes_no

    boolean  Boolean

    CHAR(1) (Y-N)

    布尔类型

    true_false

    boolean  Boolean

    CHAR(1) (T-F)

    布尔类型

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

    映射类型

    Java 类型

    标准 SQL 类型

    描述

    date

    util.Date 或者 sql.Date

    DATE

    YYYY-MM-DD

    time

    Date    Time

    TIME

    HH:MM:SS

    timestamp

    Date   Timestamp

    TIMESTAMP

    YYYYMMDDHHMMSS

    calendar

    calendar

    TIMESTAMP

    YYYYMMDDHHMMSS

    calendar_date

    calendar

    DATE

    YYYY-MM-DD

    3 、 Java 大对象类型的 Hibernate 映射类型

    映射类型

    Java 类型

    标准 SQL 类型

    MySQL 类型

    Oracle 类型

    binary

    byte[]

    VARBINARY( 或 BLOB)

    BLOB

    BLOB

    text

    String

    CLOB

    TEXT

    CLOB

    serializable

    Serializable 接口任意实现类

    VARBINARY( 或 BLOB)

    BLOB

    BLOB

    clob

    java.sql.Clob

    CLOB

    TEXT

    CLOB

    blob

    java.sql.Blob

    BLOB

    BLOB

    BLOB

    在程序中通过 Hibernate 来保存 java.sql.Clob 或者 java.sql.Blob 实例时,必须包含两个步骤:

    在一个数据库事务中先保存一个空的 Blob 或 Clob 实例。

    接着锁定这条记录,更新上面保存的 Blob 或 Clob 实例,把二进制数据或文本数据写到 Blob 或 Clob 实例中

    介绍MYSQL的数据类型了,毕竟为你想要的数据选定一个合适的类型,对于数据库的存取效率有很大的改进。
    MYSQL数据库有以下几种类型:整数型(int,binint,smallint,tinyint等等xxxint型)、浮点型(float,double,real等)、定点数型(decimal,也就是传说中的浮点型的字符串表达形式)、日期与时间型(data,time,datetime,timestamp),字符串型(char,varchar,text,tinytext,mediumtext,longtext等),二进制型(tinyblob,tinyblob,blob等blob型),枚举型(enum,set——set是类似于enum型)。

    下面从整数型开始详细介绍这些数型的基本信息:
    整数型
    默认情况下,INT类型既包括正数,也包括负数,如果给INT列定义UNSIGNED属性,那么它的取值范围就永远是正数。这个永远是正数,非常重要,即,如果你在对数据列操作:update tablename set int_field = (int_field - 1000 ),如果int_field的值小于1000,理论上是变成了负数,但由于你设的属性是UNSIGNED,那么存储的数据仍然是无符号的正数,这可能会给你带来虚假或让人困惑的结果。
    TINYINT的取值范围是从-128~+127,如果使用了UNSIGNED属性,那么它的取值范围就变成了0~+255。如果用户试图存入超过字段取值范围的数字,MYSQL所做的工作就非常简单,它会直接替换成最大可取值或最小可取值。
    或许有人注意到,我们在使用phpmyadmin的时候,如果选择INT类型,那么后面有一个可选长度。不过,千万不要被这个数值所迷惑,因为它的实际功能并非指定该INT类型的长度,而是最大显示宽度(M:Maximum Display Width),仅仅用于查询数据时可以把查询结果按照你所指定的宽度进行显示,最主要的用途是为了排版需要。虽说是这样,但在一些很少见的特定场合(MYSQL在执行一些需要借助于临时数据表才能完成的复杂查询)里,临时数据表的数值有可能会被截短并导致最终结果不正确。因此,除非你与数据库所有的操作都在命令行下执行,否则,还是建议留空。

    INT 类型

    该类型的实际含义

     Tinyint(m)

    8位整数,占用1个字节(-128~+127)

     smallint(m)

    16位整数,占用2个字节(-32768~+32767)

     medimumint(m)

    24位整数,占用3个字节(-8388608~+8388607)

     int(m),integer(m)

    32位整数,占用4个字节(-2147483648~+2147483647)

     bigint(m)

    64位整数,占用8个字节(-9.22E+18 ~ +9.22E+18)

     serial

    这其实是bigint auto_increment not null primary key的简写

    上面tinyint(m)括号中的m,就是上文所指的最大显示宽度。最后一个serial含义里的auto_increment,代表了该字段是自增字段,即,往有该属性的字段里插数据时,系统会自动把该字段的当前最大值加上1后存进去。 一般而言,该属性往往用于主键字段。在使用该属性时应当注意以下几个问题。
    1、该属性必须与NOT NULL、primary Key 或者 Unique属性同时使用。
    2、每个数据表只能存有一个auto_increment属性的数据列
    3、该属性一般是在进行数据插入时,没有明确指定值或者指定值为NULL时,才起作用。如果指定了值,并且该值还没有出现过,MYSQL将使用该值插入,以生成一条新记录。这时候就有两种情况:a)原有的数据是1~100,后来删除了20~80的内容,即数据库里只存在1~19,81~100的数据,当插入ID为20的数据时,数据库还是会按照规则,把20这条记录插进去,并不会报错,自增值仍然是100,下次正常插入时,还是会默认使用101这个值。b)原有的数据是1~100,我插入ID为1000的数据时,不会报错,但自增值变为1000,下次插入数据从1001起算。(啰嗦了点,但应该记住)
    4、如果想知道刚刚插入的数据值是多少,在插入数据后,可以使用select last_insert_id()语句获取。在PHP中,有一个函数是:mysql_insert_id(),该函数不是很建议使用,因为它返回的数据是INT型,如果auto_increment所在的数据列类型是bigint,而且实际值已经超过int类型最大值的话,mysql_insert_id()返回的值,将不正确。
    5、如果auto_increment计数器达到了最大值(即该字段所允许的最大值),将不再递增,因此数据插入将无法执行。其实是到了最大值后,MYSQL会永远将该字段的最大值往数据库里插,因此造成MYSQL报:该数据列已存在的错误。
    6、如果在可行范围内,或者预计数量会很大的情况下,尽量使用你想要设定的数据类型的再上一层类型,但尽量不要太夸张。比如你预计你的用户数不会超过1000000万,表面上medimum无符号已经够用了,但这时候,仍然建议你使用int型,以防万一。

    还有个BIT和BOOL,在MYSQL中,关键词BOOL是TINYINT的同义词,在5.0.2以及以前的版本中,BIT也是如此。但是从5.0.3开始,BIT不再是TINYINT的同义词,而是一种可以存储多达64位二进制数值的新数据类型。这个在以后会单独介绍,这里一笔带过先。

  • 相关阅读:
    js实现element中可清空的输入框(1)
    vue中v-model的学习
    Oracle触发器和MySQL触发器的简单应用
    Java中的多线程你只要看这一篇就够了()
    HTML 随笔记之 刷新页面
    HTML CSS 随笔记之 cursor
    float到底是干什么的?
    Spring Boot 事物的快速应用
    java web 中文乱码
    LVM 创建实例
  • 原文地址:https://www.cnblogs.com/Coolkaka/p/6034126.html
Copyright © 2020-2023  润新知