mybatisPlus入门案例

MyBatis-Plus简介

1. 简介

MyBatis-Plus(简称MP)是一个基于MyBatis的增强工具,旨在简化开发、提高效率。它在MyBatis基础上只做增强不做改变,提供了通用的Mapper和Service,支持单表增删改查、批量操作、逻辑删除、分页等功能,无需编写复杂SQL语句。

2. 核心特性

  • 无侵入:对现有工程无影响,如丝般顺滑。
  • 低损耗:启动自动注入基本CRUD,性能无显著损耗。
  • 强大CRUD:内置通用Mapper和Service,支持条件构造器。
  • Lambda支持:通过Lambda表达式安全编写查询条件。
  • 主键策略:支持4种主键生成策略(含分布式ID生成器Sequence)。
  • ActiveRecord模式:实体类继承Model即可进行CRUD。
  • 代码生成器:快速生成Mapper、Model、Service、Controller层代码。
  • 分页插件:物理分页,支持MySQL、Oracle等多种数据库。
  • 性能分析插件:输出SQL及执行时间,助力优化。
  • 全局拦截插件:智能阻断全表删除/更新,可自定义拦截规则。

3. 支持的数据库

支持所有标准SQL数据库,包括但不限于:

  • MySQL, Oracle, DB2, H2, PostgreSQL, SQLServer
  • 国产数据库:达梦、虚谷、人大金仓、南大通用等

4. 框架结构

MyBatis-Plus
├── 核心模块(core)
├── 代码生成器(generator)
├── 分页插件(pagination)
├── 性能分析插件(performance)
├── 通用Service(service)
└── 扩展支持(extension)

5. 代码与文档地址

入门案例

1. 开发环境

  • IDE:IntelliJ IDEA 2019.2+
  • JDK:JDK8+
  • 构建工具:Maven 3.5.4+
  • MySQL:5.7+
  • Spring Boot:2.6.3
  • MyBatis-Plus:3.5.1

2. 创建数据库及表

-- 创建表
CREATE TABLE user (
    id BIGINT(20) NOT NULL AUTO_INCREMENT,
    name VARCHAR(30) DEFAULT NULL,
    age INT(11) DEFAULT NULL,
    email VARCHAR(50) DEFAULT NULL,
    PRIMARY KEY (id)
);

-- 插入数据
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');

3. 创建Spring Boot工程

3.1 初始化工程

通过Spring Initializr创建工程,勾选以下依赖:

  • Spring Web
  • MyBatis-Plus
  • MySQL Driver
  • Lombok

3.2 引入依赖(Maven)

<dependencies>
    <!-- Spring Boot Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <!-- MyBatis-Plus -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.1</version>
    </dependency>
    
    <!-- MySQL Driver -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    
    <!-- Lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

3.3 安装Lombok插件

在IDEA中安装Lombok插件,确保编译时正确处理注解。

4. 编写代码

4.1 配置application.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8&characterEncoding=utf-8&useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl  # 开启SQL日志

4.2 启动类

@SpringBootApplication
@MapperScan("com.example.mapper")  // 扫描Mapper包
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

4.3 实体类

@Data
@TableName("user")
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

4.4 Mapper接口

public interface UserMapper extends BaseMapper<User> {
}

4.5 测试类

@SpringBootTest
class ApplicationTests {
    @Autowired
    private UserMapper userMapper;

    @Test
    void contextLoads() {
        User user = userMapper.selectById(1L);
        System.out.println(user);
    }
}

5. 注意事项

  1. MySQL驱动版本

    • Spring Boot 2.0及以下:使用com.mysql.jdbc.Driver
    • Spring Boot 2.1及以上:使用com.mysql.cj.jdbc.Driver
  2. 时区问题

    • MySQL 8.0+需在URL中添加serverTimezone=GMT%2B8
  3. 消除IDEA警告

    • 在Mapper接口添加@Repository注解

6. 日志配置

logging:
  level:
    com.example.mapper: debug  # 输出Mapper层SQL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值