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创建的项目，需要删除配置

# application.yml
spring:
 autoconfigure:
 # 阻止Spring Boot自动配置数据源
 exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

约定与名词解释

entity（实体），与数据表，代表一张真实的数据表
DAO（数据访问对象），访问数据库的接口或实例，在spring-boot中，有时候有喜欢取名为Mapper
DTO（数据传输对象），含业务领域的数据（既DTO包含entity的字段,但是应该多于entity），不包含业务逻辑，负责在系统与系统之间、分层与分层之间传递数据。

确定项目结构
好的结构易于项目维护

增加pom依赖

 <!--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>

增加数据库连接配置

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

创建数据库

创建Entity（实体）与数据库结构保持一致
在实体上增加注解 @Data

@Data
public class UserEntity {
 private Integer id;
 private String name;
 private Integer age;
 private String email;
}

创建DTO
由于DTO主要负责业务数据传输，DTO可以先直接继承于Entity，再根据业务需要增加字段，注意 @Data 注解

@Data
public class UserDTO extends UserEntity {

}

创建Dao或者Mapper
注意 @Mapper 注解，Mapper是用来操作数据库的，使用的数据结构应该是Entity，虽然用DTO也可以使用，但还是应该遵守编程规范

@Mapper
public interface UserMapper {

 @Select("SELECT * FROM user")
 List<UserEntity> selectList();
}

编写Controller

// 全局访问路径
@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")

@SpringBootApplication
@MapperScan("com.iovhm.dataway.**.dao")
public class Application {
 public static void main(String[] args) {
 SpringApplication.run(Application.class);
 }
}

