mybatis-plus 快速开始示例

348 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第20天,点击查看活动详情

前言

MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。关于mybatis plus的具体说明可以参考官网。

下面搭建学习mybatis的开发环境,以及简单演示mybais的快速开始。

环境搭建

环境介绍

JDK8、Maven、Idea、mybatis-plus、spring boot、h2

创建父工程

创建pom工程。为了后边继续测试mybati-plus的其他功能特性,所以创建的是父子工程。父工程名称xinxin-mybatis-plus-example。通过spring初始化器Spring Initializer创建。

image.png 点击next下一步,选择Spring Boot的版本,点击finish完成。

修改pom.xml文件

  • 添加<packaging>pom</packaging>。标记是一个pom工程。

  • 将的标签用包裹

  • 将版本号提取到标签中

  • 添加lombok依赖,以后项目用到的公共依赖都可以添加到父工程中,将版本号提取出来,子项目需要依赖该包的时候,可以只添加groupartifactId两个标签即可。版本号统一由父工程管理。

<?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>
    <modules>
        <module>xinxin-mybaits-plus-example-quickstart</module>
    </modules>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.8</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    
    <groupId>com.xinxin.mybatis.plus.example</groupId>
    <artifactId>xinxin-mybatis-plus-example</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>xinxin-mybatis-plus-example</name>
    <description>xinxin-mybatis-plus-example</description>

    <properties>
        <java.version>1.8</java.version>
        <mybatisplus.version>3.5.2</mybatisplus.version>
        <lombok.version>1.18.20</lombok.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>

            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatisplus.version}</version>
            </dependency>

            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

创建子工程

创建mybatis plus示例的子工程xinxin-mybatis-plus-example-quickstart

在父工程xinxin-mybatis-plus-example-quickstart中创建module类型的模块,直接用maven构建器创建即可。

子工程添加依赖

spring Boot web依赖,spring boot test依赖,mybatis plus依赖,内存数据库h2依赖,lombok依赖。

<?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">
    <parent>
        <artifactId>xinxin-mybatis-plus-example</artifactId>
        <groupId>com.xinxin.mybatis.plus.example</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>xinxin-mybaits-plus-example-quickstart</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>
</project>

创建实体类

@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

创建mapper接口

该mapper接口继承了BaseMapper,BaseMapper提供了基本的增删改查功能。

package com.xinxin.mybatis.plus.example.quickstart.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xinxin.mybatis.plus.example.quickstart.entity.User;

public interface UserMapper extends BaseMapper<User> {

}

创建启动类

启动了上添加了mapper的扫描路径。

package com.xinxin.mybatis.plus.example.quickstart;

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

@SpringBootApplication
@MapperScan("com.xinxin.mybatis.plus.example.quickstart.mapper")
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

添加配置文件

主要是配置h2的数据库连接信息。h2是一个内存数据库。

spring:
  datasource:
    driver-class-name: org.h2.Driver
#    schema: classpath:db/schema-h2.sql # 过时了
#    data: classpath:db/data-h2.sql # 过时了
    url: jdbc:h2:mem:test
    username: root
    password: test
  sql:
    init:
    	# 脚本路径 建表语句
      schema-locations: classpath:db/schema-h2.sql 
      # 脚本路径 添加数据
      data-locations: classpath:db/data-h2.sql

添加h2数据库脚本

脚本可以放在/src/main/resources/db目录下,也可以放在/src/test/resources/db目录下。执行测试类的时候都可以成功。

  • schema-h2.sql
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)
);
  • data-h2.sql
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)
);

编写测试类

package com.xinxin.mybatis.plus.example.quickstart;

import com.xinxin.mybatis.plus.example.quickstart.entity.User;
import com.xinxin.mybatis.plus.example.quickstart.mapper.UserMapper;
import org.junit.jupiter.api.Assertions;
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 QuickStartTest {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void testSelect() {
        System.out.println(("----- selectAll method test ------"));
        List<User> userList = userMapper.selectList(null);
        Assertions.assertEquals(5, userList.size());
        userList.forEach(System.out::println);
    }

}

完整目录结构

image.png

执行测试类

查询出所有的数据。

image.png

以上是mybatis plus的一个快速开始的例子,后面根据这个工程学习mybatis plus的各种功能。mybatis plus的源码和测试样例很值得学习,测试样例代码很规范。我们一起加油吧!!!