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

MybatisPlus的简单应用与常见功能

目录

快速搭建环境

引入依赖

实现接口

常见注解

常见配置

核心功能

自定义SQL

批量新增


快速搭建环境

引入依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3.1</version>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.11</version>
        </dependency>
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
            <version>4.1.0</version>
        </dependency>

实现接口

自定义的service实现MybatisPlus提供的IService接口(泛型是实体类)

自定义的ServiceImpI实现MybatisPlus提供的IServiceImpI接口(泛型是实体类)

自定义的Mapper实现MybatisPlus提供的BaseMapper接口(泛型是实体类)

在在application.yaml中修改jdbc参数为你自己的数据库参数

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/mp?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 123456
logging:
  level:
    com.itheima: debug
  pattern:
    dateformat: HH:mm:ss
mybatis-plus:
  type-aliases-package: com.itheima.mp.domain.po
  mapper-locations: classpath*:mapper/**/*.xml

最后测试,可以成功集成MybatisPlus

常见注解

MybatisPlus是通过反射来推断出表的信息,从而生成SQL的。

  1. MybatisPlus会把PO实体的类名驼峰转下划线作为表名

  2. MybatisPlus会把PO实体的所有变量名驼峰转下划线作为表的字段名,并根据变量类型推断字段类型

  3. MybatisPlus会把名为id的字段作为主键

事实上,我们可以在建表的时候不遵循这些约定,可以通过一些注解来应用。

@TableName:表名注解,标识实体类对应的表,一般在表名和实体类名不相同下使用。

@TableId:主键注解,标识实体类中的主键字段。可以通过主键增长类型。

AUTO:利用数据库的id自增长

INPUT:手动生成id

ASSIGN_ID:雪花算法生成Long类型的全局唯一id,这是默认的ID策略

@TableField:普通字段注解。一般情况下我们并不需要给字段添加@TableField注解,一些特殊情况除外。

  1. 成员变量名与数据库字段名不一致
  2. 成员变量是以isXXX命名,按照JavaBean的规范,MybatisPlus识别字段时会把is去除,这就导致与数据库不符。
  3. 成员变量名与数据库一致,但是与数据库的关键字冲突。使用@TableField注解给字段名添加转义字符:``

常见配置

实体类的别名扫描包,全局id类型

mybatis-plus:
  type-aliases-package: com.itheima.mp.domain.po # 包下是实体类
  global-config:
    db-config:
      id-type: auto # 全局id类型为自增长

MyBatisPlus也支持手写SQL的,而mapper文件的读取地址可以自己配置

mybatis-plus:
  mapper-locations: "classpath*:/mapper/**/*.xml" # Mapper.xml文件地址,当前这个是默认值。

核心功能

MybatisPlus又提供了一套基于Lambda的Wrapper,包含两个:

LambdaQueryWrapper

LambdaUpdateWrapper

LambdaQueryWrapper:适用于需要动态构建查询条件的场景,特别是在查询条件复杂多变的情况下。利用 Lambda 表达式可以有效减少由于手写 SQL 或者条件字段字符串带来的错误风险。

LambdaUpdateWrapper:主要用于执行带有条件的更新操作,特别适合于那些需要根据特定条件修改记录的场合。与传统的更新方法相比,它能提供更强的灵活性和更高的安全性。

    @Test
    void testLambdaQueryWrapper(){
        //1.构建查询条件
        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<User>()
                .select(User::getId,User::getUsername,User::getInfo,User::getBalance)
                .like(User::getUsername,"o")
                .ge(User::getBalance,1000);
        //2.查询
        List<User> users = userMapper.selectList(wrapper);
        users.forEach(System.out::println);
    }

自定义SQL

利用Wrapper生成查询条件,再结合Mapper.xml编写SQL。

批量新增

IService中的批量新增功能使用起来非常方便。

@Test
void testSaveBatch() {
    // 准备10万条数据
    List<User> list = new ArrayList<>(1000);
    long b = System.currentTimeMillis();
    for (int i = 1; i <= 100000; i++) {
        list.add(buildUser(i));
        // 每1000条批量插入一次
        if (i % 1000 == 0) {
            userService.saveBatch(list);
            list.clear();
        }
    }
    long e = System.currentTimeMillis();
    System.out.println("耗时:" + (e - b));
}

MySQL的客户端连接参数中有这样的一个参数:rewriteBatchedStatements。顾名思义,就是重写批处理的statement语句。

修改项目中的application.yml文件,在jdbc的url后面添加参数&rewriteBatchedStatements=true。

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/mp?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: MySQL123

性能将大大提升

相关文章:

  • 自学网络安全(黑客技术)2025年 —三个月学习计划
  • Python在实际工作中的运用-提取Pdf文件内容
  • P10904 [蓝桥杯 2024 省 C] 挖矿
  • Vivado常用的时序约束方法
  • H20半精度推理报错:Floating point exception (core dumped)
  • 基于Flask的造价信息可视化分析系统
  • 2025年03月04日Github流行趋势
  • Opencv 直方图与模板匹配
  • *算法中的数据结构(3)
  • *搜索算法(2)
  • Ollama进行DeepSeek本地部署存在安全风险解决方案,nginx反向代理配置
  • 2025 电商新航道:AI 多模态交互领航,元宇宙商品展示赋能
  • 【第一章、北海渔村】AI写作效果预览 【AI小说+AI人物图】评论区点赞留言 告知工具
  • 微软发布Dragon Copilot,打造医疗行业首款AI语音助手
  • 19.5-STM32接收数据-根据状态控制电机
  • 利用Git和wget批量下载网页数据
  • 【LangChain】对话历史管理
  • Celia智能助手2.0架构演进与性能突破
  • 网络安全中分区分域
  • 18.1 大模型时代的开源与数据协议:合规之路与技术突
  • 网站建设方案 filetype doc/代写稿子的平台
  • 帮别人做设计图的网站/今日国际军事新闻
  • 百度卖货平台/开封网站优化公司
  • 网站模板整站资源/个人博客网页设计
  • 做网站市场报价步登顶/搜索百度下载安装
  • 网站建设术语/国产长尾关键词拘挖掘