【数据篇】SpringBoot 整合 MyBatis-Plus 增强 MyBatis ,基友搭配,效率翻倍

写在最前

本文在【数据篇】SpringBoot 整合 MyBatis 操作 MySql基础上使用 MyBatis-Plus 增强。

MyBatis-Plus

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

文档地址:https://baomidou.com/pages/24112f/

特性

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 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 操作智能分析阻断,也可自定义拦截规则,预防误操作

SpringBoot 整合 MyBatis-Plus

Demo 地址:mingyue-springboot-mybatis-plus

1.引入依赖


<dependency>
    <groupId>mysqlgroupId>
    <artifactId>mysql-connector-javaartifactId>
    <scope>runtimescope>
dependency>

<dependency>
    <groupId>com.baomidougroupId>
    <artifactId>mybatis-plus-boot-starterartifactId>
    <version>3.5.1version>
dependency>

2.改进实体类

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

/** @author Strive */
@Data
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "用户实体类", description = "用户信息描述类")
@TableName("sys_user")
public class MingYueUser {

  @TableId
  @ApiModelProperty(value = "用户id")
  private Long userId;

  @ApiModelProperty(value = "用户名")
  private String username;
}

3.改进 Mapper 接口

只有简单的 CRUD 可以删除对应的 SysUserMapper.xml,相对复杂的 SQL 还是需要 SysUserMapper.xml

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.csp.mingyue.mybatisPlus.model.MingYueUser;
import org.apache.ibatis.annotations.Mapper;

/**
 * @author Strive
 * @date 2022/4/20 15:25
 * @description
 */
@Mapper
public interface SysUserMapper extends BaseMapper<MingYueUser> {}

4.改进 Service

import com.csp.mingyue.mybatisPlus.mapper.SysUserMapper;
import com.csp.mingyue.mybatisPlus.model.MingYueUser;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

/** @author Strive */
@Service
@RequiredArgsConstructor
public class MingYueUserService {

  private final SysUserMapper sysUserMapper;

  /**
   * 根据用户ID查询用户信息
   *
   * @param userId 用户ID
   * @return 用户信息
   */
  public MingYueUser queryUserById(Long userId) {
    return sysUserMapper.selectById(userId);
  }
}

5.测试接口

访问:http://127.0.0.1:8080/user/2

返回示例:

{
    "userId": 2,
    "username": "Strive"
}

6.配置日志输出

# 配置日志输出 使用默认控制台打印
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

访问:http://127.0.0.1:8080/user/2

日志如下:

Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@53001d7] was not registered for synchronization because synchronization is not active
2022-04-20 16:48:45.835  INFO 13616 --- [nio-8080-exec-1] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2022-04-20 16:48:46.597  INFO 13616 --- [nio-8080-exec-1] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
JDBC Connection [HikariProxyConnection@1977143528 wrapping com.mysql.cj.jdbc.ConnectionImpl@1aa697b8] will not be managed by Spring
==>  Preparing: SELECT user_id,username FROM sys_user WHERE user_id=?
==> Parameters: 1(Long)
<==    Columns: user_id, username
<==        Row: 1, mingyue
<==      Total: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@53001d7]

更多功能使用直接参考官方文档:https://baomidou.com/pages/24112f/

你可能感兴趣的:(Spring,全家桶,spring,boot,mybatis-plus,mybatis)