MyBatis-Plus第一天
总结
1.MyBatisPlus简介
2.MyBatisPlus概述–主要特性和核心组件
3.对比Mybatis的不同
4.MybatisPlus入门案例(采用Springboot整合)
5.MybatisPlus数据库增删改查
一,MybBatisPlus概述
1.MyBatisPlus简介
MyBatis Plus 是一个基于 MyBatis 的增强工具,旨在简化开发过程,提高开发效率。它提供了许多实用的功能,如代码生成器、分页插件、条件构造器等,使得开发者可以更专注于业务逻辑的实现,而不必过多关注 MyBatis 的配置和 SQL 编写。
2.MyBatisPlus概述
2.1主要特性
**无侵入:**MyBatis Plus 在 MyBatis 的基础上进行扩展,不会对 MyBatis 的现有功能造成影响。
**依赖少:**仅依赖于 MyBatis 和 Spring,没有其他额外的依赖。
**强大的 CRUD 操作:**内置通用的 Mapper 和 Service,只需要简单的配置即可实现单表的 CRUD 操作。
**支持 Lambda 表达式:**通过 Lambda 表达式,方便地进行 SQL 操作。
**支持主键自动生成:**支持多种主键生成策略,如 UUID、自增 ID 等。
**支持 ActiveRecord 模式:**实体类只需继承 Model 类即可进行 CRUD 操作。
**内置分页插件:**基于 MyBatis 物理分页,开发者无需手动编写分页 SQL。
**内置性能分析插件:**可输出 SQL 语句及其执行时间,帮助开发者优化 SQL。
**内置全局拦截插件:**提供全局的 SQL 拦截功能,方便进行 SQL 改写和日志记录。
2.2核心组件
**BaseMapper:**提供了通用的 CRUD 方法,如 insert、delete、update、select 等。
**IService:**提供了更丰富的服务层方法,如分页查询、批量操作等。
**Wrapper:**条件构造器,用于构建复杂的查询条件。
**PaginationInnerInterceptor:**分页插件,支持物理分页。
**AutoGenerator:**代码生成器,可以根据数据库表结构自动生成实体类、Mapper 接口、Service 接口及其实现类。
3.对比Mybatis的不同
3.1实现方式不同
(1)Mybatis是基于XML或注解方式进行数据库操作的持久化框架,它提供了简单的CRUD操作以及动态生成SQL等功能;
(2)Mybatis_Plus是在Mybatis框架上的封装,只做增强不做改变,增强简化后的API更加方便进行开发,并且在性能、效率、易用性方面都有一定优化。
3.2功能支持不同
(1)Mybatis相对较为原始,需要手写大量的SQL以完成各种功能的实现;
(2)Mybatis_Plus相比与Mybatis提供了很多额外的功能,例如像条件构造器、代码生成器、分页插件、JSON处理器、枚举处理器等实用组件,使得开发者可以轻松快速完成业务逻辑的开发。
3.3编程风格差异
(1)Mybatis的编程风格更加传统,需要定义mapper.xml文件,并根据传入的参数使用相应的SQL查询语句,需要实现Mybatis提供的各种方法;
(2)Mybatis_Plus具有很多针对CRUD进行的简化方法,通过继承BaseMapper以及使用Lambda表达式,可以让我们类似使用接口编程的方式进行数据库操作。
二,MybatisPlus入门案例(采用Springboot整合)
1.创建新模块,选择Spring初始化,并配置模块相关基础信息
2.选择当前模块需要使用的技术栈
3.手动添加MyBatisPlus起步等所需依赖以及搭建框架
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.itxy</groupId>
<artifactId>MybatisPlusDemo00</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>MybatisPlusDemo00</name>
<description>MybatisPlusDemo00</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.6.13</spring-boot.version>
</properties>
<dependencies>
<!--spring-boot依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--mysql依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--spring-boot-starter-test依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!--mybatis-plus依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<!--druid依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
<!--junit依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
4.制作测试表
create database if not exists mybatisplus_db character set utf8;
use mybatisplus_db;
CREATE TABLE user (
id bigint(20) primary key auto_increment,
name varchar(32) not null,
password varchar(32) not null,
age int(3) not null ,
tel varchar(32) not null
);
insert into user values(null,'tom','123456',12,'12345678910');
insert into user values(null,'jack','123456',8,'12345678910');
insert into user values(null,'jerry','123456',15,'12345678910');
insert into user values(null,'tom','123456',9,'12345678910');
insert into user values(null,'snake','123456',28,'12345678910');
insert into user values(null,'张益达','123456',22,'12345678910');
insert into user values(null,'张大炮','123456',16,'12345678910');
5.创建实体类
package com.itxy.mybatisplusdemo00.pojo;
public class User {
private Long id;
private String name;
private String password;
private Integer age;
private String tel;
//自行添加getter、setter、toString()等方法
6.设置Jdbc参数
#此配置文件用于Spring应用中配置数据源。
#使用Alibaba的Druid连接池来管理MySQL数据库连接。
#配置包括驱动类名、数据库URL、用户名和密码。
#这些配置项将用于连接位于本地主机上的mybatisplus_db数据库。
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatisplus_db?serverTimezone=UTC
username: root
password: gaohe6666
7.定义数据接口,继承BaseMapper
package com.itxy.mybatisplusdemo00.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.itxy.mybatisplusdemo00.pojo.User;
import org.apache.ibatis.annotations.Mapper;
/*这是 MyBatis 的注解,它用于将UserDao接口注册为MyBatis的Mapper
,使得MyBatis可以自动扫描并识别该接口,进而与数据库的表进行交互。*/
@Mapper
/*通过继承 BaseMapper,UserDao 自动拥有了基本的数据库操作方法
例如 insert、delete、update、selectById 等。*/
public interface UserDao extends BaseMapper<User> {
}
8.通过查询功能测试
import com.itxy.mybatisplusdemo00.dao.UserDao;
import com.itxy.mybatisplusdemo00.pojo.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.List;
/*作用是用来标识这个类是一个Spring Boot的测试类,Spring Boot会为这个测试类提供一个运行的上下文环境。在测试时,它会启动整个Spring应用程序上下文*/
@SpringBootTest
/*作用是用来标识这个类是一个JUnit4的测试类,Spring Boot默认使用JUnit4作为测试框架,因此需要标识这个类*/
@RunWith(SpringJUnit4ClassRunner.class)
public class MpAppTests {
/*注入UserDao*/
@Autowired
private UserDao userDao;
/*查询所有*/
@Test
public void getAll() {
List<User> userList = userDao.selectList(null);
System.out.println(userList);
}
}
三MybatisPlus数据库增删改查
1.通过id查询(条件查询)
/*通过id查询*/
@Test
public void getById() {
User user = userDao.selectById(1);
System.out.println(user);
}
2.增加用户信息
/*新增*/
@Test
public void insert() {
User user = new User();
user.setId(8L);
user.setName("小杨");
user.setPassword("12345689");
user.setAge(20);
user.setTel("13800138000");
userDao.insert(user);
}
3.修改用户信息
/*修改*/
@Test
public void update() {
User user = new User();
user.setId(3L);
user.setName("Jerry");
user.setAge(25);
userDao.updateById(user);
}
4.删除用户信息
/*删除*/
@Test
public void delete() {
userDao.deleteById(1);
}
update() {
User user = new User();
user.setId(3L);
user.setName(“Jerry”);
user.setAge(25);
userDao.updateById(user);
}
### 4.删除用户信息
```java
/*删除*/
@Test
public void delete() {
userDao.deleteById(1);
}