SpringBoot连接MySQL数据库,使用Mybatis框架(入门)
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=falseusername: rootpassword: passworddriver-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 mapperPUBLIC "-//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 {@Autowiredprivate UserMapper userMapper;@Overridepublic 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 {@Autowiredprivate UserService userService;@GetMappingpublic 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日
。