mybatis与javamysql数据类型对应关系Mybatis中javaType和jdbcType对应关系
1. JDBCType JavaType
2. CHAR String 建议使⽤ mysql char(1) 代替boolean 0 , 1
3. VARCHAR String
4. LONGVARCHAR String
5. NUMERIC java.math.BigDecimal
6. DECIMAL java.math.BigDecimal
7. BIT boolean mysql tinytin(1)
8. BOOLEAN boolean mysql tinytin(1)
9. TINYINT byte mysql tinyint
0. SMALLINT short
1. INTEGER int
2. BIGINT long
3. REAL float
4. FLOAT double
5. DOUBLE double
6. BINARY byte[]
7. VARBINARY byte[]
8. LONGVARBINARY byte[]
9. DATE java.sql.Date
0. TIME java.sql.Time
1. TIMESTAMP java.sql.Timestamp
2. CLOB Clob
3. BLOB Blob
4. ARRAY Array
5. DISTINCT mapping of underlying type
6. STRUCT Struct
7. REF Ref
8. DATALINK java.URL[color=red][/color]
SpringMVC框架⽀持的数据类型有:
整形:Integer、int , byte, short
字符串:String
单精度:Float、float
双精度:Double、double
布尔型:Boolean、boolean
decimal
说明:对于布尔类型的参数,请求的参数值为true或false。处理器⽅法可是这样的:
注意:参数类型推荐使⽤包装数据类型,因为基础数据类型不可以为null。
boolean类型
MYSQL保存BOOLEAN值时⽤1代表TRUE,0代表FALSE,boolean在MySQL⾥的类型为tinyint(1), MySQL⾥有四个常量:true,false,TRUE,FALSE,它们分别代表1,0,1,0,
mysql> select true,false,TRUE,FALSE;
+------+-------+------+-------+
mysql语句分类| TRUE | FALSE | TRUE | FALSE |
+------+-------+------+-------+
| 1 | 0 | 1 | 0 |
+------+-------+------+-------+
可以如下插⼊boolean值:insert into [xxxx(xx)] values(true),当然也可以values(1);
举例如下:
mysql> alter table test add isOk boolean;
Query OK
mysql> desc test;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| isOk | tinyint(1) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+firemonkey
mysql> insert into test(isOk) values(true);
Query OK
mysql> select isOk from test ;
+------+
| isOk |
+------+
| 1 |
+------+
=================
MySQL没有boolean类型。这也是⽐较奇怪的现象。例:
create table xs
(
id int primary key,
bl boolean
)
这样是可以创建成功,但查看⼀下建表后的语句,就会发现,mysql把它替换成tinyint(1)。也就是说mysql把boolean=tinyInt了,但POJO类要定义成什么类型呢?
因为惯性思维,在java类中也把它定义成type。然后在Struts中使⽤<s:check/>标签。这就产⽣⼀个严重的问题了。<s:check>是boolean,⽽POJO去定义成byte。这样数据永远也⽆法提交,被struts的intercept拦截掉了。解决办法是在POJO类中定义成boolean,在mysql中定义成tinyint(1)。
------
TINYINT(1) or ENUM( 'true' , 'false')
下⾯精简总结:
tinyint(1) 和 tinyint(3) 没什么区别,占⽤字节都是⼀位,存储范围都是⼀样的
tinyint(3) zerofill ,当插⼊的数据少于3位的时候,左边⾃动补零,这才是限制显⽰长度
int(1) 和 tinyint(1) ,够⽤的情况下,优先选择tinyint(1),因为占字节少、节省空间。
tinyint⼀个字节 smallint 两个字节 MEDIUMINT三个字节 int 4个字节 BIGINT 8个字节。
但是,varchar(5) 这⾥的5 限制的是储存字符的个数,字符不分贵贱(不分 中⽂、英⽂、数字...)。
****在mybatis中建议⽤ java String mybatis Char mysql char(1) 表⽰0-9的状态信息
mysql 数据类型长度信息
数据类型字节长度范围或⽤法
Bit1⽆符号[0,255],有符号[-128,127],天缘博客备注:BIT和BOOL布尔型都占⽤1字节
源码免费
TinyInt1整数[0,255]
SmallInt2⽆符号[0,65535],有符号[-32768,32767]
MediumInt3⽆符号[0,2^24-1],有符号[-2^23,2^23-1]]
Int4⽆符号[0,2^32-1],有符号[-2^31,2^31-1]
BigInt8⽆符号[0,2^64-1],有符号[-2^63 ,2^63 -1]
Float(M,D)4单精度浮点数。天缘博客提醒这⾥的D是精度,如果D<=24则为默认的FLOAT,如果D>24则会⾃动被转换为DOUBLE型。Double(M,D)8 双精度浮点。
Decimal(M,D)M+1或
M+2
未打包的浮点数,⽤法类似于FLOAT和DOUBLE,天缘博客提醒您如果在ASP中使⽤到Decimal数据类型,直接从数据库读出来的Decimal可能需要先转换成Float或Double类型后再进⾏运算。
Date3以YYYY-MM-DD的格式显⽰,⽐如:2009-07-19
legislation什么意思啊Date Time8以YYYY-MM-DD HH:MM:SS的格式显⽰,⽐如:2009-07-19 11:22:30 TimeStamp4以YYYY-MM-DD的格式显⽰,⽐如:2009-07-19
Time3以HH:MM:SS的格式显⽰。⽐如:11:22:30
Year1以YYYY的格式显⽰。⽐如:2009
Char(M)M定长字符串。
VarChar(M)M变长字符串,要求M<=255
Binary(M)M类似Char的⼆进制存储,特点是插⼊定长不⾜补0 VarBinary(M)M类似VarChar的变长⼆进制存储,特点是定长不补0 Tiny Text Max:255⼤⼩写不敏感
Text Max:64K⼤⼩写不敏感
Medium Text Max:16M⼤⼩写不敏感
Long Text Max:4G⼤⼩写不敏感
TinyBlob Max:255⼤⼩写敏感
Blob Max:64K⼤⼩写敏感
MediumBlob Max:16M⼤⼩写敏感
LongBlob Max:4G⼤⼩写敏感
Enum1或2最⼤可达65535个不同的枚举值
Set可达8最⼤可达64个不同的值
Spring内建的类型转换器如下所⽰:
类名说明
第⼀组:标量转换器
StringToBooleanConverter String----->Boolean
true:true/on/yes/1; false:false/off/no/0
ObjectToStringConverter Object----->String
调⽤toString⽅法转换
StringToNumberConverterFactory String----->Number(如Integer、Long等)
NumberToNumberConverterFactory Number⼦类型(Integer、Long、Double等)<——> Number⼦类型(Integer、Long、Double等)
StringToCharacterConverter String----->java.lang.Character 取字符串第⼀个字符
NumberToCharacterConverter Number⼦类型(Integer、Long、Double等)——> java.lang.Character CharacterToNumberFactory java.lang.Character ——>Number⼦类型(Integer、Long、Double等)
StringToEnumConverterFactory String----->enum类型
通过Enum.valueOf将字符串转换为需要的enum类型
EnumToStringConverter enum类型----->String
返回enum对象的name()值
StringToLocaleConverter String----->java.util.Local
PropertiesToStringConverter java.util.Properties----->String 默认通过ISO-8859-1解码
StringToPropertiesConverter String----->java.util.Properties 默认使⽤ISO-8859-1编码
第⼆组:集合、数组相关转换器
编程代码大全可复制cArrayToCollectionConverter任意S数组---->任意T集合(List、Set)CollectionToArrayConverter任意T集合(List、Set)---->任意S数组ArrayToArrayConverter任意S数组<---->任意T数组
CollectionToCollectionConverter 任意T集合(List、Set)<---->任意T集合(List、Set)即集合之间的类型转换
MapToMapConverter Map<---->Map之间的转换ArrayToStringConverter任意S数组---->String类型
StringToArrayConverter String----->数组
默认通过“,”分割,且去除字符串的两边空格(trim)
ArrayToObjectConverter 任意S数组---->任意Object的转换
(如果⽬标类型和源类型兼容,直接返回源对象;否则返回S数组的第⼀个元素并进⾏类型转换)
ObjectToArrayConverter Object----->单元素数组CollectionToStringConverter任意T集合(List、Set)---->String类型
StringToCollectionConverter String----->集合(List、Set)
默认通过“,”分割,且去除字符串的两边空格(trim)
CollectionToObjectConverter 任意T集合---->任意Object的转换
(如果⽬标类型和源类型兼容,直接返回源对象;否则返回S数组的第⼀个元素并进⾏类型转换)
ObjectToCollectionConverter Object----->单元素集合
第三组:默认(fallback)转换器:之前的转换器不
能转换时调⽤
python怎么读法ObjectToObjectConverter Object(S)----->Object(T)
⾸先尝试valueOf进⾏转换、没有则尝试new 构造器(S)
IdToEntityConverter Id(S)----->Entity(T)
查并调⽤public static T find[EntityName](S)获取⽬标对象,EntityName是T类型的简单类型
FallbackObjectToStringConverter
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论