IDEA中创建springboot+MyBatis项目

一、什么是MyBatis

MyBatis 是一款优秀的持久层框架,前身是 iBatis,它消除了几乎所有的 JDBC 代码以及参数的手工设置和结果集的检索过程。MyBatis 通过 XML 或注解的方式将 SQL 语句与 Java 代码解耦,支持自定义 SQL、存储过程以及高级映射,是目前 Java 开发中最主流的持久层框架之一。

核心优势:

  1. SQL 完全可控,灵活度高

    SQL 写在 XML/注解中,可直接写原生 SQL,方便优化和处理复杂查询。

  2. 上手简单,映射直观

    结果映射配置简单,不用学习复杂 ORM 规则,对新手友好。

  3. 轻量无侵入

    不依赖容器,不强制业务代码继承/实现特定接口,和项目架构耦合度低。

  4. 性能可控,适合优化

    能直接优化 SQL,搭配一级/二级缓存,适合性能敏感的业务场景。

  5. 生态成熟,社区完善

    国内广泛使用,问题解决方案多,和 Spring Boot 集成方便。

二、创建springboot+MyBatis(两种方式)

  1. 方式一:创建新项目的情况

此时pom.xml中就有了对应的依赖:

  1. 方式二:在已有项目中,添加依赖
xml 复制代码
<!-- MyBatis 核心依赖 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.13</version>
</dependency>
<!-- MySQL 驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
    <scope>runtime</scope>
</dependency>

三、Spring Boot 配置文件

Spring Boot 配置文件有以下三种:

  1. application.properties
  2. application.yaml
  3. application.yml(是 yaml 的简写)

它们都是 Spring Boot 的配置文件,作用完全一样,都是用来配置项目的(比如数据库连接、端口号、MyBatis 设置等),只是格式不同:

文件 全称 格式类型
.properties application.properties 键值对格式(key=value)
.yml / .yaml application.yml / application.yaml YAML 格式(缩进式)

核心区别对比:

  • 格式写法不同
  1. .properties是传统的键值对写法,用 = 分隔键和值,用 . 表示层级:
xml 复制代码
# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=1234
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# 端口号
server.port=8080
  1. .yml / .yaml用缩进表示层级,用 : 分隔键和值,结构更像 JSON:
xml 复制代码
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: 1234
    driver-class-name: com.mysql.cj.jdbc.Driver

server:
  port: 8080

.yml 和 .yaml 本质上是同一种格式,.yml 是 .yaml 的缩写,完全等价。

  • 优缺点对比
维度 .properties .yml / .yaml
结构可读性 层级多了会显得冗长,重复前缀多 层级清晰,一眼就能看出父子关系
语法特点 没有缩进,不用空格,不容易出格式问题 严格依赖缩进,空格多了少了都会报错
多环境配置 需要写多个文件,或者用占位符 支持同一文件用 --- 分隔多环境配置
支持的数据类型 弱,写什么都当字符串处理 支持数字、布尔、列表、对象,更灵活

两者可以同时存在,但 Spring Boot 会优先加载 .properties,如果有相同配置会被覆盖。