一:数据列映射
drop table mybatis_java_map;
/**
* mybatis与java的映射关系
* bigint ---对应的long(Long)
* varchar ---对应的Sring
* int ---对应int(Integer)
* DATETIME ---对应java.util.Date
* double ---对应double(Double)
* blob ---这个需要一层转换
* decimal ---对应BigDecimal
* number ---对应BigDecimal
*/
CREATE TABLE `mybatis_java_map` (
`id` bigint(20) NOT NULL AUTO_INCREMENT, ---这个3同样也是与数据最终的存储长度没关系
`int3` int(3) DEFAULT NULL, ---这个3同样也是只是显示的宽度,但是长度不足用0填充,用mysq的命令可以查看
`int4` int(4) zerofill, ---这个4与数据库存储的长度有关系
`varchar4` varchar(4) DEFAULT NULL, ---这个1,都不代表数据最后能存的长度,同理int,等都是一样的
`bigint1` bigint(1) DEFAULT NULL, ---这个2,都不代表数据最后的存的长度
`bigint2` bigint(2) DEFAULT NULL, ---这个tinyint(1) 与tinyint(4)其实相等当使用zerofill时候有效果,取值范围-128-127
`status` tinyint(4) NOT NULL COMMENT '发布状态 0 正在发布 1 发布成功 2 发布失败',
/*
MySQL允许使用非标准语法:FLOAT(M,D)或REAL(M,D)或DOUBLE PRECISION(M,D)。
-- 这里,“(M,D)”表示该值一共显示长度的位数,其中D位,位于小数点后面(注意之后整数的位数为M-D)
-- 例如,定义为FLOAT(7,4)的一个列可以显示为-999.9999。MySQL保存值时进行四舍五入,
-- 因此如果在FLOAT(7,4)列内插入999.00009,近似结果是999.0001
-- 例如: 你插入1234567.123 直接报错,因为一共长度是限制的,整数部分最长是3位
-- 例如: 你插入1.12312123123123 是可以的默认给你四舍五入
*/
`double1` double(7,4) NOT NULL COMMENT 'double的测试', -- 同理4代表存放的总长度,3代表精度
`decimal1` decimal(4,3) DEFAULT NULL COMMENT '优惠后的总金额', -- 这个数据类型直接就跟Util.Date映射上就行了
`create_time` DATETIME NOT NULL COMMENT '创建时间', -- 对于mysql当数据库修改了此列的时候使用这个值
`_timestamp` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP COMMENT 'dba要求',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='服务池表'
select * from mybatis_java_map where `int4` = 1
1.映射关系:
#切记int(10),int(11) 里面的数字10,与11 不代表存储的长度,代表的是显示宽度。参考—mysql-数据类型
2.非空默认值
非空默认值:`amount` double(10,2) NOT NULL DEFAULT '0.00' COMMENT '度量值'
使用mybatis插入语句(column1,column2),如果column没在列里面,这时候会设置默认值,注意:如果这个值是null这时候插入会报错
默认值: `status` int(3) DEFAULT '1' COMMENT '状态'
使用mybatis插入的时候,这个对象如果是个integer类型这时候是null,数据库是可以插入进去的就是个空值,注意:没有这列的时候给你添加默认值
null在mysql中是个特殊的值。。。
============================================================================
3.unsigned 这样的标记会限制数的取值范围,
CREATE TABLE `o1` (`id` int(11) unsigned)
insert into o1(id) values(-1);
报错:Data truncation: Out of range value for column 'id' at row 1 性能也会好点