[MyBatisPlus]MyBatisPlus 简介、入门案例
MyBatisPlus 入门案例
MybatisPlus(简称 MP)是基于 MyBatis 框架基础上开发的增强型工具,旨在简化开发、提供效率。
开发方式
基于 MyBatis 使用 MyBatisPlus
基于 Spring 使用 MyBatisPlus
==基于 SpringBoot 使用 MyBatisPlus==
在这里我们直接使用第三种开发方式。
SpringBoot 整合 MyBatis 回顾
首先我们来复习一下,SpringBoot 整合 Mybatis 的开发过程:
创建 SpringBoot 工程
勾选配置使用的技术,能够实现自动添加起步依赖包
设置 dataSource 相关属性(JDBC 参数)
定义数据层接口映射配置
SpringBoot 整合 MyBatisPlus
我们可以参考着上面的这个实现步骤把 SpringBoot 整合 MyBatisPlus 来快速实现下,具体的实现步骤为:
步骤 1:创建数据库及表
![](https://static001.geekbang.org/infoq/69/69314338205ce2cff89dcdc2a9c3fddc.png)
步骤 2:创建 SpringBoot 工程
![](https://static001.geekbang.org/infoq/50/504202700a3fe101c4023aa0c86058bb.png)
步骤 3:勾选配置使用技术
![](https://static001.geekbang.org/infoq/91/9115c879f02e3eb21773e4e97f267e01.png)
说明:
由于 MP 并未被收录到 idea 的系统内置配置,无法直接选择加入,需要手动在 pom.xml 中配置添加
步骤 4:pom.xml 补全依赖
说明:
druid 数据源可以加也可以不加,SpringBoot 有内置的数据源,可以配置成使用 Druid 数据源
从 MP 的依赖关系可以看出,通过依赖传递已经将 MyBatis 与 MyBatis 整合 Spring 的 jar 包导入,我们不需要额外在添加 MyBatis 的相关 jar 包
步骤 5:添加 MP 的相关配置信息
resources 默认生成的是 properties 配置文件,可以将其替换成 yml 文件,并在文件中配置数据库连接的相关信息:application.yml
说明:==serverTimezone 是用来设置时区,UTC 是标准时区,和咱们的时间差 8 小时,所以可以将其修改为Asia/Shanghai
==
步骤 6:根据数据库表创建实体类
注意:==类名与表名要对应!!!====属性名与字段名要对应!!!==
步骤 7:创建 Dao 接口
注意这样就写完了!你后面再测试的时候,会发现有很多直接供我们调用的方法:
![](https://static001.geekbang.org/infoq/51/5125b99ddfb98b508c5b88240ef05732.png)
步骤 8:编写引导类
说明:Dao 接口要想被容器扫描到,有两种解决方案:
方案一:在 Dao 接口上添加
@Mapper
注解,并且确保 Dao 处在引导类所在包或其子包中该方案的缺点是需要在每一 Dao 接口中添加注解
方案二:在引导类上添加
@MapperScan
注解,其属性为所要扫描的 Dao 所在包该方案的好处是只需要写一次,则指定包下的所有 Dao 接口都能被扫描到,
@Mapper
就可以不写。
步骤 9:编写测试类
说明:==userDao 注入的时候下面有红线提示的原因是什么?==UserDao 是一个接口,不能实例化对象。只有在服务器启动 IOC 容器初始化后,由框架创建 DAO 接口的代理对象来注入。现在服务器并未启动,所以代理对象也未创建,IDEA 查找不到对应的对象注入,所以提示报红。一旦服务启动,就能注入其代理对象,所以该错误提示不影响正常运行。
查看运行结果:
![](https://static001.geekbang.org/infoq/19/1907e4c18c68b3138eeb54d80f662262.png)
跟之前整合 MyBatis 相比,你会发现我们不需要在 DAO 接口中编写方法和 SQL 语句了,只需要继承BaseMapper
接口即可。整体来说简化很多。
MyBatisPlus 简介
MyBatisPlus(简称 MP)是基于 MyBatis 框架基础上开发的增强型工具,旨在==简化开发、提高效率==
通过刚才的案例,相信大家能够体会简化开发和提高效率这两个方面的优点。
MyBatisPlus 的官网为:https://mp.baomidou.com/
如果你去访问试图去访问 https://mybatis.plus,那么可能会失败。因为这个域名是别人捐赠的。
我们非常的推荐 MybatisPlus 的官方文档,它对于新手非常的友好,语言风格诙谐幽默:
![](https://static001.geekbang.org/infoq/51/51b6c7557cbc80671fc7e0e248986dbf.png)
无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作
版权声明: 本文为 InfoQ 作者【fake smile by】的原创文章。
原文链接:【http://xie.infoq.cn/article/3b5c0da52557a39f8bbb43315】。未经作者许可,禁止转载。
评论