MyBatisPlus 笔记
1 MyBatisPlus简介
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
特性
-
无侵入:可以将MP理解为MyBatis的外挂,只做增强不做改变。
-
增强:简化了MyBatis的开发体验,提供了更多功能。
-
不做改变:引入MP后,MyBatis原有的使用方式不会有任何变化。也就是如果引入MP后,你使用或者不使用MP的增强都可以,没有强制性。
-
-
损耗小:MP启动即会自动提前加载增强代码,使用时性能对比MyBatis基本无损耗。
-
丰富的内置功能:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
一句话概括:MP是一个简化MyBatis开发,提高开发效率的工具。
2 第1个MyBatisPlus程序
复习SpringBoot中MyBatis项目的开发步骤
-
搭建项目开发环境
-
新建项目
-
导入依赖
mysql-java-connector 数据库驱动
mybatis-spring-boot-starter mybatis的starter依赖
spring-boot-starter-test 测试依赖
-
导入配置文件
application.yml
-
配置文件初始化
application.yml
spring: #连接池配置 datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/baizhi?useUnicode=true&characterEncoding=utf-8 username: root password: root #mybatis配置 mybatis: # 如果不使用实体别名,可以不用配置 type-aliases-package: com.baizhi.entity #如果mapper.xml和接口同包同名可以不用配置 mapper-locations: classpath:com/baizhi/mapper/*Mapper.xml
-
-
建表
-
实体
-
dao
接口中定义增删改查方法,在xml中提供sql语句
-
service
接口中定义业务方法
实现类中提供方法实现:调用dao
-
test
入口类:通过MapperScan扫描dao包
MP使用步骤
相比MyBatis的步骤,MP的使用步骤发生如下变化
-
依赖pom.xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.1.4.RELEASE</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.48</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>2.1.4.RELEASE</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> </dependency>
注意:mp的版本和springboot的版本号不能随意更改,保证和笔记相同
-
配置
mybatis: type-aliases-package: com.baizhi.entity mapper-locations: classpath:com/baizhi/mapper/*Mapper.xml #替换为 mybatis-plus: type-aliases-package: com.baizhi.entity mapper-locations: classpath:com/baizhi/mapper/*Mapper.xml
-
dao的开发方式
继承BaseMapper,同时设置泛型为实体类型
-
实体类
使用TableName注解明确表名
使用TableId注解明确主键
使用TableField注解明确列名
实战
-
实体类
@TableName("t_user") public class User { @TableId(value="user_id") private Integer id; &#