背景
前我们在这篇 java:jpa、Hibernate、Spring Data JPA、ORM以及和mybatis的区别 文章中讲了 springboot+jpa 的使用,今天来看一下 springboot + mybatis 的组合,其实和 jpa 的使用很像,大家可以对照的来看。
Spring Boot Mybatis使用例子
1、创建库和表
1.1 创建库 spring-test
1.2 创建表
CREATE TABLE `users` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`name` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
`age` int DEFAULT NULL,
`email` char(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
1.3 添加一条数据
2、添加依赖
<dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
</dependencies>
- mysql-connector-java 这个依赖项包含了MySQL的JDBC驱动程序,它使得应用程序能够建立与MySQL数据库的连接并执行SQL查询。
3、配置数据源
application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/spring-test?useSSL=false&characterEncoding=utf-8&useLegacyDatetimeCode=false
spring.datasource.username=root
spring.datasource.password=root
4、配置实体类
model/User.java
public class User {
private Integer id;
private String name;
private String email;
// getter and setter methods
}
5、创建 MyBatis 的 Mapper 接口【关键】
并使用 @Mapper 注解:
mapper/UserMapper.java
package com.zhangyu.mapper;
import com.zhangyu.model.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface UserMapper {
@Select("SELECT * FROM users")
List<User> findAll();
}
还有一个可有可无的步骤,在入口 Application 上加上:
@MapperScan("com.zhangyu.mapper")
如果不加也行,MyBatis 默认会扫描与主配置类(Spring Boot 主类)相同包及其子包下的所有类,寻找包含 @Mapper 注解的接口。
6、创建一个控制器(Controller)
package com.zhangyu.controller;
import com.zhangyu.model.User;
import com.zhangyu.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserMapper userMapper;
@GetMapping("getAll")
public List<User> getAllUsers() {
return userMapper.findAll();
}
}
7、测试
GET http://127.0.0.1:9090/users/getAll
总结
和 springboot jpa 步骤不同的地方
1、相同
2、依赖不一样
3、相同
4、实体类不需要加上其他jpa相关注解
5、主要就是这里不同,做了一些映射
6、相同
主要就是 4、5 不同