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

MyBatis-Plus极速开发指南

MyBatis-Plus简介

MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,简化开发,提高效率。它提供了以下主要特性:

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,少量配置即可实现大部分 CRUD 操作
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件
  • 支持主键自动生成:支持多达 4 种主键策略
  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作

项目搭建

创建 SpringBoot 项目

在 pom.xml 中添加必要依赖:

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

配置数据源

在 application.yml 中配置数据库连接:

server:port: 8080
spring:datasource:url: jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf-8&useSSL=falsedriver-class-name: com.mysql.cj.jdbc.Drivertype: com.zaxxer.hikari.HikariDataSourceusername: rootpassword: 123456

核心功能演示

实体类定义

使用 Lombok 简化代码:

@Data
public class User {private Integer id;private String name;private Integer age;private String email;public User() {}public User(Integer id, String name, Integer age, String email) {this.id = id;this.name = name;this.age = age;this.email = email;}
}

Mapper 接口

只需继承 BaseMapper 即可获得丰富的 CRUD 方法:

@Repository
public interface UserMapper extends BaseMapper<User> {// 无需编写任何方法,即可获得完整CRUD功能
}

基础 CRUD 操作

@SpringBootTest
public class MyBatisplusTest extends AbstractTestNGSpringContextTests {@Autowiredprivate UserMapper userMapper;// 查询所有用户@Testpublic void testSelectList() {userMapper.selectList(null).forEach(System.out::println);}// 插入用户@Testpublic void testInsert() {User user = new User(null, "张三", 23, "zhangsan@qcby.com");int result = userMapper.insert(user);System.out.println("受影响行数:" + result);System.out.println("id自动获取:" + user.getId());}
}

MyBatis-Plus 特性详解

主键生成策略

MyBatis-Plus 支持多种主键生成策略:

  • AUTO:数据库 ID 自增
  • NONE:无状态,该类型为未设置主键类型
  • INPUT:用户输入 ID
  • ASSIGN_ID:分配 ID
  • ASSIGN_UUID:分配 UUID

条件构造器

MyBatis-Plus 提供了强大的条件构造器 QueryWrapper 和LambdaQueryWrapper:

// 使用QueryWrapper
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "张").lt("age", 30);
List<User> users = userMapper.selectList(queryWrapper);// 使用LambdaQueryWrapper(推荐)
LambdaQueryWrapper<User> lambdaQuery = Wrappers.lambdaQuery();
lambdaQuery.like(User::getName, "张").lt(User::getAge, 30);
List<User> users = userMapper.selectList(lambdaQuery);

分页功能

添加分页插件配置

@Configuration
public class MyBatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;}
}

使用分页查询

@Test
public void testPage() {Page<User> page = new Page<>(1, 5); // 当前页,每页大小IPage<User> userPage = userMapper.selectPage(page, null);System.out.println("总页数:" + userPage.getPages());System.out.println("总记录数:" + userPage.getTotal());userPage.getRecords().forEach(System.out::println);
}
http://www.xdnf.cn/news/16426.html

相关文章:

  • Ⅹ—6.计算机二级综合题11---14套
  • Spring 生态创新应用:现代架构与前沿技术实践
  • 2025年-ClickHouse 高性能实时分析数据库(大纲版)
  • GaussDB 数据库架构师修炼(九) 逻辑备份实操
  • 学习笔记《区块链技术与应用》第二天 共识机制
  • ESP32学习笔记_Peripherals(4)——MCPWM基础使用
  • cha的操作
  • LP-MSPM0G3507学习--11ADC之二双通道高速DMA采样
  • 人工智能——插值方法、边缘填充、图像矫正、图像掩膜、ROI切割、图像添加水印、图像噪点消除
  • 九联UNT413AS_晶晨S905L3S芯片_2+8G_安卓9.0_线刷固件包
  • 蓝光中的愧疚
  • MySQL索引背后的B+树奥秘
  • Power Compiler:漏电功耗、内部功耗、切换功耗及其计算方式(NLPM)
  • 网络安全-机遇与挑战
  • 【内网穿透】使用FRP实现内网与公网Linux/Ubuntu服务器穿透项目部署多项目穿透方案
  • 在幸狐RV1106板子上用gcc14.2本地编译安装ssh客户端/服务器、vim编辑器、sl和vsftpd服务器
  • Apache Ranger 权限管理
  • 【优选算法】链表
  • 局域网 IP地址
  • 卡尔曼滤波器噪声方差设置对性能影响的仿真研究
  • 亚马逊广告策略:如何平衡大词和长尾词的效果?
  • JAVA_FIFTEEN_异常
  • 轮盘赌算法
  • CMake进阶: 检查函数/符号存在性、检查类型/关键字/表达式有效性和检查编译器特性
  • LeetCode 127:单词接龙
  • 中国开源Qwen3 Coder与Kimi K2哪个最适合编程
  • React性能优化终极指南:memo、useCallback、useMemo全解析
  • 【氮化镓】GaN取代GaAs作为空间激光无线能量传输光伏转换器材料
  • k8s下springboot-admin 监控服务部署,客户端接入
  • c++文件操作详解