一篇文章带你学会MybatisPlus~(一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 一篇文章带你学会MybatisPlus~

实现MybatisPlus的简单使用:

数据库准备部分:

//创建名为mybatisPlus的数据库
create database mybatisPlus;
//使用该数据库
use mybatisPlus;
//创建user表
CREATE TABLE user(
id bigint(20) NOT NULL COMMENT '主键ID' ,
name varchar(30) DEFAULT NULL COMMENT '姓名',
age int(11) DEFAULT NULL COMMENT '年龄',
email varchar(50) DEFAULT NULL COMMENT '邮箱' ,
PRIMARY KEY (id)
)ENGINE=InnODB DEFAULT CHARSET=utf8;
//向user表中加入信息
INSERT INTO user (id,name,age, email)
 VALUES(1,"Jone",18,"testl@baomidou.com") ,
 (2,"Jack",20,"test2@baomidou.com"),
 (3,"Tom",28,"test3@baomidou .com") ,
 (4,"sandy",21,"test4@baomidou.com") ,
 (5,"Bi1lie",24,"test 5@baomidou .com") ;

查询user表中的数据:

select * from user;

如下所示:

Java部分:

第一步:创建springboot工程

我们使用Spring Initailizr快速开发一个项目

第二步:导入所需的依赖

<dependencies>
    <!-- springboot项目启动器-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <!--springboot测试类启动器 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    <!--数据库驱动 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.31</version>
    </dependency>
    <!--mybatisPlus启动器 -->
    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-boot-starter</artifactId>
      <version>3.4.2</version>
    </dependency>
    <!--lombok插件---用于简化实体类开发 -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
    </dependency>
  </dependencies>

第三步:创建对应的实体类

package com.example.mybatisplus.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Long id;
    private String name;
    private Integer age;
    private  String email;
}

第四步:创建mapper接口并扫描

package com.example.mybatisplus.Mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.mybatisplus.pojo.User;
public interface UserMapper extends BaseMapper<User> {
}

第五步:创建启动类

package com.example.mybatisplus;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
//这里为你的Mapper接口所放的包的全类名
@MapperScan("com.example.mybatisplus.Mapper")
public class MybatisPlusApplication {
  public static void main(String[] args) {
    SpringApplication.run(MybatisPlusApplication.class, args);
  }
}

第六步:创建配置文件

spring:
  #配置数据源信息
  datasource:
    #配置数据源类型
    type: com.zaxxer.hikari.HikariDataSource
    #配置连接数据库的各个信息
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatisPlus?Timezone=GMT%2B8characterEncoding=utf-8&userSSL=false
    hikari:
      username: root
      password: XXX

第七步:创建测试类

package com.example.mybatisplus.Test;
import com.example.mybatisplus.Mapper.UserMapper;
import com.example.mybatisplus.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
public class MybatisPlusTest {
    @Autowired
    private UserMapper userMapper;
    @Test
    public void test(){
      List<User> userList=userMapper.selectList(null);
      System.out.println(userList);
    }
}

输出如下所示:

加入日志功能:

在application.yaml配置文件中加入如下代码

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

再次运行输出如下所示:

我们通过日志信息可以看到mybatisPlus创建了SQL语句,表名为user,user表来源于我们的user实体类,而user表中的字段来源于我们user实体类中的属性名,根本原因来自于mybatisPlus的框架结构,如下所示:


右边很清楚的表达了Mybatis创建SQL语句的过程

BaseMapper添加功能:

   //添加功能
    @Test
    public void insertUser(){
        User user=new User();
        user.setName("张三");
        user.setAge(28);
        user.setEmail("zhangsan@guigu.com");
        //insert方法的参数为实体类
       int result= userMapper.insert(user);
        System.out.println(result);
        //获取插入的数据的id
        System.out.println(user.getId());
    }

输出如下所示:

数据库中查询如下所示:

BaseMapper删除功能:

  @Test
  //删除功能---根据id删除
    public void deleteUser() {
    //由于我们在数据库表中设置的为bigint,它已经超过了整形的范围,因此,我们需要设置为L
     int result=userMapper.deleteById(1718589558745993217L);
     System.out.println(result);
    }

输出如下所示:

    @Test
     //删除功能---根据map集合中的条件进行删除
    public void deleteUser() {
        Map<String,Object> stringObjectMap=new HashMap<>();
        stringObjectMap.put("name","Jone");
        stringObjectMap.put("age",18);
        int result=userMapper.deleteByMap(stringObjectMap);
        System.out.println(result);
    }

输出如下所示:

 @Test
 //删除功能---根据list集合批量删除
    public void deleteUser() {
       List<Long> longList=new ArrayList<>();
        longList.add(1L);
        longList.add(2L);
        longList.add(3L);
        int result=userMapper.deleteBatchIds(longList);
       System.out.println(result);
    }

输出如下所示:

BaseMapper修改功能:

@Test
//修改功能---根据id进行修改
    public void updateUser() {
       User user=new User();
       //将id为4的用户信息的名字和年龄进行修改
       user.setId(4L);
       user.setName("李四");
       user.setAge(20);
        int result=userMapper.updateById(user);
        System.out.println(result);
    }

