mysql映射超_Hibernate的映射类型 hibernate mysql映射类型

(转)http://blog.csdn.net/zxy_snow/article/details/7214222

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位二进制数值的新数据类型。这个在以后会单独介绍,这里一笔带过先。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dotnet 将自动代码格式化机器人带入团队 GitLab 平台

给团队带入一个 代码格式化机器人 能提升团队的幸福度,让团队的成员安心写代码,不用关注代码格式化问题,将格式代码这个粗活交给机器人去做。同时也能减少在代码审查里撕格式化问题的时间,让更多的时间投入到更有价值的工作上本文…

Notion,我来,语雀,有道等几个云笔记

最近打算放弃wolai产品的使用,所以有必要总结一下这些年用过的那些笔记。从最早开始用Evernote,然后麦库,为知,然后有道,onenote,一直到Notion,我来,语雀等等,都有各自的…

玩转Javascript 给JS写测试

给js写测试已经不是什么稀奇的事情了,最近项目里用了jasmine和JsTestDriver两种js测试框架。JsTestDriver易于与持续构建系统相集成并能够在多个浏览器上运行测试轻松实现TDD风格的开发。当在项目中配置好JsTestDriver以后,如同junit测试java文件一般&am…

Android 之自定义view实现水波纹效果

在实际的开发中,很多时候还会遇到相对比较复杂的需求,比如产品妹纸或UI妹纸在哪看了个让人兴奋的效果,兴致高昂的来找你,看了之后目的很明确,当然就是希望你能给她; 在这样的关键时候,身子板就一…

FFLIb Demo CQRS

使用FFLIB 构建了一个demo,该demo模拟了一个常见的游戏后台架构,该demo主要有一下亮点: FFLIB 实现进程间通信非常方便基于CQRS 思想构建LogicServer使用Event Publish/Subscribe, 实现各个模块的解耦合基于Event 实现实体对象的单…

【自定义标签开发】01-标签简介和开发第一个标签

自定义标签简介自定义标签主要用于移除Jsp页面中的java代码。要使用自定义标签移除jsp页面中的java代码,只需要完成以下两个步骤:1.编写一个实现Tag接口的java类,把页面java代码移到这个java类中(标签处理器类)。2.编写标签库描述(tld)文件,在…

三联《少年》创刊,各领域佼佼者畅言新知,帮少年建立思维素养体系!

▲点击查看很多中国小孩的成长是断层的。10岁前被视作可爱稚子,被大人护着走;18岁猛然被定义为成年人,要选择大学、专业,开始面对感情。中间的人生呢?“你是个学生,学习是本职,现在谈什么人生&a…

mysql utf8 bin设置_[mysql]修改collation为utf8_bin

mysql默认字段值区分大小写:character-set-serverutf8collation-serverutf8_bininit-connectSET NAMES utf8;SELECT DEFAULT_CHARACTER_SET_NAME charset, DEFAULT_COLLATION_NAME collationFROM information_schema.SCHEMATA WHERE SCHEMA_NAME billing01;SELECT …

C# WPF MVVM开发框架Caliburn.Micro自定义引导程序④

01—自定义引导程序在上一部分中,我们讨论了Caliburn.Micro WPF应用程序的最基本配置,并演示了与操作和约定相关的两个简单功能。在这一部分中,我想进一步探讨Bootstrapper类。让我们首先将应用程序配置为使用IoC容器。本例中我们将使用内置容…

Android 使用XmlPullParser解析xml

这里我们假设要解析的xml文件名为&#xff1a;test.xml&#xff0c;我们将其放在assets路径中。 xml文件内容为&#xff1a; <?xml version1.0 encodingutf-8 standaloneyes ?> <books><book id"1"><name>Java编程思想</name><pr…

链表之打印两个有序链表的公共部分

题目:打印两个有序链表的公共部分 package com.chenyu.zuo.linkedList; /*** 打印有序链表的公共部分* @author 陈喻*题目:给定两个有序链表的头指针head1和head2,打印出两个链表的公共部分*思路:因为有序*如果head1的值小于head2,则head1往下移动*如果head2的值小于head1,…

批处理for命令详解

批处理for命令详解批处理for命令详解 2008-03-07 11:00 FOR这条命令基本上都被用来处理文本,但还有其他一些好用的功能! 看看他的基本格式(这里我引用的是批处理中的格式,直接在命令行只需要一个%号) FOR 参数 %%变量名 IN (相关文件或命令) DO 执行的命令 参数…

趁爸妈不在家约男朋友回家吃饭,然而......

1 有没有男主很脆弱的电影&#xff1f;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 成长期-成熟期-完全体-究极体▼3 千万别在家乱放星巴克的袋子&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 发生了很奇怪的事情▼5 只有你想不到&#xff0c;没…

java泛型不是计算运行时的数据类型

2019独角兽企业重金招聘Python工程师标准>>> package com.ada.data.entity;import java.io.Serializable;import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.MappedSuper…

spark 连接mysql 命令_spark-submit命令包括mysql连接器

我有一个scala对象文件&#xff0c;它在内部查询mysql表做一个连接并将数据写入s3&#xff0c;在本地测试我的代码它运行得很好 . 但是当我将它提交到集群时&#xff0c;它会抛出以下错误&#xff1a;线程“main”java.sql.SQLException中的异常&#xff1a;在org.apache.spark…

C#内建接口:IComparable

这节开一个新的系列&#xff1a;C#内建接口。主要给大家讲一下C#内部给我们定义的一些常用的接口&#xff0c;以及它们是怎么使用的。基本上一节讲一个吧&#xff0c;本节先从IComparable开始。01了解IComparable一般的&#xff0c;值类型的数据比较大小&#xff0c;就是看它俩…

链表之删除单链表倒数第K个节点

删除单链表倒数第K个节点 题目: 删除单链表中倒数第K个节点, 思路: 给我们一个单链表,我们需要删除倒数第K个节点,比如链表每个节点值是1、2、3、4、5、6 K值是2,链表的总长度是6,要得倒数第二个数的值,前面就有6-2=4个的值,如果头结点往下移,移到…

script的defer和async

我们常用的script标签&#xff0c;有两个和性能、js文件下载执行相关的属性&#xff1a;defer和async defer的含义【摘自https://developer.mozilla.org/En/HTML/Element/Script】 This Boolean attribute is set to indicate to a browser that the script is meant to be exe…

WWDC 2013 Session笔记 - Xcode5和ObjC新特性

这是我的WWDC2013系列笔记中的一篇&#xff0c;完整的笔记列表请参看这篇总览。本文仅作为个人记录使用&#xff0c;也欢迎在许可协议范围内转载或使用&#xff0c;但是还烦请保留原文链接&#xff0c;谢谢您的理解合作。如果您觉得本站对您能有帮助&#xff0c;您可以使用RSS或…

难以摸透的直男脑回路......

1 你年纪不小了&#xff0c;该结婚了&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 泰国小哥低成本Cos赛博朋克2077 ▼3 郑爷爷也太会了吧▼4 奇奇怪怪的知识又增加了&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼5 酸奶今天7.1折&#xff08;via.…