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

SpringBoot 集成 MyBatis-Plus 的使用指南

环境准备

确保开发环境已安装 JDK 1.8+、Maven 3.0+ 或 Gradle,并创建一个 SpringBoot 项目。在 pom.xml 中添加以下依赖:

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope>
</dependency>

配置数据源

application.ymlapplication.properties 中配置数据库连接信息:

spring:datasource:url: jdbc:mysql://localhost:3306/test_db?useSSL=falseusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver

实体类映射

创建实体类并使用 MyBatis-Plus 注解与数据库表映射:

@Data
@TableName("user") // 指定表名
public class User {@TableId(type = IdType.AUTO) // 主键自增private Long id;private String name;private Integer age;@TableField("email") // 字段名映射private String email;
}

Mapper 接口

继承 BaseMapper 接口,无需编写 XML 文件即可获得基础 CRUD 方法:

public interface UserMapper extends BaseMapper<User> {// 可自定义扩展方法
}

服务层调用

通过 Service 层调用 Mapper 方法:

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {// 示例:查询所有用户public List<User> listUsers() {return baseMapper.selectList(null);}
}

条件构造器

使用 QueryWrapperLambdaQueryWrapper 构建复杂查询:

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.like("name", "Tom").gt("age", 18);
List<User> users = userMapper.selectList(wrapper);

分页查询

配置分页插件后,调用分页方法:

@Configuration
public class MyBatisPlusConfig {@Beanpublic MybatisPlusInterceptor paginationInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor());return interceptor;}
}// 使用示例
Page<User> page = new Page<>(1, 10);
Page<User> result = userMapper.selectPage(page, null);

自动填充

通过 @TableField 实现字段自动填充(如创建时间、更新时间):

@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;

逻辑删除

配置逻辑删除字段(需在表中添加 deleted 字段):

mybatis-plus:global-config:db-config:logic-delete-field: deletedlogic-delete-value: 1logic-not-delete-value: 0

代码生成器

使用 MyBatis-Plus 的代码生成器快速生成模板代码:

FastAutoGenerator.create("jdbc:mysql://localhost:3306/test_db", "root", "123456").globalConfig(builder -> builder.outputDir("src/main/java")).packageConfig(builder -> builder.parent("com.example")).strategyConfig(builder -> builder.addInclude("user")).execute();

注意事项
  • 实体类需添加 @Data 注解(Lombok)或手动生成 getter/setter。
  • 主键策略需根据实际需求选择(如 IdType.AUTOIdType.UUID)。
  • 复杂 SQL 仍可通过 XML 或注解方式实现。
http://www.xdnf.cn/news/20008.html

相关文章:

  • 学习PaddlePaddle--环境配置-Windows 11 + RTX 4060
  • 优质技术博客分享(第1期)
  • Beautiful.ai:AI辅助PPT工具高效搞定排版,告别熬夜做汇报烦恼
  • maven settings.xml文件的各个模块、含义以及它们之间的联系
  • 阿瓦隆 A1146 Pro 63T:性能与设计详解,探索区块链挖矿新高度
  • 【网工基础】20+常用网络协议介绍
  • 水下管道巡检机器人结构设cad+三维图+设计说明书
  • 2508C++,skia动画
  • 【iOS】对象复制与属性关键字
  • 同步安卓手机的照片到NAS的方案(完美)
  • 人工智能学习:鸢尾花数据获取
  • qwen-code 功能分析报告
  • 软件安装教程(四):在 Windows 上安装与配置 MATLAB(超详细)
  • 【2025企业建站推荐指南】深度解析十大顶尖网站建设公司:从品牌设计到技术落地的全维度解决方案
  • 01_配置版本
  • BERT家族进化史:从BERT到LLaMA,每一次飞跃都源于对“学习”的更深理解
  • 【面试题】生成式搜索能否保证top-1的准确性?
  • MySQL中CASE语法规则的详细解析及扩展示例
  • Spring Cloud Alibaba快速入门01
  • 去中心化投票系统开发教程
  • Java 双亲委派机制解析和破坏双亲委派的方式
  • sealos部署k8s
  • 华为校招实习留学生机试全攻略:真题目录+算法分类+在线OJ+备考策略
  • 如何将两个网段互相打通
  • Java场景题面试合集
  • 「数据获取」中国科技统计年鉴(1991-2024)Excel
  • 江协科技STM32学习笔记补充之004
  • ETL VS ELT企业应该怎么选择数据集成方式
  • 前缀和和差分思路理解以及典题题解
  • Java面试宝典:Redis的设计、实现