MyBatis-Plus

发布 | 2024-09-27 | JAVA,JavaWeb

MyBatis-Plus

MyBatis-Plus 是 MyBatis 的增强工具,可以简化开发过程,提供 CRUD 操作和其他常用功能的实现。

MyBatis-Plus 极大地简化了 MyBatis 的使用,提供了丰富的功能和便利的操作。

引入依赖

pom.xml 中添加 MyBatis-Plus 的依赖:

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

配置 MyBatis-Plus

application.ymlapplication.properties 中进行配置:

mybatis-plus:
  global-config:
    db-config:
      id-type: auto  # 主键策略
  configuration:
    map-underscore-to-camel-case: true  # 下划线转驼峰

实体类

创建实体类时,使用 @TableName 注解指定表名,使用 @TableId 注解指定主键。

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

@TableName("user")
public class User {
    @TableId
    private Long id;
    private String name;
    private Integer age;

    // getters and setters
}

Mapper 接口

创建 Mapper 接口,继承 BaseMapper<T>

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

public interface UserMapper extends BaseMapper<User> {
}

Service 层

创建 Service 层,使用 @Service 注解,并注入 Mapper。

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

@Service
public class UserService extends ServiceImpl<UserMapper, User> {
    // 自定义方法
}

常用操作

对于 CRUD 操作,查询使用 getByIdlist 方法,插入使用 save 方法,更新使用 updateById,删除使用 removeById

条件构造器

使用 QueryWrapperUpdateWrapper 进行条件查询和更新。

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.gt("age", 18);
List<User> users = userService.list(queryWrapper);

分页查询

使用 Page<T>PageHelper 进行分页。

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

Page<User> page = new Page<>(1, 10);  // 第1页,每页10条
Page<User> userPage = userService.page(page);

代码生成器

MyBatis-Plus 提供代码生成器,可以快速生成实体类、Mapper、Service 等。

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;

AutoGenerator generator = new AutoGenerator();

GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setOutputDir("D://code");
globalConfig.setAuthor("author");
generator.setGlobalConfig(globalConfig);

DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/test");
dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("password");
generator.setDataSource(dataSourceConfig);

PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.example");
generator.setPackageInfo(packageConfig);

generator.execute();

性能分析

MyBatis-Plus 支持性能分析,添加配置可以在控制台输出 SQL 语句和执行时间。

mybatis-plus:
  configuration:
    performance-interceptor:
      max-time: 1000  # 超过 1000ms 记录

逻辑删除

使用 @TableLogic 注解实现逻辑删除。

import com.baomidou.mybatisplus.annotation.TableLogic;

public class User {
    @TableId
    private Long id;

    @TableLogic
    private Integer deleted;  // 逻辑删除标志
}

标签
没有标签

© 著作权归作者所有

本文由 趣代码Blog 创作,采用 知识共享署名4.0 国际许可协议进行许可,本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。

评论关闭