1. 序号主键
CREATE TABLE `emp` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'id',
`emp_no` varchar(20) DEFAULT NULL COMMENT '员工编号',
`emp_name` varchar(255) DEFAULT NULL COMMENT '员工姓名',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
`field` varchar(255) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
unique index(emp_no),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='员工表';
主键自增和不自增,mybatis Mappe.xml
主键自增
<insert id='add'>
INSERT INTO emp(
emp_no,emp_name,create_time,field
)
VALUES (
( #{empNo},#{empName},now(),#{field}
)
</insert>
主键不自增 为Integer,Long时,先查询最大的id+1,作为新id
<insert id='add'>
INSERT INTO emp(
id,emp_no,emp_name,create_time,field
)
VALUES (
( (select id from (select (ifnull(max(id), 0)) + 1 as id from emp)t),#{empNo},#{empName},now(),#{field}
)
</insert>
好处,新增后,修改时可以修改empNo
2. 特定字段主键
CREATE TABLE `emp` (
`emp_no` varchar(20) NOT NULL COMMENT '员工编号',
`emp_name` varchar(255) DEFAULT NULL COMMENT '员工姓名',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
`field` varchar(255) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`emp_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='员工表';
emp_no作为主键,新增后,修改时不可以修改empNo,只能先删除再新增