本章主要是对MyBatis-Plus的初步介绍,包括一些背景知识、环境搭建、初步使用等知识和例子。
对于背景知识,主要包含对MyBatis-Plus的特性介绍、为什么使用MyBatis-Plus、MyBatis与MyBatis-Plus的区别;
对于环境搭建,主要包括JDK的安装、Eclispe的安装、MySQL的安装等;
对于初步使用,主要是以Maven项目为主的示例说明;**
1.1 MyBatis-Plus简介
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
MyBatis-Plus所期望的愿景是:
我们的愿景是成为 MyBatis 最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。
如图所示:
MyBatis-Plus的代码托管地址如下所示:
码云: https://gitee.com/baomidou/my...
Github: https://github.com/baomidou/m...
1.1.1 MyBatis-Plus特性
特性
• 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
• 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
• 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
• 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
• 支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer2005、SQLServer 等多种数据库
• 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
• 支持 XML 热加载:Mapper 对应的 XML 支持热加载,对于简单的 CRUD 操作,甚至可以无 XML 启动
• 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
• 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
• 支持关键词自动转义:支持数据库关键词(order、key......)自动转义,还可自定义关键词
• 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
• 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
• 内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
• 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作
• 内置 Sql 注入剥离器:支持 Sql 注入剥离,有效预防 Sql 注入攻击
1.1.2 为什么要使用MyBatis-Plus
关于为什么要使用MyBatis-Plus这个问题,我结合个人的使用经验,从代码生成器、易学性、应用性、安全性角度分析,归纳如下几个方面?
(1) MyBatis的代码生成器生成的一大堆XML或者是实体及其Dao太过繁琐,而MyBatis-Plus 的代码生成器,生成的代码从Entity到Dao、Service及其实现类还有Controller包含XML,可以说是一整套生成,生成的代码十分简洁实用;
(2) MyBatis-Plus原理就是MyBatis,只不过该开源作者对其做了强化,因此丝毫不影响原理怎么使用MyBatis,只不过对于实体而言,需要加一定的注解,注解也是非常易懂的;
(3) MyBatis-Plus在不少开源项目中都很流行,比如guns、renren-security等等,同时也有不少公司也在用,
如图所示:
(4) 至于安全方面,之前我们的公司的第一个项目使用的是MyBatis,后来另外两个项目接连使用MyBatis-Plus作为持久层,目前在线上暂未出现问题,即便出现问题,也不是因为MyBatis-Plus,问题一般通常是业务方面的bug之类的;
1.1.3 MyBatis-Plus与MyBatis的区别
相同点:
它们都是用于持久层开发(DAO层,又称数据访问层),一般都用于常用的SSM框架或者是SpringBoot构建微服务,关于SSM框架实战和SpringBoot集成构建微服务,后面会讲到的。
不同点:
(1) CRUD差异,MyBatis对于CRUD没有通用的一套,一般还得自己写SQL,复制过来,复制过去,而MyBatis-Plus对于CRUD有通用的一套。通用的一套,在这里指的是DAO、Service等;
(2) 对于实体与表及其字段定义不同,MyBatis对于实体与在字段,通过XML文件方式,而My Batis-Plus通过@TableName让实体与表关联,通过@TableField与表字段关联,如果是XML文件方式的话,实体与字段映射,主要针对自定义SQL;
(3) 插件成熟和丰富程度,MyBatis历史相对比MyBatis-Plus要久,插件丰富、成熟且强大,不是MyBatis-Plus所能比拟的,但是MyBatis-Plus也一直不断的更新强化自己,不过差距肯定是有的;
(4) 通用性不同,MyBatis是外国人开发的,国内外皆通用,而MyBatis-Plus是由国内人士自发组织的开源,目前主要通用于国内;
1.2 环境准备
开发过程中,环境准备是必须的。环境准备包含这么几个指标?
第一、 运行环境;
第二、 使用工具;
从运行环境的角度看,示例如下:
例1:使用Java作为开发的语言就需要安装对应的JDK;
例2:要使用webpack打包需要Node.JS的环境;
从使用工具的角度看,示例如下:
例1:使用IDEA或者Eclipse作为Java的开发工具;
例2:例如Maven作为项目构建工具;
本节主要围绕JDK的安装、Eclipse的安装、MySQL的安装、Maven的安装等方面来讲解环境准备,这些准备主要为了后续更好的讲解。
1.2.1 JDK的下载
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
JDK的下载地址如下所示:
https://www.oracle.com/techne...
如下图所示:
一般Windos安装选择的exe的安装方式,先下载后安装,关于exe安装软件的方式就不多说了。
1.2.2 Eclipse的下载
Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。
Eclipse的下载地址如下:https://www.eclipse.org/downl...
如下图所示,可以根据自己的需要安装不同版本的Eclipse
1.2.3 MySQL的下载
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
MySQL的下载地址如下所示:
https://dev.mysql.com/downloa...
如下图所示,这是目前MySQL最新版本5.7
1.2.4 Maven的下载
Maven项目对象模型(POM) 可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Maven的下载地址为: http://maven.apache.org/downl...
如下图所示:
1.3 简单使用
经过前面的MyBatis-Plus简介,相信你对MyBatis-Plus有一个大致的了解。
对应的环境准备小节,我假定你环境已经全部安装好了,对应Java开发者而言搭建环境是必不可少的技能。无论是在校就读的大学生、还是出来工作后的职业者,都是基础当中的基础。下面我们进入简单实用这一环节。
项目结构如图所示:
1.3.1 导入Maven依赖
关于依赖的下载地址,可以去Maven的官方仓库中下载:
https://mvnrepository.com/tag...
如图所示:
1.3.2 准备SQL脚本
1.3.3 建立实体
1.3.4 编写DAO
1.3.5 编写XML文件和对应的配置文件
UserDao.xml
mybatis-config.xml
1.3.6 编写工具类
1.3.7 测试
最终的运行结果是通过Junit测试没有报错,输出如下:
说明:
其实这个例子看一看,可以发现与MyBatis的差别并不大,可以说就是MyBatis,不过区别还是有的,比如maven依赖并没有包含MyBatis,
但是实际上它却具有与MyBatis一样的功能,所以从这个角度来看,MyBatis-Plus就是MyBatis,因为它拥有MyBatis的所有功能,但从另外的角度来看,它们还是有一定的差异,这个差异造成了MyBatis-Plus比MyBatis要强大的多。
1.4 小结
这一章主要讲的就是MyBatis-Plus的相关背景知识和环境准备及其简单示例,通过这些理论+对应的例子能够让你对MyBatis-Plus有一个初步的了解。
关于本章示例工程源码下载地址为:
https://github.com/developers...
如需转载请注明原创地址,谢谢合作。