工作总结:数据库PO与建表规约【强制】
程序员文章站
2022-04-14 09:09:40
...
参考了:阿里巴巴Java开发手册
PO
- 说明: int 类型默认值为0,不利于mybatils的动态sql;Integer默认值为null
- 注意: Integer与Int比较直接拆箱,可以相等;Integer与new Integer()始终不会像等(==);Integer与Integer比较时,被转化为Integer.valueof(值),查看源码,常量缓存范围为-128~127,所以超出范围则不相等(==)。
- 说明: float与double会产生精度缺失
Table&Field
- desc/match/delayed/range/state
Table
- certificate_tag /*资质标签 only one for many certificates */
- certificate_tag /*资质标签 only Many for many providers of certificate */
- service_process /* 服务流程 only many for single service */
-
Many_Many必须创建中间表,命名为“table1Name_table2Name”如:“provider_certificate_tag”、“service_order_evaluate_tag”。
- 注意: 1. 如果table1Name等于table2Name的前半部分,则可用table2Name加“_and_”作为中间表名
- 例如: service、service_loop、service_and_loop
- 注意: 2. 如果table1Name与table2Name中都没有下划线,则可用“table1Name_and_table2Name”作为中间表名
- 例如: provider、service、provider_and_service
Field
-
表达Boolean的字段,必须使用 is _ xxx 的方式命名,数据类型是unsigned tinyint()。
-
小数类型为decimal ,禁止使用 float 和 double,会发生精度缺失。
- 注意: 类型长度=整数长度+小数长度,小数点不占位、自动舍入
- 说明: 其中 id 必为主键,类型为 unsigned bigint 、单表时自增。 gmt _ create , gmt _ modified的类型均为 date _ time 类型,必要时可存储为varchar。
- 主键命名: 为 id,为 表的作用_id
- 主键类型: 可以采用标记+时间戳+随机数 ,varchar,为unsigned bigint ,自增
-
字段类型: 只注意两点: 数字
与
非数字、格式与
非格式,即,同时满足两种情况,即可完成静默转化,无需担心PO字段的定义类型,这是#{ }
表达式,能够给参数自动包装' '
,字符串化参数,也是String类型存储成datetime的依赖条件,甚至浮点 会 牺牲精度 被 强制转化成整形
-
varchar如果存储长度大于5000,可以更为text,例如*、*,必要时可以独立出来一张表,用主键来对应,避免影响其它字段索引效率。
-
Unsigned Int 无符号值可以避免误存负数,且扩大了表示范围。
- unsigned tinyint 无符号值:0~255
- unsigned smallint 无符号值:0~65535
- unsigned int 无符号值:0~ 42.9亿
- unsigned bigint 无符号值:0~约10^19
- 频繁使用 却 不频繁修改。
- 不是 varchar 超长字段,更不能是 text字段。
- //别名法
select delivery_address as deliveryAddress from table
- //resultMap手动配置
<!-- resultMap手动配置 -->
<resultMap>
<result property="deliveryAddress" column="delivery_address"/>
</resultMap>
- //Mybatils-Config.xml中全局配置
mapUnderscoreToCamelCase
<settings>
<setting name="autoMappingBehavior" value="PARTIAL"/><!-- 默认值PARTIAL——— 将自动映射结果,除了那些有内部定义,内嵌结果映射,的(joins).-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
上一篇: 推荐10款import模块特效
下一篇: 使用jQuery实现表格隔行换色实例代码
推荐阅读