当前位置: 首页 > news >正文

【学习笔记】【SpringCloud】MybatisPlus 基础使用

目录

一、使用 MybatisPlus 基本步骤

1. 引入 MybatisPlus 依赖

2. 定义Mapper接口并继承BaseMapper

二、MybatisPlus 常用配置

三、自定义SQL

四、IService 接口

1. 批量新增的效率问题

2. 配置方式

五、插件功能

1. 分页插件


一、使用 MybatisPlus 基本步骤

1. 引入 MybatisPlus 依赖

<!--MybatisPlus-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.3.1</version>
</dependency>

2. 定义Mapper接口并继承BaseMapper

public interface UserMapper extends BaseMapper<User> {
}

二、MybatisPlus 常用配置

MyBatisPlus的配置项继承了MyBatis原生配置和一些自己特有的配置。例如:

mybatis-plus:
  type-aliases-package: com.itheima.mp.domain.po # 别名扫描包
  mapper-locations: "classpath*:/mapper/**/*.xml" # Mapper.xml文件地址,默认值
  configuration:
    map-underscore-to-camel-case: true # 是否开启下划线和驼峰的映射
    cache-enabled: false # 是否开启二级缓存,默认为false
  global-config:
    db-config:
      id-type: assign_id # id为雪花算法生成,默认值
      update-strategy: not_null # 更新策略:只更新非空字段

三、自定义SQL

我们可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,然后自己定义SQL语句中剩下的部分。

四、IService 接口

1. 批量新增的效率问题

在使用 MybatisPlus 批处理方法进行新增、更新、删除操作时。Mysql 驱动可能默认不会优化这些批量语句。也就是说,即使调用了批处理方法,驱动可能还是会将每个SQL单独发送到数据库执行,这样效率不高。比如,插入100条数据,可能需要发送100次插入语句,网络开销大。

可以考虑开启 rewriteBatchedStatements 参数,开启此参数后,JDBC 驱动会将多个独立的 SQL 语句合并为单个高效语句。例如,批量插入 INSERT INTO table (col) VALUES (?) 会被重写为 INSERT INTO table (col) VALUES (?), (?), ...,显著减少网络传输和数据库解析开销。

2. 配置方式

在 JDBC 连接 URL 中添加参数:

jdbc:mysql://localhost:3306/db?rewriteBatchedStatements=true

在mysql 的官方文档中,rewriteBatchedStatements 的默认值是 false

五、插件功能

1. 分页插件

如果使用 MybatisPlus 自带的分页插件,就不用使用其他插件了,比如PageHelper

首先,要在配置类中注册MyBatisPlus的核心插件,同时添加分页插件:

@Configuration
public class MybatisConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        // 1.初始化核心插件
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 2.添加分页插件
        PaginationInnerInterceptor pageInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
        pageInterceptor.setMaxLimit(1000L); // 设置分页上限
        interceptor.addInnerInterceptor(pageInterceptor);
        return interceptor;
    }
}

相关文章:

  • Linux NFS
  • 【用deepseek和chatgpt做算法竞赛】——还得DeepSeek来 -Minimum Cost Trees_5
  • 自学Java-AI结合GUI开发一个石头迷阵的游戏
  • 人工智能丨OCR 的业务场景,实现原理和测试指标
  • HarmonyOS NEXT 全栈开发实战手册(API 12+)
  • 最新本地部署 DeepSeekR1 蒸馏\满血量化版 + WebOpenUI 完整教程(Ubuntu\Linux系统\Ollama)
  • 编译原理基础(1)
  • 4-知识图谱的抽取与构建-4_2实体识别与分类
  • Tesseract OCR使用
  • linux 麒麟安装人大金仓数据库
  • 革新之力:数字科技——重塑未来的超越想象之旅
  • AI基本知识讲解
  • java项目之超市管理系统设计与实现(源码+文档)
  • HTML项目一键打包工具:HTML2EXE 最新版
  • Lab13_ Visible error-based SQL injection
  • pika 支持的redis接口及兼容情况
  • VUE中的组件加载方式
  • 重构谷粒商城07:Git一小时快速起飞指南
  • Go 之 Beego 配置文件
  • Vue.js Vue 测试工具:Vue Test Utils 与 Jest
  • 高端品牌网站建设方案/神马推广登录
  • 网站开发费用怎么做账/搜索引擎营销怎么做
  • pr免费模板网站/营销网络建设
  • 老太太做受网站/百度seo优化服务项目
  • 建设政府网站的重要意义/今日油价92汽油价格调整最新消息
  • wordpress编辑富文/西安seo服务公司排名