MybatisPlus与Mybatis的不同
MybatisPlus与Mybatis是一种合作关系,目的是to be the best partner of Mybatis(成为Mybatis的最佳合作伙伴),可以极大的提升开发效率,也是当今企业开发中的必备技术。
MybatisPlus如何实现的增强?
润物无声
只做增强不做改变,引入mybatisplus不会对现有的工程产生影响,如丝般顺滑。
效率至上
只需简单配置,即可快速进行单表CRUD操作,从而节省大量时间。
丰富功能
代码生成,自动分页,逻辑删除,自动填充等功能一应俱全。
入门,如何使用mp
1.引入MybatisPlus的起步依赖
MybatisPlus官方提供了starter,其中集成了Mybatis和MybatisPlus的所有功能,并且实现了自动装配效果。因此我们可以用MybatisPlus的starter代替Mybatis的starter。
2.定义Mapper
自定义的Mapper继承MybatisPlus提供的BaseMapper接口。
3.找方法
继承之后便拥有MybatisPlus的已封装好的增删改查的api且见名知意:
原理
MybatisPlus通过扫描实体类(泛型),并基于反射获取实体类信息作为数据库表信息。
约定
●类名驼峰转下划线作为表名:createTime -> creat_time;
●名为id的字段作为主键;
●变量名驼峰转下划线作为表的字段名
常见注解
●@TableName:用来指定表名:
@TableName("tb_user")
●@TableId:用来指定表中的主键字段信息:
@TableId(value="id", type=" ?")
idType枚举:
AUTO:数据库自增长
INPUT:通过set方法自行插入
ASSIGN_ID:分配ID+接口identifierGenerator的方法nextId来生成id,默认实现类是DefaultIdentifierGenerator雪花算法
●@TableField:用来指定表中的普通字段信息
@TableField使用场景:
1.成员变量名与数据库字段名不一致
2.成员变量名以is开头,且是布尔值
3.成员变量名与数据库关键字冲突
4.成员变量不是数据库字段,如order
常见配置
MyBatisPlus的配置项继承了MyBatis原生配置和一些自己特有的配置。例如:
核心功能
1.条件构造器
2.自定义SQL
以上两个为mp的实际应用,利用wrapper类进行api调用,简化sql和业务流程
3.Service接口
与上文的baseMapper一样具有非常多的api
但需要在自定义service接口中先继承IService接口
自定义Serviceimpl实现类中继承ServiceImpl类
扩展功能
代码生成
在idea插件中下载MyBatisPlus(二次元美少女图标)
应用后idea编辑栏最后会出现一个“Other”图标
选择“Config Database”连接数据库后选择“Code Generator”
jdbc:mysql://localhost:3306/your_database?serverTimezone=Asia/Shanghai
这里建议大家看一下哔哩哔哩黑马微服务视频p12(BV1S142197x7)进行填充
静态工具
即静态工具DB,也是具有非常多的api
逻辑删除
逻辑删除就是基于代码逻辑模拟删除效果,但并不会真正删除数据
现实应用场景:客户在电商平台删除订单,并不会删除数据库存储的订单,而是逻辑删除
MybatisPlus提供了逻辑删除功能,无需改变方法调用的方式,而是在底层帮我们自动修改CRUD的语句。我们要做的就是在application.yaml文件中配置逻辑删除的字段名称和值即可:
逻辑删除本身也有自己的问题,比如: 会导致数据库表垃圾数据越来越多,影响查询效率 SQL中全都需要对逻辑删除字段做判断,影响查询效率 因此,我不太推荐采用逻辑删除功能,如果数据不能删除,可以采用把数据迁移到其它表的办法。
枚举处理器
给枚举中的与数据库对应value值添加@EnumValue注解
在配置文件中配置统一的枚举处理器,实现类型转换
JSON处理器
插件功能
分页插件
首先,要在配置类中注册MyBatisPlus的核心插件,同时添加分页插件:
接着,就可以使用分页的API了:
总结
MybatisPlus是Mybatis的增强版,旨在成为Mybatis的最佳合作伙伴,显著提升开发效率。它通过无缝集成和增强功能,如代码生成、自动分页、逻辑删除等,简化了单表CRUD操作,而无需改变现有工程结构。MybatisPlus通过扫描实体类并利用反射机制获取数据库表信息,遵循类名和变量名驼峰转下划线的约定。它提供了丰富的注解如@TableName、@TableId和@TableField,以及配置项来支持复杂的数据库操作。此外,MybatisPlus还引入了条件构造器、自定义SQL、Service接口等核心功能,以及代码生成、逻辑删除、枚举处理器等扩展功能,使得开发更加高效和便捷。尽管逻辑删除功能存在数据积累和查询效率问题,但MybatisPlus提供了多种解决方案,如数据迁移,以适应不同的业务需求。
以上仅是mp的基本用法,但基本上已经足够应对基础的开发业务。
参考视频: BV1S142197x7