# springboot 集成 mybatis

#### 创建项目


create-springboot-project: <https://iovhm.com/book/books/bbcbf/page/create-springboot-project>

更多的时候我们使用mybatis-plus，本章可以直接跳过

springboot 集成mybatis-plus <https://iovhm.com/book/books/bbcbf/page/springboot-mybatis-plus>




#### 集成数据库

**注意：如果你是按create-springboot-project创建的项目，需要删除配置**

```yaml


# application.yml
spring:
  autoconfigure:
    # 阻止Spring Boot自动配置数据源
    exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
```

#### 约定与名词解释

- entity（实体），与数据表，代表一张真实的数据表
- DAO（数据访问对象），访问数据库的接口或实例，在spring-boot中，有时候有喜欢取名为Mapper
- DTO（数据传输对象），含业务领域的数据（既DTO包含entity的字段,但是应该多于entity），不包含业务逻辑，负责在系统与系统之间、分层与分层之间传递数据。

#### 确定项目结构

好的结构易于项目维护

[![](https://iovhm.com/book/uploads/images/gallery/2025-02/scaled-1680-/wd0eeLkHMYvy3GaI-image-1740767753192.png)](https://iovhm.com/book/uploads/images/gallery/2025-02/wd0eeLkHMYvy3GaI-image-1740767753192.png)

#### 增加pom依赖

```xml


        <!--mysql支持-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>
        <!--mybatis支持-->
        <!--如果使用 mybatis plus 请将 mybatis 支持 去掉， mybatis plus 会自动处理依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>3.0.3</version>
        </dependency>


```

#### 增加数据库连接配置


```yaml

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:33306/dataway?charset=utf8mb4&serverTimezone=Asia/Shanghai
    username: <root>
    password: <password>
    driver-class-name: com.mysql.cj.jdbc.Driver


```

#### 创建数据库


[![](https://iovhm.com/book/uploads/images/gallery/2025-02/scaled-1680-/Rm6pbbSyvLgIRtl6-image-1740762789639.png)](https://iovhm.com/book/uploads/images/gallery/2025-02/Rm6pbbSyvLgIRtl6-image-1740762789639.png)

```

```

#### 创建Entity（实体）与数据库结构保持一致

在实体上增加注解 `@Data`

```java

@Data
public class UserEntity {
    private Integer id;
    private String name;
    private Integer age;
    private String email;
}

```

#### 创建DTO


由于DTO主要负责业务数据传输，DTO可以先直接继承于Entity，再根据业务需要增加字段，注意 `@Data` 注解


```java

@Data
public class UserDTO extends UserEntity {

}

```

#### 创建Dao或者Mapper

注意 `@Mapper` 注解，Mapper是用来操作数据库的，使用的数据结构应该是Entity，虽然用DTO也可以使用，但还是应该遵守编程规范



```java


@Mapper
public interface UserMapper {

    @Select("SELECT * FROM user")
    List<UserEntity> selectList();
}

```

#### 编写Controller

```java


// 全局访问路径
@RequestMapping("/")
// 标记为本类为Controller类
@RestController
@Slf4j
public class HomeController {

    private final UserMapper userMapper;

    public HomeController(UserMapper userMapper) {
        this.userMapper = userMapper;
    }
    
    @RequestMapping("/")
    public Object hello() {
        List list =userMapper.selectList();
        return list;
    }
}

```

#### 修改Application

注意 `@MapperScan("com.iovhm.dataway.**.dao")`


```java

@SpringBootApplication
@MapperScan("com.iovhm.dataway.**.dao")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
}


```