输出如下所示:

修改前:

修改后:

BaseMapper查询功能:

 //查询功能---根据id查询
    @Test
    public void selectList(){
      User user=userMapper.selectById(1L);
      System.out.println(user);
    }

输出如下所示:

 //查询功能---根据批量id进行查询
    @Test
    public void selectList(){
     List<Long> longList=new ArrayList<>();
     longList.add(1L);
     longList.add(2L);
     longList.add(3L);
     longList.add(4L);
     List<User> userList=userMapper.selectBatchIds(longList);
     System.out.println(userList);
    }

输出如下所示:

//查询功能---根据map集合中的条件进行查询
   @Test
    public void selectList(){
        Map<String , Object> stringObjectMap=new HashMap<>();
        stringObjectMap.put("name","李萍");
        stringObjectMap.put("age",18);
         List<User> userList=userMapper.selectByMap(stringObjectMap);
         System.out.println(userList);
    }

输出如下所示:

在MybatisPlus环境下使用Mybatis的功能:

第一步:在Mapper接口中编写对应的方法

public interface UserMapper extends BaseMapper<User> {
    Map<String,Object> getUserMap(Long id);
}

第二步:创建User类对应的UserMapper映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mybatisplus.Mapper.UserMapper">
    <select id="getUserMap" resultType="map">
        select * from user where id=#{id}
    </select>
</mapper>

注意:UserMapper映射文件默认放置resources的mapper目录下

原因如下所示:

第三步:编写测试方法

//查询功能---根据id查询
    @Test
    public void selectList(){
         Map<String,Object> UserMap= userMapper.getUserMap(5L);
         System.out.println(UserMap);
    }

输出如下所示:

那么则说明MybatisPlus并不会影响Mybatis的使用,它是在Mybatis的基础上做了增强

通用Service接口:

MybatisPlus通用的Service接口是一个基于MybatisPlus框架的通用Service接口,它提供了一系列通用的数据库操作方法,可以方便地进行数据库的增删改查操作。

UserService:

package com.example.mybatisplus.Service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.mybatisplus.pojo.User;
public interface UserService extends IService<User> {
}

UserServiceImpl:

package com.example.mybatisplus.Service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.mybatisplus.Mapper.UserMapper;
import com.example.mybatisplus.Service.UserService;
import com.example.mybatisplus.pojo.User;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService {
}

通用Service之查询总记录数:

package com.example.mybatisplus.Test;
import com.example.mybatisplus.Service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class MybatisPlusServiceTest {
    @Autowired
    private UserService userService;
    //查询总记录条数
    @Test
    public void getCount(){
     Long count = (long) userService.count();
     System.out.println("总记录数:"+count);
    }
}

通用Service之批量添加功能:

@Test
    public void testInsertMore(){
        List<User> list=new ArrayList<>();
        for(int i=1;i<=10;i++){
            User user=new User();
            user.setName("yyqx"+i);
            user.setAge(20+i);
            list.add(user);
        }
        boolean b=userService.saveBatch(list);
        System.out.println(b);
    }

输出如下所示:

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
Java Spring 容器
Spring系列文章:Spring6集成MyBatis3.5
Spring系列文章:Spring6集成MyBatis3.5
|
7月前
|
SQL 测试技术 数据库
一篇文章带你学会MybatisPlus~(三)
一篇文章带你学会MybatisPlus~
|
6月前
|
XML Java 数据库连接
一篇文章讲明白MyBatis魔法堂:即学即用篇
一篇文章讲明白MyBatis魔法堂:即学即用篇
25 0
|
7月前
|
SQL 缓存 Java
Mybatis学习文章
Mybatis学习文章
|
7月前
|
SQL Java 数据库连接
还在为学MyBatis发愁?史上最全,一篇文章带你学习MyBatis
还在为学MyBatis发愁?史上最全,一篇文章带你学习MyBatis
132 1
|
7月前
|
存储 算法 Java
一篇文章带你学会MybatisPlus~(二)
一篇文章带你学会MybatisPlus~
306 0
|
SQL Java 数据库连接
一般文章让你了解mybatis,以及如今在Java开发的地位!
一般文章让你了解mybatis,以及如今在Java开发的地位!
180 0
|
SQL 关系型数据库 MySQL
Mybatis-Plus(Service CRUD 接口)(+24篇MyBatis-Plus文章)
Mybatis-Plus(Service CRUD 接口)(+24篇MyBatis-Plus文章)
143 0
|
SQL 关系型数据库 MySQL
mybatis-plus代码生成器(+24篇MySql/MyBatis-Plus文章)
mybatis-plus代码生成器(+24篇MySql/MyBatis-Plus文章)
108 0
|
SQL 存储 缓存
Java文章没python文章火?,我反手整理一套MyBatis面试题(建议收藏)(二)
Java文章没python文章火?,我反手整理一套MyBatis面试题(建议收藏)
102 0
Java文章没python文章火?,我反手整理一套MyBatis面试题(建议收藏)(二)