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