MySQL 表字段类型设计
- Boolean 类型 使用,tinyint(1);
- 枚举类型,使用tinyint(无需设置);-128 - 127 共256种情况,我感觉一个枚举这么多种情况足以了;比如订单状态很难有256种状态;
- 日期类型使用bigint 而不是datetime; bigint 唯一的缺陷就是开发时开发者不方便,但是运行时效率高,json传输时不需要指定格式来回转换,只需要在终端最终的UI上显示时转换一次就可;我们更应该关注的是运行时,而不是开发时。
- 无论tinyint还是int,还是bigint,等其它整型 都不要使用无符号的整型;因为有些语言没有无符号的基本类型,比如golang里有 int32和uint32,但是java里只有 integer;整型全部使用无符号,可以兼容所有语言,因为全部的语言都会提供有符号的基本整型;
知道了以上4个基本原则后,我们开始实操:
先建立MySQL表
使用 mybatis-generator 来生成 实体类
/**
* 此表无注释
*/
public class UserTest {
/**
* 此列无注释
*/
private Long userId;
/**
* 时间用bigint,单位为秒
*/
private Long registerTime;
/**
* 这里长度设置成1,mybatis会生成boolean
*/
private Boolean sex;
/**
* 长度不需要设置,-128-127共256种情况,存储枚举足以了;
* -3(游客)、0(普通用户)、4(VIP用户)、2(管理员)、6(超级管理员)
*/
private Byte userType;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Long getRegisterTime() {
return registerTime;
}
public void setRegisterTime(Long registerTime) {
this.registerTime = registerTime;
}
public Boolean getSex() {
return sex;
}
public void setSex(Boolean sex) {
this.sex = sex;
}
public Byte getUserType() {
return userType;
}
public void setUserType(Byte userType) {
this.userType = userType;
}
}
然后我们需要创建一个用户类型的 枚举类,方便我们使用:
package com.diandaxia.demo107.enums;
/**
* 用户类型 枚举
* -3(游客)、0(普通用户)、4(VIP用户)、2(管理员)、6(超级管理员)
*/
public enum UserType {
/**
* 游客
*/
GUEST(-3),
/**
* 普通用户
*/
GENERAL(0),
/**
* vip用户
*/
VIP(4),
/**
* 管理员
*/
ADMIN(2),
/**
* 超级管理员
*/
SUPER(6);
/**
* MySQL里的 tinyint 值
*/
private Byte tinyInt;
/**
* 私有构造方法
*/
private UserType(Byte tinyInt) {
this.tinyInt = tinyInt;
}
/**
* 对外公开获取MySQL里的 tinyint 值
*/
public Byte getTinyInt(){
return this.tinyInt;
}
}
报错的原因是:GUEST(-3) 这个-3是个常量,整型常量 java默认是 int类型,而我们的tinyInt是Byte类型,int --> byte ,Java 转不了,故报错;需要把常量强制转换一下;
本文来自博客园,作者:del88,转载请注明原文链接:https://www.cnblogs.com/del88/p/18159620
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人