Spring Boot 整合Mybatis Plus增删改查+分页查询

一、数据库及数据

Spring Boot 整合Mybatis Plus增删改查+分页查询_第1张图片
Spring Boot 整合Mybatis Plus增删改查+分页查询_第2张图片

二、Spring boot项目创建,及加入mybatis plus依赖

这里我是根据一个maven项目,改成Spring Boot项目,同样可以采用File–>New–>Poject–>Spring Initalizr方法快捷生成一个Spring boot项目
首先,需要一个maven项目,配置Maven仓库的路径,maven项目的创建可以看我上篇文章,下图为我的maven仓库路径配置
Spring Boot 整合Mybatis Plus增删改查+分页查询_第3张图片

配置好maven项目后,进行关键的一步,pom.xml文件的Spring boot依赖配置,并添加 mybatis plus的依赖,以下内容为我的pom.xml文件

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.0.RELEASE</version>
    </parent>
    <groupId>org.example</groupId>
    <artifactId>mybatisPlus2</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.10</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
        </dependency>
        <!--mybatis-plus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>
        <!--mybatis-plus代码生成器依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.2.0</version>
        </dependency>
        <!--引入freemarker,自动生成代码的时候会用到-->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.30</version>
        </dependency>

        <!--工具-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

    </dependencies>



</project>

Spring boot 项目有一个启动类,采用maven 项目改造的Spring boot 项目目前没有这个启动类,接下来,需要我们自己来创建一个启动类
**注意:**启动类名需以Application结尾
在这一步,并不需要添加@MapperScan注解,该注解应指向你mapper类路径
Spring Boot 整合Mybatis Plus增删改查+分页查询_第4张图片

package com.bao;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.mapper")
public class MyApplication {
    public static void main(String [] args){
        SpringApplication.run(MyApplication.class,args);
    }
}

三、连接mysql数据库

到此,一个Spring boot 项目配置成功,接下来需要配置数据库连接
在项目结构的resource文件夹下新建一个application.yml文件,在文件中可以放置数据库的连接配置,mybatis plus相关配置,本章简单的设计一个查询的小项目,就不写mybatis plus的配置了
Spring Boot 整合Mybatis Plus增删改查+分页查询_第5张图片

Spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/java2103
    username: root
    password: x5
四、实体类的创建

配置好数据库后,可以进行实体类的创建
在pom.xml文件中导入了lombok工具,可以省略gett和sett方法
Spring Boot 整合Mybatis Plus增删改查+分页查询_第6张图片

package com.shiti;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@Data
@TableName(value = "user")//对应数据库中的表名
public class User {
    @TableId//对应表中的主键名
    private int yid;
    //对应表中yname的属性,exist:判断数据库中有没有yname的字段
    @TableField(value ="yname",exist = true)//和数据库字段对应成功,结果查询出姓名
    //@TableField(value = "name",exist = false)
    private String yname;//由于上方的@TableField没有对应,查询结果为空
    //private String name;//数据库中无name字段,查询结果显示未空
    private int yage;
    private String sex;
}


五、Mapper类创建及@MapperScan注解的使用

接下来进行,mapper类的创建,在mybatis 项目中,创建该类后,需要创建相应的xml 文件,在其中写sql语句,mybatis plus相较于mybatis功能有显著的提升,在BaseMapper中较简单的方法,省略了一些基础查询,修改等代码
在Spring boot 启动类上添加注解@MapperScan(“com.mapper”),括号中的路径指向Mapper类的路径
Spring Boot 整合Mybatis Plus增删改查+分页查询_第7张图片

package com.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import com.shiti.User;


public interface UserMapper extends BaseMapper<User> {

}

六、测试

至此,所有的基本配置都完成了,需要创建一个测试类,来测试一下mybatis plus增删改查的功能,以下是项目结构图以及详细代码
Spring Boot 整合Mybatis Plus增删改查+分页查询_第8张图片

package com.bao;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mapper.UserMapper;
import com.shiti.User;
import org.junit.Assert;
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.SpringRunner;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RunWith(SpringRunner.class)
@SpringBootTest
public class Ceshi {
  @Resource
    private UserMapper userMapper;

