Mybatis-Plus可以节省大量工作时间,所有的CRUD代码它都可以自动化完成!
作用类似于JPA、tk-mapper,都是用来简化开发的 (其实就是偷懒用的)
简单了解:Mybatis本来就是简化JDBC操作的,而Mybatis-Plus是简化Mybatis的
官方简介:MyBatis-Plus (简称 MP) 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
官方网址:https://baomidou.com/
特点:
官方网址:https://baomidou.com/guide/quick-start.html
使用第三方组件:
创建一个mybatis_plus数据库和一个user数据表
-- 创建mybatis_plus数据库
CREATE SCHEMA `mybatis_plus` DEFAULT CHARACTER SET utf8;
-- 使用mybatis_plus数据库
Use `mybatis_plus`;
-- 创建user数据表
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`(
`id` BIGINT(20) NOT NULL COMMENT '主键ID',
`name` VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
`age` INT(11) NULL DEFAULT NULL COMMENT '年龄',
`email` VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
) engine=InnoDB default charset=utf8;
-- 真实开发中:version(乐观锁),deleted(逻辑删除),gmt_create(创建时间)、gmt_modified(修改时间)
DELETE FROM user;
-- 插入用户数据
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, '[email protected]'),
(2, 'Jack', 20, '[email protected]'),
(3, 'Tom', 28, '[email protected]'),
(4, 'Sandy', 21, '[email protected]'),
(5, 'Billie', 24, '[email protected]');
这里勾选SpringWeb和MySQL Driver即可,由于Spring没有提供mybatis-plus的资源依赖,我们在创建完项目后手动导入
到这里,一个Springboot项目就创建完成了!
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-boot-starterartifactId>
<version>3.3.1.tmpversion>
dependency>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<optional>trueoptional>
dependency>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-thymeleafartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.47version>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<optional>trueoptional>
dependency>
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-boot-starterartifactId>
<version>3.3.1.tmpversion>
dependency>
dependencies>
说明:我们使用mybatis-plus可以节省我们大量的代码,尽量不要同时导入mybatis和mybatis-plus,会存在版本差异!
与使用Mybatis时连接步骤相同
# 自定义TomCat的端口号(这是我个人的习惯,默认端口号是8080)
server:
port: 8888
spring:
# 配置数据相关属性
datasource:
# 设置数据库驱动(MySQL5.5/5.6/5.7版本使用这个驱动即可)
driver-class-name: com.mysql.jdbc.Driver
# 而MySQL8.0版本要使用下面这个驱动
# driver-class-name: com.mysql.cj.jdbc.Driver
# 设置ySQL数据库的登录用户名和密码(根据实际的登录账户信息设置)
username: root
password: 123456
# 设置数据库连接(MySQL5.5/5.6/5.7版本使用这个连接就可以了)
url: jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf-8&useSSL=true
# MySQL8.0版本需要加上时区
# url: jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%288
使用传统方式:编写pojo、dao (连接mybatis、配置mapper.xml映射文件)、service、controller层
使用mybatis-plus后:编写pojo、mapper接口,然后直接使用,无需配置mapper.xml映射文件
package com.kuang.mybatis_plus.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data //导入无参构造,set和get方法,以及toString方法等
@AllArgsConstructor //导入有参构造
@NoArgsConstructor //再次导入无参构造,防止被有参构造覆盖掉
public class User {
private Long id; //用户编号
private String name; //用户名
private Integer age; //年龄
private String email; //邮箱
}
package com.kuang.mybatis_plus.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kuang.mybatis_plus.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
//使用@Repository注解,代表持久层,将UserMapper接口托管给Spring管理
@Repository
//使用@Mapper注解,将UserMapper注册为Mapper接口
@Mapper
//在对应的Mapper上继承基本类BaseMapper
public interface UserMapper extends BaseMapper<User> {
//所有的CRUD操作都已经完成,也不需要编写配置文件了
}
需要在主启动类上去扫描我们的mapper包下的所有接口
@MapperScan(“com.kuang.mybatis_plus.mapper”)
package com.kuang.mybatis_plus;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.kuang.mybatis_plus.mapper.UserMapper;
import com.kuang.mybatis_plus.pojo.User;
import org.junit.jupiter.api.Test;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
//扫描mapper包下的所有接口
@MapperScan("com.kuang.mybatis_plus.mapper")
class MybatisPlusApplicationTests {
//继承了BaseMapper,所有的方法都来自父类
//我们也可以编写自己的扩展方法
//通过类型自动装配UserMapper接口
@Autowired
private UserMapper userMapper;
@Test
void contextLoads() {
//参数是一个Wrapper(条件构造器,这里先不用,参数为null即可)
//查询所有的用户
List<User> users = userMapper.selectList(null);
//遍历用户列表集合
users.forEach(System.out::println);
}
}
结果:成功输出了所有的用户信息!
MyBatis-Plus都写好了
MyBatis-Plus都写好了
我们所有的SQL现在是不可见的,我们希望知道它是怎样执行的,所以我们必须要看日志!
# mybatis-plus的相关配置
mybatis-plus:
# 配置日志输出
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
结果:成功输出了SQL查询的日志信息!
配置完日志后,后面的学习就要注意这个自动生成的SQL,你们就会爱上MyBatis-Plus
参考视频链接:https://www.bilibili.com/video/BV17E411N7KN