1. 说明
SpringBoot项目,连接MySQL数据库,使用Mybatis框架。
本篇文章作为 SpringBoot
使用 Mybatis
的入门。
2. 依赖
2.1. MySQL驱动依赖
MySQL驱动,使用SpringBoot版本对应的默认版本,不需要手动指定版本。
比如:SpringBoot 版本为 2.7.15
,对应的 MySQL 驱动的版本为 8.0.33
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
2.2. Mybatis依赖
MyBatis版本,使用SpringBoot版本推荐的版本(在新建项目时,会根据SpringBoot版本自动生成对应的MyBatis版本)。
比如:SpringBoot 版本为 2.7.15
,对应的 MyBatis
的版本为 2.3.1
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.1</version>
</dependency>
3. 配置数据源
application.yml
文件中,配置数据源(MySQL数据库)。
包括:数据库url,用户名,密码,驱动
spring:
datasource:
url: jdbc:mysql://localhost:3306/mybatisplus?serverTimeZone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
username: root
password: password
driver-class-name: com.mysql.cj.jdbc.Driver
mysql驱动,使用的是新版驱动 com.mysql.cj.jdbc.Driver
;使用旧版驱动,在项目启动的时候,会报错。
4. Controller - Service - Mapper - Entity
4.1. 图示
4.2. Entity
package com.example.web.entity;
import lombok.Data;
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
4.3. Mapper
4.3.1. Mapper.java
package com.example.web.mapper;
import com.example.web.entity.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserMapper {
List<User> listAll();
}
4.3.2. Mapper.xml
注意:这个 Mapper.xm
l 文件所在的路径
( com.example.web.mapper
),默认情况,必须和 Mapper.java
文件的路径一致,否则会报错,找不到映射文件(Mapper.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.web.mapper.UserMapper">
<select id="listAll" resultType="com.example.web.entity.User">
select * from user
</select>
</mapper>
4.4. Service
4.4.1. Service接口
package com.example.web.service;
import com.example.web.entity.User;
import java.util.List;
public interface UserService {
List<User> listAll();
}
4.4.2. Service实现
package com.example.web.service.impl;
import com.example.web.entity.User;
import com.example.web.mapper.UserMapper;
import com.example.web.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> listAll() {
return userMapper.listAll();
}
}
4.5. Controller
package com.example.web.controller;
import com.example.web.entity.User;
import com.example.web.service.UserService;
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 UserService userService;
@GetMapping
public List<User> selectAll() {
return userService.listAll();
}
}
5. 接口请求与数据
5.1. 接口请求示例
5.2. 数据库中的表和数据
6. SpringBoot项目创建时添加mysql驱动和mybatis依赖
这里创建新项目使用的是STS(SpringToolSuite4),因为 IDEA 社区版没法创建SpringBoot项目。
MySQL的驱动版本,不需要指定。有和SpringBoot版本适配的默认版本。
7. 对比:“MySQL驱动”指定版本和不指定版本
7.1. 指定版本
7.2. 不指定版本(跟随SpringBoot版本)
8. MySQL驱动的maven仓库坐标变化
MySQL驱动的maven仓库坐标发生了变化。
官方将原来的 mysql-connector-java
改为了 mysql-connector-j
。
测试时间点为:2023年9月3日
。