JDBCType JavaType
CHAR String 建议使用 mysql char(1) 代替boolean 0 , 1
VARCHAR String
LONGVARCHAR String
NUMERIC java.math.BigDecimal
DECIMAL java.math.BigDecimal
BIT boolean mysql tinytin(1)
BOOLEAN boolean mysql tinytin(1)
TINYINT byte mysql tinyint
SMALLINT short
INTEGER int
BIGINT long
REAL float
FLOAT double
DOUBLE double
BINARY byte[]
VARBINARY byte[]
LONGVARBINARY byte[]
DATE java.sql.Date
TIME java.sql.Time
TIMESTAMP java.sql.Timestamp
CLOB Clob
BLOB Blob
ARRAY Array
DISTINCT mapping of underlying type
STRUCT Struct
REF Ref
DATALINK java.net.URL[color=red][/color]
SpringMVC框架支持的数据类型有:
说明:对于布尔类型的参数,请求的参数值为true或false。处理器方法可是这样的:
public String editItem(Model model,Integer id,Boolean status) throws Exception {
...
}
至于请求的url,可是http://localhost:8080/xxx.action?id=2&status=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;
+------+-------+------+-------+
| 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 | |
+-------+-------------+------+-----+---------+----------------+
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中使用
------
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 数据类型长度信息
数据类型 | 字节长度 | 范围或用法 |
Bit | 1 | 无符号[0,255],有符号[-128,127],天缘博客备注:BIT和BOOL布尔型都占用1字节 |
TinyInt | 1 | 整数[0,255] |
SmallInt | 2 | 无符号[0,65535],有符号[-32768,32767] |
MediumInt | 3 | 无符号[0,2^24-1],有符号[-2^23,2^23-1]] |
Int | 4 | 无符号[0,2^32-1],有符号[-2^31,2^31-1] |
BigInt | 8 | 无符号[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类型后再进行运算。 |
Date | 3 | 以YYYY-MM-DD的格式显示,比如:2009-07-19 |
Date Time | 8 | 以YYYY-MM-DD HH:MM:SS的格式显示,比如:2009-07-19 11:22:30 |
TimeStamp | 4 | 以YYYY-MM-DD的格式显示,比如:2009-07-19 |
Time | 3 | 以HH:MM:SS的格式显示。比如:11:22:30 |
Year | 1 | 以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 | 大小写敏感 |
Enum | 1或2 | 最大可达65535个不同的枚举值 |
Set | 可达8 | 最大可达64个不同的值 |
类名 |
说明 |
第一组:标量转换器 |
|
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编码 |
第二组:集合、数组相关转换器 |
|
ArrayToCollectionConverter |
任意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)转换器:之前的转换器不能转换时调用 |
|
ObjectToObjectConverter |
Object(S)----->Object(T) 首先尝试valueOf进行转换、没有则尝试new 构造器(S) |
IdToEntityConverter |
Id(S)----->Entity(T) 查找并调用public static T find[EntityName](S)获取目标对象,EntityName是T类型的简单类型 |
FallbackObjectToStringConverter |