当前位置 : 首页 » 文章分类 :  开发  »  MyBatisPlus

MyBatisPlus

MyBatisPlus 使用笔记


主键ID策略

AUTO 数据库ID自增,该类型请确保数据库设置了 ID自增 否则无效
NONE 该类型为未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT)
INPUT 用户输入ID,该类型可以通过自己注册自动填充插件进行填充

以下两种类型、只有当插入对象 ID 为空,才自动填充:
ASSIGN_ID 分配ID (主键类型为number或string), 默认实现类 {@link com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator}(雪花算法)
ASSIGN_UUID 分配UUID (主键类型为 string),默认实现类 {@link com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator}(UUID.replace(“-“,””))

自增ID

mybatis-plus 从 3.3.0 开始,默认主键策略使用雪花算法+UUID(不含中划线)。

想使用数据库自增ID的话需要手动指定:

@TableName("comment")
public class CommentDO {
    @TableId(type = IdType.AUTO)
    private Long id;
}

更新set为null

mybatisplus 的 saveOrUpdate() 和 updateById() 方法不会对 null 字段更新,无法实现将某个字段的值 set 为 null

1、使用 LambdaUpdateWrapper 或 UpdateWrapper

LambdaUpdateWrapper<UserDO> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(UserDO::getJwt, null);
updateWrapper.set(UserDO::getLoginTime, null);
userMybatisService.update(updateWrapper);

2、使用 lambdaUpdate

userMybatisService.lambdaUpdate()
                    .eq(UserDO::getUsername, username)
                    .set(UserDO::getJwt, null)
                    .set(UserDO::getLoginTime, null)
                    .update();

Date 类型丢失时分秒

MySQL 字段类型

create_time datetime      default CURRENT_TIMESTAMP not null,
update_time timestamp     default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP

java 类型:

private java.sql.Date createTime;
private java.sql.Date updateTime;

写入数据时 MySQL 自动填入当前时间没问题,但通过 mybatis 查询出的数据只有年月日,丢失了时分秒,后来改为 java8 的新日期类型解决

private LocalDateTime createTime;
private LocalDateTime updateTime;

上一篇 HTTPS

下一篇 DrawIO

阅读
评论
400
阅读预计1分钟
创建日期 2022-11-29
修改日期 2023-08-22
类别

页面信息

location:
protocol:
host:
hostname:
origin:
pathname:
href:
document:
referrer:
navigator:
platform:
userAgent:

评论