用户工具

站点工具


java:mysql

BaseTable

CREATE TABLE `base_table` (
`id` bigint(20) NOT NULL COMMENT 'ID',
`deleted` bit(1) DEFAULT b'0' COMMENT '已删除',
`version` smallint(6) DEFAULT '0' COMMENT '版本号',
`createAt` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updateAt` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`createBy` bigint(20) DEFAULT NULL COMMENT '创建者',
`updateBy` bigint(20) DEFAULT NULL COMMENT '更新者',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='基础表';
  • modify column
alter table table_name modify column create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
, modify column update_time datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';

BaseEntity

@Data
@SuppressWarnings("serial")
public class BaseDO implements Serializable {
	@TableLogic
	private boolean deleted;

	@Version
	private int version;

	private Date createAt;
	private Date updateAt;

	private Long createBy;
	private Long updateBy;
}

表情字符

  • unicode一共有17个平面,第一个平面BMP=Basic Multilingual Plane,包含2^16=65536个编码
  • java的utf8支持将字符编码为1、2、3、4个字节,分别是ascii码、欧洲中东字符、中日韩等亚洲字符、特殊表情符号
  • mysql的utf8对应的就是BMP,每个BMP字符最多占3字节,所以mysql为char(n)类型预留了3*n字节空间
  • mysql 5.5+提供了utf8mb4支持全部utf8编码,multi-byte-4,并用utf8mb3别名以前的utf8
  • StringUtil.toMysqlUtf8(“😳”) ⇒ %F0%9F%98%B3

navicat连接属性:去掉勾选“高级”》“使用mysql字符集”

[client] 
default-character-set=utf8mb4
[mysql] 
default-character-set=utf8mb4
[mysqld] 
character-set-client-handshake=FALSE 
character-set-server=utf8mb4 
collation-server=utf8mb4_unicode_ci 
init_connect='SET NAMES utf8mb4'

  • 悲观锁
select * from goods where id=1 for update; //使用主键时为行锁,否则为表锁,set autocommit=0关闭自动提交事务
select * from goods where id=1 lock in share mode; //共享锁
  • 乐观锁
使用version或timestamp字段,操作失败时可能需要重复操作
java/mysql.txt · 最后更改: 2018/08/20 22:18 由 admin