 @Test//查询全部,前提知道 数据库中有几条信息
  public void testSelect(){
    List<User> users=userMapper.selectList(null);
    users.forEach(System.out::println);
    Assert.assertEquals(17,users.size());
  }
  @Test//添加一条
    public void testInsert(){
      User user=new User();
      user.setYname("j");
      user.setSex("nv");
      user.setYage(11);

      int insert=userMapper.insert(user);
      Assert.assertEquals(insert,1);
      List<User> userss=userMapper.selectList(null);
      userss.forEach(System.out::println);
  }
 @Test//修改
  public void testUpdate(){
    QueryWrapper<User> us=new QueryWrapper<>();
    us.like("yname","lina");//模糊查询
   User user=userMapper.selectOne(us);//查询出一条user
   user.setYname("li");//修改该条信息的姓名,将其变为lina

   int i=userMapper.updateById(user);//对该条信息进行更新
   Assert.assertEquals(i,1);
     List<User> users=userMapper.selectList(null);
     users.forEach(System.out::println);
 }
 @Test//删除
  public void testDelete(){//条件删除
   Map<String,Object> map=new HashMap<>();
   map.put("yname","12");//查询姓名为jie的信息
   int x=userMapper.deleteByMap(map);//删除语句,x为删除条数
   //*int xx=userMapper.deleteById(1);//根据主键ID删除一条信息*
 }

  
  }

七、结果
  • 查询结果显示

Spring Boot 整合Mybatis Plus增删改查+分页查询_第9张图片

  • 添加结果显示
    Spring Boot 整合Mybatis Plus增删改查+分页查询_第10张图片
  • 修改结果显示
    Spring Boot 整合Mybatis Plus增删改查+分页查询_第11张图片
  • 删除结果显示
    删除成功
    Spring Boot 整合Mybatis Plus增删改查+分页查询_第12张图片
八、分页查询
  • 建立配置类,使用mybatisplus分页插件

**注意:**MybatisPlusConfig配置类,一定要建在和springboot启动类同一个路径下,否则会出现查询结果为零的情况
Spring Boot 整合Mybatis Plus增删改查+分页查询_第13张图片

package com.bao;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;



@Configuration
public class MybatisPlusConfig {
    @Bean
    public PaginationInterceptor paginationInterceptor(){
        PaginationInterceptor page=new PaginationInterceptor();
        return page;
    }



}

  • 测试类部分代码
@Test
    public void testSelectPage(){
       Page<User> page =new Page<>(3,1);
       userMapper.selectPage(page,null);
       //page.getRecords().forEach(System.out::println);
       System.out.println("当前页数"+page.getCurrent());//当前页数
       System.out.println("总页数"+page.getPages());//获取总页数
       System.out.println("每页个数"+page.getSize());//每页个数
       System.out.println("总信息个数"+page.getTotal());//获取总个数
       System.out.println("是否有下一页"+page.hasNext());//是否有下一页
       System.out.println("是否有上一页"+page.hasPrevious());//是否有上一页
   }
  • 测试类结果显示
    Spring Boot 整合Mybatis Plus增删改查+分页查询_第14张图片
九、自我梳理

1、注意mysql数据库版本问题,pom.xml中依赖的版本尽量选5+的,8+的数据库依赖可能出现Failed to obtain JDBC Connection;nested exception is java.sql.SQLEXception的错误
Spring Boot 整合Mybatis Plus增删改查+分页查询_第15张图片
2.本地maven仓库可能出现加载依赖失败,无法下载的情况,可将本地依赖全部删除,然后通过自动加载从网上重新下载
3.若mysql数据库依赖,存在以下载到本地依赖库,但是无法通过pom.xml加载成功的情况,会报Cannot load driver class:com.mysql.jdbc.Driver错误
解决方法:将External Libraries中的数据库依赖包删除,后重新加载
Spring Boot 整合Mybatis Plus增删改查+分页查询_第16张图片
4.需注意,在配置文件application.yml中,数据库的版本不同,有不同的driver-class-name的书写方式
5+版本为:com.mysql.jdbc.Driver,8+版本为:com.mysql.cj.jdbc.Driver
5.可能出现lombok注解使用无效的情况,可能是因为IDEA插件的问题,解决方法为点击File–>Setting–>Plugins–>搜索lombok–>点击installed
Spring Boot 整合Mybatis Plus增删改查+分页查询_第17张图片

你可能感兴趣的:(spring,boot,mysql,java,mybatis)