MybatisPlus

本文介绍了如何在项目中引入MybatisPlus,并配置雪花算法作为主键生成策略。详细讲解了雪花算法的原理,64位long型ID的结构以及在分布式系统中的应用。此外,还展示了MybatisPlus提供的主键自增配置以及各种增删查改操作的方法。同时,Wrapper作为条件构造器在复杂SQL操作中的重要作用也被提及。
摘要由CSDN通过智能技术生成

MybatisPlus

导入mybatis所需要的Maven坐标

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.0</version>
</dependency>

雪花算法

SnowFlake算法是Twitter开源的分布式id生成算法 其核心思想就是:使用一个64bit的long型数字作为全局唯一id在分布式系统中应用十分广泛 且ID引入了时间戳 基本上保持自增的

这64个bit中其中 一个bit是不用的 然后用其中的41bit作为毫秒数 用10bit作为工作机器id 12bit作为序列号

主键自增

我们需要配置 主键自增

实例中的id对应数据库中的主键(uuid,自增id 雪花算法 redis zookeeper)

实体类字段上@TableId(type-IdType.AUTO)

TableName("表名)

TableId表名属性为表中的主键若属性名称为默认id

TableFieId(“字段”)当实体类属性与表字段不一致时可以用来声明

MP增加方法

// 插入一条记录
int insert(T entity);

MP查询部分方法

// 根据 ID 查询
T selectById(Serializable id);

// 根据 entity 条件,查询一条记录
T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

// 查询(根据ID 批量查询)
List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);

// 根据 entity 条件,查询全部记录
List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

// 查询(根据 columnMap 条件)
List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);

// 根据 Wrapper 条件,查询全部记录
List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

// 根据 Wrapper 条件,查询全部记录。注意: 只返回第一个字段的值
List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

// 根据 entity 条件,查询全部记录(并翻页)
IPage<T> selectPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

// 根据 Wrapper 条件,查询全部记录(并翻页)
IPage<Map<String, Object>> selectMapsPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

// 根据 Wrapper 条件,查询总记录数
Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

MP删除方法

// 根据 entity 条件,删除记录
int delete(@Param(Constants.WRAPPER) Wrapper<T> wrapper);

// 删除(根据ID 批量删除)
int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);

// 根据 ID 删除
int deleteById(Serializable id);

// 根据 columnMap 条件,删除记录
int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);

MP更新方法

// 根据 whereEntity 条件,更新记录
int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper);

// 根据 ID 修改
int updateById(@Param(Constants.ENTITY) T entity);

条件构造器(Wrapper)

十分重要: Wrapper

我们写一些复杂的sql可以用它完成

1.条件构造器关系介绍

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wjr7egSV-1638759940336)(C:%5CUsers%5C86152%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20211206095013012.png)]

条件构造器关系介绍:

上图绿色框为抽象类abstract

蓝色框为正常class类 可new对象

黄色箭头指向为父子类关系 箭头指向为父类

wapper介绍:

Wrapper:条件构造抽象类 最顶端的父类

AbstractWrapper: 用于查询条件封装 生成sql的where条件

QueryWrapper: Entity对象封装操作类 不是用lambda语法

UpdateWeapper: Update条件封装 用于Entity对象更新操作

AbstractLambdaWrapper: Lambda语法使用Wrapper统一处理解析lambda获取column

LambdaQueryWrapper:看名称也能明白就是用于Wrapper统一处理解析lambda获取column

LambdaUpdateWrapper: Lambda更新封装wrapper

项目实例

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值