MybatisPlus
1.1MP介绍
MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
1.2MP的特点
1.无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
2.损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
3.强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
4.支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
5.支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
6.支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
7.支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
8.内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
9.内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
10.分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
11.内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
12.内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作
1.3MP核心原理
1.3.1 需求
说明:之前操作数据库采用sql(面向过程的语言)方法进行编辑,但是如果所有的单表操作都由程序员完成,则开发效率低,能否开发一种机制可以实现以面向对象的方法操作数据库.
问题:
对象与数据库中的表如何一对一映射???
对象中的属性要求与表中的字段**(字段代表数据库表中的列)**一对一映射??? 如何实现!!!
1.4 Mybatis Plus入门案列
1.4.1 导入jar包
1.4.2 编辑pojo对象
说明:MP要求以面向对象的方式操作数据库,其中对象与表 属性与字段必须映射
实现方式:利用注解进行绑定
1.4.3 编辑Mapper接口
1.4.4 编译YML配置文件
说明:MP增强了Mybatis, MP内部包含了Mybatis ,所以在pom.xml将Mybatis的包删除,否则内部jar包异常
修改YML配置文件
把原来的Mybatis修改为Mybatis-plus
1.4.5编辑测试案列
利用userMapper实现
1.4MP核心原理
1.4.1 需求
说明:之前操作数据库采用sql(面向过程的语言)方法进行编辑,但是如果所有的单表操作都由程序员完成,则开发效率低,能否开发一种机制可以实现以面向对象的方法操作数据库.
1.4.2 原理说明
1.对象与数据表进行关联 @TableName
2.MP采用BaseMapper的方式 将公共的接口方法进行了抽取.采用泛型T的方式进行约束
3.MP将用户操作的对象,在底层自动转换为SQL语句
1.4.3 对象转化SQL原理
对象方法: userMapper.insert(user 对象);
SQL语句: insert into demo_user(字段名…) value(属性值…)
步骤:
1.根据userMapper找到对应的class类型
2.根据userMapper的类型通过反射机制获取父级接口的类型BaseMapper
3.找到BaseMapper类型之后,获取该父级的泛型类型 User.class
4.获取了 User.class之后,获取class的注解名@TableName注解.获取注解名称 至此获取成功
5.根据User.class获取其中的属性名称,之后获取属性上的@TableFleid获取字段名称
6.之后利用对象的get方法获取属性的值最终实现了SQL语句的拼接过程
7.MP将整理好的SQL交给Mybatis(jdbc)去处理.最终实现了以对象的方式操作数据库
1.5.1MP常规操作
15.1添加日志打印
1.5.2测试入库操作
1.5.3测试更新操作
1.6切换Maven工具
1.6.1关于Maven说明
程序员操守:
1.Maven不要放在系统C盘 不要有中文的目录 空格
2.在E盘中复制工具
3.配置setting文件,切换自己的本地库
3.1切换私服镜像
3.2切换远程仓库(阿里云)
3.3切换JDK版本