摘要:
嗨,大家好,我是默语 !今天我们要开启一个新的系列——《MyBatis-Plus保姆级教程》。作为一名Java开发者,如果你还在为繁琐的XML配置和重复的CRUD代码而烦恼,那么MyBatis-Plus(简称MP)绝对是你的救星! 这篇文章是系列的第一篇,我会带你从零开始,深入理解MP的核心定位与技术优势,手把手教你如何搭建一个标准的开发环境,并完整演示在Spring Boot项目中集成MyBatis-Plus的全流程。我们还会实战讲解数据库连接池与数据源的配置。准备好了吗?让我们一起告别CRUD的重复劳动,拥抱更高效、更优雅的持久层开发方式!
博主 默语带您 Go to New World.
✍ 个人主页—— 默语 的博客 优秀内容
《java 面试题大全》
《java 专栏》
《idea技术专区》
《spring boot 技术专区》
《MyBatis从入门到精通》
《23种设计模式》
《经典算法学习》
《spring 学习》
《MYSQL从入门到精通》数据库是开发者必会基础之一~
惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕
吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄之助。苟未尽善尽美,敬请批评指正,以资改进。!⌨
默语是谁?
大家好,我是 默语,别名默语博主,擅长的技术领域包括Java、运维和人工智能。我的技术背景扎实,涵盖了从后端开发到前端框架的各个方面,特别是在Java 性能优化、多线程编程、算法优化等领域有深厚造诣。
目前,我活跃在CSDN、掘金、阿里云和 51CTO等平台,全网拥有超过15万的粉丝,总阅读量超过1400 万。统一 IP 名称为 默语 或者 默语博主。我是 CSDN 博客专家、阿里云专家博主和掘金博客专家,曾获博客专家、优秀社区主理人等多项荣誉,并在 2023 年度博客之星评选中名列前 50。我还是 Java 高级工程师、自媒体博主,北京城市开发者社区的主理人,拥有丰富的项目开发经验和产品设计能力。希望通过我的分享,帮助大家更好地了解和使用各类技术产品,在不断的学习过程中,可以帮助到更多的人,结交更多的朋友.
我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。
默语:您的前沿技术领航员
大家好,我是默语!
全网搜索“默语”,即可纵览我在各大平台的知识足迹。公众号“默语摸鱼”,每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。
微信端添加好友“Solitudemind”,与我直接交流,不管是项目瓶颈的求助,还是行业趋势的探讨,随时畅所欲言。
快来加入技术社区,一起挖掘技术的无限潜能,携手迈向数字化新征程!
搜索词条: MyBatis-Plus, MyBatis-Plus教程, Spring Boot集成MyBatis-Plus, Java ORM框架, MyBatis-Plus入门, MyBatis-Plus环境搭建, 数据源配置
在现代Java Web开发中,数据持久层框架是不可或缺的一环。从原生的JDBC到Hibernate、MyBatis,我们一直在追求更高的开发效率和更优雅的代码实现。MyBatis以其灵活性和对SQL的强大控制力,赢得了广大开发者的青睐。然而,它在处理简单的CRUD(增删改查)操作时,仍需要我们手动编写SQL语句和映射配置,这在业务复杂的项目中无疑增加了许多重复性工作。
为了解决这个问题,MyBatis-Plus 横空出世! 它并非要取代MyBatis,而是作为MyBatis的“增强工具包”,在完全兼容MyBatis所有功能的基础上,只做增强不做改变,旨在简化开发、提高效率。本系列文章将带你系统地学习MyBatis-Plus,而今天,作为开篇之作,我们将聚焦于打好基础——全面认识MP并搭建起我们的第一个MP应用。
MyBatis-Plus (简称MP) 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。它的slogan是“为简化而生”,这一点在它的功能设计中体现得淋漓尽致。
你可以把它想象成给MyBatis加装了一个“超级涡轮增压”。你原来在MyBatis中能做的一切,现在依然能做;而你原来觉得繁琐的事情,MP帮你一键搞定。
特性 | MyBatis | JPA (如Hibernate) | MyBatis-Plus |
---|---|---|---|
定位 | 半自动ORM框架 | 全自动ORM框架 | MyBatis的增强工具 |
SQL控制 | 需手动编写所有SQL,控制力强 | 自动生成SQL,对SQL干预能力弱 | 通用CRUD自动生成,复杂SQL可手写 |
开发效率 | 相对较低,有重复工作 | 极高,专注业务逻辑 | 极高,兼顾灵活性与效率 |
学习曲线 | 较平缓 | 较陡峭,概念多 | 非常平缓,开箱即用 |
侵入性 | 较低 | 较高,实体类需遵循JPA规范 | 无侵入性,仅增强Mapper |
MP的核心优势可以总结为以下几点:
工欲善其事,必先利其器。一个稳定、标准的开发环境是高效学习和工作的前提。
JDK是Java开发的核心。推荐使用长期支持(LTS)版本,如 JDK 8 或 JDK 17。
安装: 前往 Oracle官网 或 AdoptOpenJDK 等镜像站下载对应操作系统的安装包进行安装。
验证 : 安装完成后,打开命令行工具(CMD或Terminal),输入以下命令:
java -version
javac -version
如果能正确显示版本号,则说明安装成功。✅
Maven是Java项目管理和构建的利器,我们用它来管理项目的依赖。
安装: 前往 Maven官网 下载二进制包,解压到本地目录即可。
配置: 配置 MAVEN_HOME环境变量,并将其 bin 目录添加到系统的 PATH
变量中。可以修改conf/settings.xml文件配置国内镜像源(如阿里云)以加快依赖下载速度。
验证: 打开新的命令行窗口,输入:
mvn -v
看到Maven版本信息即表示配置成功。✅
一款优秀的IDE能极大提升我们的编码幸福感。强烈推荐使用 IntelliJ IDEA。
安装: 前往 JetBrains官网 下载社区版(免费)或旗舰版(付费)进行安装。
配置: IDEA会自动识别已安装的JDK和Maven。你可以在
File -> Settings -> Build, Execution, Deployment -> Build Tools -> Maven
中检查并确认Maven的配置是否正确。
现在,让我们进入实战环节,看看如何在一个全新的Spring Boot项目中集成MyBatis-Plus。
打开IntelliJ IDEA,选择 File -> New -> Project
,使用 Spring Initializr 创建项目。
Project: Maven
Language: Java
Group: com.example
Artifact: mybatis-plus-demo
JDK: 选择你安装的JDK 17或8
Dependencies:
Spring Web: 用于构建Web应用,提供Controller。
MyBatis-Plus: 核心依赖。
MySQL Driver: 或者你使用的其他数据库驱动。
点击 “Create”,等待项目初始化完成。
Spring Initializr会自动在pom.xml
中为我们添加好依赖。核心依赖如下:
com.baomidou
mybatis-plus-boot-starter
3.5.7
org.springframework.boot
spring-boot-starter-web
com.mysql
mysql-connector-j
runtime
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
提示: Lombok可以通过注解(如
@Data
,@TableName
)极大地简化JavaBean的编写,是MP的好搭档。
在Spring Boot的启动类上,添加 @MapperScan
注解,告诉MP去哪里扫描我们的Mapper接口。
// MybatisPlusDemoApplication.java
package com.example.mybatisplusdemo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.example.mybatisplusdemo.mapper") // 扫描Mapper接口所在的包
public class MybatisPlusDemoApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisPlusDemoApplication.class, args);
System.out.println(" 项目启动成功!");
}
}
我们创建一个User
实体类,对应数据库中的user
表。
// entity/User.java
package com.example.mybatisplusdemo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data // Lombok注解,自动生成getter/setter/toString等方法
@TableName("user") // 指定实体类对应的数据库表名
public class User {
@TableId(type = IdType.AUTO) // 声明主键,并设置为主键自增
private Long id;
private String name;
private Integer age;
private String email;
}
创建UserMapper
接口,它需要继承 BaseMapper
。BaseMapper
中已经包含了大量的通用CRUD方法。
// mapper/UserMapper.java
package com.example.mybatisplusdemo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.mybatisplusdemo.entity.User;
import org.springframework.stereotype.Repository;
@Repository // 建议加上此注解,交由Spring管理
public interface UserMapper extends BaseMapper {
// 继承了BaseMapper后,就拥有了基本的CRUD能力
// 如果有特殊的SQL需求,可以在这里自定义方法并编写XML
}
就这样,一个功能完备的DAO层就创建好了,是不是超级简单!
最后一步,我们需要告诉Spring Boot如何连接到我们的数据库。这通常在application.yml
或application.properties
文件中配置。推荐使用.yml
格式,因为它的层级结构更清晰。
application.yml
在src/main/resources
目录下,创建或修改application.yml
文件。
# application.yml
spring:
datasource:
# 默认使用 HikariCP 连接池,无需额外配置
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
# 请修改为你的数据库地址、用户名和密码
url: jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: your_username
password: your_password
hikari:
# 连接池额外配置
connection-timeout: 30000 # 连接超时时间:30秒
maximum-pool-size: 10 # 最大连接数
minimum-idle: 5 # 最小空闲连接数
idle-timeout: 600000 # 空闲连接存活时间:10分钟
mybatis-plus:
# 配置MyBatis-Plus的日志,方便在控制台看到执行的SQL
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 配置Mapper.xml文件的位置 (如果有自定义SQL)
mapper-locations: classpath:/mapper/*.xml
# 配置实体类别名,方便在XML中使用
type-aliases-package: com.example.mybatisplusdemo.entity
⚠️注意: Spring Boot 2.0及以上版本默认使用高性能的 HikariCP 数据库连接池。你看到的
spring.datasource.hikari.*
就是对它的配置。请务必将your_database
,your_username
,your_password
替换成你自己的数据库信息。
万事俱备,只欠东风。我们编写一个简单的单元测试来验证整个流程是否通畅。
在src/test
目录下,找到MybatisPlusDemoApplicationTests.java
文件,编写测试代码:
// MybatisPlusDemoApplicationTests.java
package com.example.mybatisplusdemo;
import com.example.mybatisplusdemo.entity.User;
import com.example.mybatisplusdemo.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertNotNull;
@SpringBootTest
class MybatisPlusDemoApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
void contextLoads() {
assertNotNull(userMapper, "UserMapper is null!");
System.out.println("UserMapper注入成功!✅");
}
@Test
void testSelect() {
System.out.println("----- 开始测试 selectList 方法 ------");
// 调用BaseMapper中的方法,参数为null表示查询所有
List userList = userMapper.selectList(null);
// 断言查询结果不为空
assertNotNull(userList);
userList.forEach(System.out::println);
System.out.println("----- 测试结束 ------");
}
}
运行testSelect
测试方法,如果你的数据库中有数据,控制台将会打印出用户信息以及MP执行的SQL语句。这标志着你的第一个MyBatis-Plus应用已经成功运行起来了!
恭喜你!完成了MyBatis-Plus学习的第一步。回顾一下,今天我们一起学习了:
MP的核心定位:它是MyBatis的增强工具,旨在简化开发,提高效率,且无侵入性。
环境搭建:标准化了JDK、Maven、IDE的配置流程,为后续开发打下坚实基础。
Spring Boot集成:我们从零开始,一步步在Spring Boot项目中集成了MyBatis-Plus,包括添加依赖、配置扫描、创建实体和Mapper。
数据源配置 :学习了如何在application.yml中配置数据库连接信息和连接池参数。
通过今天的学习,你不仅掌握了理论知识,更重要的是亲手搭建并验证了一个可运行的MP项目。这为你后续深入学习条件构造器、代码生成器、分页插件等高级功能铺平了道路。希望这篇文章能让你感受到MyBatis-Plus的魅力,告别繁琐,拥抱高效!继续关注本系列,我们下一章再见!
如对本文内容有任何疑问、建议或意见,请联系作者,作者将尽力回复并改进;( 联系微信:Solitudemind )
点击下方名片,加入 IT 技术核心学习团队。一起探索科技的未来,共同成长。
为了让您拥有更好的交互体验,特将这行文字设置为可点击样式:点击下方名片,加入 IT
技术核心学习团队。一起探索科技的未来,共同成长。