Springboot | Mybatis入门01
目录
Mybatis介绍
Mybatis官方文档:https://mybatis.org/mybatis-3/zh/index.html
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
简单来说,Mybatis就是读取MySql数据库数据,将数据转为Java类对象,提供给Springboot使用
Mybatis简单入门
所有代码在gitee仓库:https://gitee.com/wang-taoan/l06_mybatis01
1.确定需求
目标需求:发送get请求,返回后端从数据库中读取的数据
2.创建数据库、添加数据
数据库管理工具:Navicat
数据库:MySQL
CREATE DATABASE mybatis;
USE mybatis
CREATE TABLE user (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
age INT,
sex CHAR(1),
create_time DATETIME,
PRIMARY KEY (id)
);
INSERT INTO user (name, age, sex, create_time)
VALUES ('John Doe', 30, 'M', '2023-10-22 09:00:00');
INSERT INTO user (name, age, sex, create_time)
VALUES ('Jane Smith', 25, 'F', '2023-10-22 10:30:00');
INSERT INTO user (name, age, sex, create_time)
VALUES ('Alice Johnson', 28, 'F', '2023-10-22 13:15:00');
3.新建springboot项目
新建一个普通项目
在该项目下新建一个springboot模块,命名为mybatis
依赖勾选:
- Spring Web
- MySQL Driver
- MyBatis Framework
4.配置数据库连接和mybatis
在 项目名/mybatis/src/main/resources
目录下新建yml文件application.yml
更换自己的数据库名、用户名、密码
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
username: root
password: 123456
mybatis:
typeAliasesPackage: com.example.mybatis.domain
mapperLocations: classpath:mapper/*.xml
5.编写核心代码
在项目名/mybatis/src/main/java/com/example/mybatis
目录下,新建controller、service、mapper、domain 包
在项目名/mybatis/src/main/resources
目录下,新建mapper目录
在各个目录下编写对应的java、xml文件
// domain/User
public class User {
private int id;
private String name;
private int age;
private int sex;
private String createTime;
}
// mapper/UserMapper
public interface UserMapper {
List<User> selectAllUser();
}
// service/UserService
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> selectAllUser()
{
return userMapper.selectAllUser();
}
}
// controller/HelloController
@RestController
public class HelloController {
@Autowired
private UserService userService;
@GetMapping("/hello")
public List<User> hello(){
return userService.selectAllUser();
}
}
mapper/UserMapper.xml
如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mybatis.mapper.UserMapper">
<resultMap id="UserResult" type="User">
<id property="id" column="id" />
<result property="name" column="name" />
<result property="age" column="age" />
<result property="sex" column="sex" />
<result property="createTime" column="create_time" />
</resultMap>
<select id="selectAllUser" resultMap="UserResult">
select * from user </select>
</mapper>
Springboot主启动类上加上注释
@MapperScan("com.example.mybatis.mapper")
6.启动程序、测试接口
启动springboot程序
用apifox测试接口
得到了服务器从数据库返回的数据
Mybatis Mapper XML知识
Mybatis通过XML文件,将数据库表中字段与Java类属性一一映射,将数据转为Java类对象
对应的mapper包下的mapper接口如下
创建、注入bean的注解
由spring容器创建bean对象:
- @Mapper
- @Service
- @component
spring容器注入bean对象:
- @Autowired
辨别@Mapper和@MapperScan
概述:推荐使用@MapperScan,最便捷
@Mapper 注解:@Mapper
注解用于标识单个 Mapper 接口,将这个接口标记为 MyBatis 的 Mapper 接口。
@Mapper
public interface UserMapper {
User getUserById(int id);
void insertUser(User user);
// 其他数据库操作方法
}
@MapperScan 注解:@MapperScan
注解通常用于配置 MyBatis 扫描路径,以便 Spring Boot 能够自动扫描和注册多个 Mapper 接口。
@SpringBootApplication
@MapperScan("com.example.mybatis.mapper")
public class YourApplication {
public static void main(String[] args) {
SpringApplication.run(YourApplication.class, args);
}
}
如果给每个mapper接口注解了@Mapper了,就不用在启动类上@MapperScan
如果在启动类上@MapperScan了,就不需要给每个mapper接口@Mapper了
总结:如果接口少可以用@Mapper,但最好直接用@MapperScan一次性配置多个 Mapper 接口的扫描路径