Teng's blog Teng's blog
首页
Java
H5前端
GitHub (opens new window)
首页
Java
H5前端
GitHub (opens new window)
  • 初步使用
    • 介绍
    • 准备工作
      • 创建数据库
      • 创建表
      • 导入数据
      • 修改Java编译器
      • 修改项目编码配置
      • 创建项目
      • 修改maven 配置
      • 修改pom文件
      • 添加Mybatis Plus等依赖
      • 安装Lombok插件
    • 简单使用
      • 配置数据库
      • 启动类添加@MapperScan注解
      • 添加实体
      • 添加Mapper
      • 编写测试类
      • 查看sql输出日志
  • 主键策略
  • 自动填充
  • 乐观锁
  • 基本查询
  • 删除操作
  • 使用 Wrapper 查询
  • Framework-MybatisPlus
Shetengteng
2021-11-24

初步使用

提示

示例代码-github (opens new window)

# 介绍

  • mybatis增强工具,只做增强不做改变
  • 提高开发效率
  • 通过简单配置实现CRUD操作
  • 有热加载,代码生成,分页,性能分析等功能
  • 官网 https://mp.baomidou.com/

# 准备工作

  • 需要搭建mysql服务
  • 当前使用的 idea 版本2021.1.2

# 创建数据库

  • 数据库名称:demo_mybatis_plus
CREATE DATABASE demo_mybatis_plus;
1

# 创建表

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)
);
1
2
3
4
5
6
7
8

# 导入数据

INSERT INTO user (id, name, age, email)
VALUES (1, 'Jone', 18, 'test1@baomidou.com'),
       (2, 'Jack', 20, 'test2@baomidou.com'),
       (3, 'Tom', 28, 'test3@baomidou.com'),
       (4, 'Sandy', 21, 'test4@baomidou.com'),
       (5, 'Billie', 24, 'test5@baomidou.com');
1
2
3
4
5
6

# 修改Java编译器

java

# 修改项目编码配置

  • 点击File > Settings 进入

file encoding

# 创建项目

  • 点击File > New > Project

image-20211124152658670

create project

# 修改maven 配置

  • 点击File > Settings 更改maven仓库配置为指定目录

maven

# 修改pom文件

  • 本项目使用spring-boot版本是 2.2.1.RELEASE
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.1.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
1
2
3
4
5
6

# 添加Mybatis Plus等依赖

  • 注意:引入 MyBatis-Plus 之后不要再次引入 MyBatis,避免因版本差异导致的问题
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </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>
    <!--mybatis-plus-->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.3.1</version>
    </dependency>
    <!--mysql依赖-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <!--lombok用来简化实体类-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

# 安装Lombok插件

lombok

# 简单使用

# 配置数据库

  • 修改application.properties中的数据库相关配置
  • spring2.0版本,内置jdbc.0驱动
#mysql数据库连接
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/demo_mybatis_plus?characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
1
2
3
4
5
  • spring2.1以上版本,内置jdbc8.0驱动
    • 当前项目使用此配置
    • driver-class使用的是com.mysql.cj.jdbc.Driver,否则运行测试用例时有 WARN 信息
    • url添加时区,否则会有异常 java.sql.SQLException: The server time zone value xx is unrecognized or represents more
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/demo_mybatis_plus?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456
1
2
3
4

# 启动类添加@MapperScan注解

  • 创建mapper包,然后添加@MapperScan注解进行扫描
package com.stt.demo.mybatisplus;

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

@SpringBootApplication
@MapperScan("com.stt.demo.mybatisplus.mapper")
public class DemoMybatisPlusApplication {

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

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 添加实体

  • 创建Entity包,并添加User实体,使用@Data注解,省略getter setter方法
  • 注意User实体和user表字段要一致
package com.stt.demo.mybatisplus.entity;

import lombok.Data;

@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}
1
2
3
4
5
6
7
8
9
10
11
  • 查看编译结果可以看到生成的getxxx setxxx方法

# 添加Mapper

  • 注意 IDEA在 userMapper 处报错,由于类是动态创建的,找不到注入的对象,但程序可以正确的执行,为了避免报错,在 dao 层接口上添加 @Repository注解
package com.stt.demo.mybatisplus.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.stt.demo.mybatisplus.entity.User;
import org.springframework.stereotype.Repository;

@Repository
public interface UserMapper extends BaseMapper<User> {
}
1
2
3
4
5
6
7
8
9
  • BaseMapper实现了很多通用的CRUD方法,注意观察

# 编写测试类

package com.stt.demo.mybatisplus;

import com.stt.demo.mybatisplus.entity.User;
import com.stt.demo.mybatisplus.mapper.UserMapper;
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
class DemoMybatisPlusApplicationTests {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void testFindAll(){
        List<User> users = userMapper.selectList(null);
        System.out.println(users);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  • 注意查看控制台输出

# 查看sql输出日志

  • 想要查看sql的详细执行情况,需要开启配置
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
1
  • 如刚才执行的结果有如下细节
JDBC Connection [HikariProxyConnection@1714539364 wrapping com.mysql.cj.jdbc.ConnectionImpl@19962194] will not be managed by Spring
==>  Preparing: SELECT id,name,age,email FROM user 
==> Parameters: 
&lt;==    Columns: id, name, age, email
&lt;==        Row: 1, Jone, 18, test1@baomidou.com
&lt;==        Row: 2, Jack, 20, test2@baomidou.com
&lt;==        Row: 3, Tom, 28, test3@baomidou.com
&lt;==        Row: 4, Sandy, 21, test4@baomidou.com
&lt;==        Row: 5, Billie, 24, test5@baomidou.com
&lt;==      Total: 5
1
2
3
4
5
6
7
8
9
10
Last Updated: 2022/01/16, 11:29:51
主键策略

主键策略→

Theme by Vdoing | Copyright © 2021-2022 Shetengteng | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式