增删改 Insert Delete Update 操作中的一些问题。
一、主键生成策略
增加的时候主键生成的问题,不同的环境、不同的场景对应的主键生成策略可能是不一样的,比如日志表、购物订单表、外卖单。
主键生成策略设置方法:
示例代码:
package com.it.domain; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.Version; import lombok.Data; @Data //设置表名映射关系 //@TableName("tbl_user") public class User { //设置主键生成策略 @TableId(type = IdType.AUTO) private Long id; private String name; @TableField(value = "pwd",select = false) private String password; private Integer age; private String tel; @TableField(exist = false) private Integer online; private Integer deleted; @Version private Integer version; }
主键生成策略介绍:
查看IdType源码:
注意:AUTO 主键生成策略使用数据库ID自增策略,需要设置数据库自增。
INPUT主键生成策略使用,要取消数据库自增策略手动输入。
雪花算法生成id介绍:
雪花算法由占位符,时间戳,机器码,序列号组成,如下图:
二、全局配置
主键生成策略全局配置:
在application.yml中添加如下配置:
# mp日志
mybatis-plus:
global-config:
db-config:
id-type: assign_id
主键生成策略配置:
表名前缀全局配置:
在application.yml中添加如下配置:
# mp配置
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
banner: false
db-config:
id-type: assign_id
table-prefix: tbl_
表名前缀配置:
三、测试
单元测试代码:
@SpringBootTest class MybatisplusDmlApplicationTests { @Autowired private UserDao userDao; @Test void testSave(){ User user = new User(); // user.setId(667L); user.setName("你是程序员"); user.setPassword("it123456"); user.setAge(12); user.setTel("4006184000"); userDao.insert(user); } }
运行单元测试,添加成功。