MyBatis-Plus学习(一)

时间:2021-07-20
本文章向大家介绍MyBatis-Plus学习(一),主要包括MyBatis-Plus学习(一)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

学习环境:jdk8 + idea + springboot + maven + mysql5.7

特性

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
  • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
  • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
  • 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
  • 内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
  • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

框架结构

快速开始

1. 数据库表创建

创建 tb_user

CREATE TABLE `tb_user` (
	`id` BIGINT(20) NOT NULL auto_increment COMMENT '主键ID',
	`user_name` VARCHAR(20) NOT NULL COMMENT '用户名',
	`password` VARCHAR(20) NOT NULL COMMENT '密码',
	`name` VARCHAR(20) NOT NULL COMMENT '姓名',
	`age` INT(11) NOT NULL COMMENT '年龄',
	`email` VARCHAR(20) NOT NULL COMMENT '邮箱',
	PRIMARY KEY (`id`)
) ENGINE=INNODB auto_increment=1 DEFAULT CHARSET=utf8;

INSERT INTO `tb_user` (`id`,`user_name`,`password`,`name`,`age`,`email`) VALUES (1,'zhangsan','123456','张三',18,'test1@itcast.cn');
INSERT INTO `tb_user` (`id`,`user_name`,`password`,`name`,`age`,`email`) VALUES (2,'lisi','123456','李四',20,'test2@itcast.cn');
INSERT INTO `tb_user` (`id`,`user_name`,`password`,`name`,`age`,`email`) VALUES (3,'wangwu','123456','王五',22,'test3@itcast.cn');
INSERT INTO `tb_user` (`id`,`user_name`,`password`,`name`,`age`,`email`) VALUES (4,'zhaoliu','123456','赵六',24,'test4@itcast.cn');
INSERT INTO `tb_user` (`id`,`user_name`,`password`,`name`,`age`,`email`) VALUES (5,'sunqi','123456','孙七',26,'test5@itcast.cn');

2. 创建工程

创建一个空的 Spring Boot 项目
选择 Spring Initializr ,项目名:springboot-mybatis-plus …,点击 next

展开 Web ,勾选 Spring Web ,点击 Finish

等待项目初始化,创建完成

3. 添加依赖

引入 mybatis-plus-boot-startermysql-connector-javalombokspring-boot-starter-webspring-boot-starter-test 依赖:

<dependencies>
    <!-- mybatis-plus -->
    <dependency>
        <groupid>com.baomidou</groupid>
        <artifactid>mybatis-plus-boot-starter</artifactid>
        <version>3.4.3</version>
    </dependency>

    <!-- mysql -->
    <dependency>
        <groupid>mysql</groupid>
        <artifactid>mysql-connector-java</artifactid>
    </dependency>

    <!-- lombok -->
    <dependency>
        <groupid>org.projectlombok</groupid>
        <artifactid>lombok</artifactid>
    </dependency>

    <!-- web -->
    <dependency>
        <groupid>org.springframework.boot</groupid>
        <artifactid>spring-boot-starter-web</artifactid>
    </dependency>

    <!-- test -->
    <dependency>
        <groupid>org.springframework.boot</groupid>
        <artifactid>spring-boot-starter-test</artifactid>
        <scope>test</scope>
    </dependency>
</dependencies>

4. 配置

application.yml 文件中 添加 mysqlmybatis 相关配置:

# DataSource config
# 连接数据库
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql:/127.0.0.1:3306/mp?useUnicode=true&characterEncoding=utf8&autoReconnet=true&allowMultiQueries=true&useSSL=false
    username: root
    password: 123456

# mybatis config
mybatis:
  configuration:
    # 开启驼峰映射,字段名 --- 变量名:user_name --- userName
    map-underscore-to-camel-case: true

在 Spring Boot 启动类中 添加 @MapperScan 注解,扫描 maper 文件夹:

package com.yif;

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

@SpringBootApplication
@MapperScan("com.yif.mapper")
public class SpringbootMybatisPlusApplication {

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

}

5. 编码

创建实体类 User.java

package com.yif.entity;

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

@Data
@TableName("tb_user")
public class User {
    private Long id;
    private String userName;
    private String password;
    private String name;
    private Integer age;
    private String email;
}

创建 Mapper 类 UserMapper.java

package com.yif.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yif.entity.User;

public interface UserMapper extends BaseMapper<user> {

}

测试

在 test 文件夹中找到 SpringbootMybatisPlusApplicationTests 测试类,添加代码:

package com.yif;

import com.yif.entity.User;
import com.yif.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 SpringbootMybatisPlusApplicationTests {

    @Autowired(required = false)
    private UserMapper userMapper;

    @Test
    void Test(){
        System.out.println("SpringbootMybatisPlusApplicationTests.Test");
        List<user> users = userMapper.selectList(null);
        users.forEach(System.out::println);
    }

}

运行输出:

原文地址:https://www.cnblogs.com/wfengw/p/14993094.html