是什么?
是一个Mybatis的增强工具,在Mybatis的基础之上只做增强,不做改变!
为什么?
我们在使用传统的Mybatis进行mapper文件的配置的时候会发现当我们的数据表量十分庞大的时候,就需要配置大量的mapper.xml文件,但实际上这里面的大部分sql语句都是相同的,不同的只是字段而已,因此我们完全可以把这些重复代码抽取出来,MybatisPlus就帮我们做到了这一点。
特点:
无侵入:只做增强不做改变,引入它不会对现有的工程有任何的影响,十分丝滑。
耗损小:启动即会自动注入基本CRUD,性能基本无损耗,直接面向对象操作。
强大的CRUD操作:内嵌通用Mapper、通用Service,仅仅通过少量配置就能实现大部分的CRUD操作。
支持Lambda形式调用:通过Lambda表达式,方便编写各类查询条件,无需担心字段写错。
强大的条件构造器:配合Lambda表达式拼接查询条件,避免了sql语句的大量编写。
支持主键自动生成:支持四种主键生成策略,可以自由配置,完美解决主键问题。
支持ActiveRecord模式:支持ActiveRecord形式的调用,实体类只需要继承Model类即可完成强大的CRUD操作。
支持自定义全局操作:支持全局通用方法注入。
内嵌代码生成器
内置分页插件
分页插件支持多种数据库
内嵌性能分析插件:可以输出SQL语句以及其执行时间,建议开发测试的时候使用该功能,能够快速揪出慢查询。
内嵌全局拦截插件
缺点:
1. 既然CRUD都是MybatisPlus帮我们写的,那么我们想控制起来就特别的麻烦
2.MybatisPlus不支持连表查询,如果要进行联表查询还是需要配置mapper.xml文件编写sql语句;
MyBatisPlus是怎么做的?
1.首先扫描我们的实体类;
2.扫描完成之后,通过反射提取表名和列名;(如果贴的有注解,则使用注解后的名字)
3.再基于表名和列名帮我们生成CURD的sql语句;
4.把这些sql语句注入到Mybatis容器中;
5.MybatisPlus程序启动的时候,会扫描所有继承了BaseMapper的Mapper接口,并创建代理对象,代理对象中实现了基础的CRUD功能,在BaseMapper中定义了通用的CRUD的方法;
MybatisPlus常用注解
1.@TableName(表名-》贴在实体类上):手动指定表名让MybatisPlus扫描而不是直接使用实体类名;
2.@TableField(列名-》贴在字段上):手动指定列名让MybatisPlus扫描,而不是直接使用属性名;
3.@TableId(type=IdType.Auto):MybatisPlus在进行新增操作的时候,id默认新增模式是使用雪花算法+UUID来随机生成的,使用该注解来手动选择ID的生成方式
4.@TableField(exist=false)贴在字段上:来告诉MybatisPlus不用扫描该列!