对于数据访问层,无论是 SQL(关系型数据库)还是 NOSQL(非关系型数据库),Spring Boot 底层都是采用 Spring Data 的方式 进行统一处理。
Spring Boot 底层都是采用 Spring Data 的方式 进行统一处理各种数据库的,Spring Data 也是 Spring 中 与 Spring Boot、Spring Cloud 等齐名的知名框架。
Spring Data 官网:https://spring.io/projects/spring-data
数据库相关的启动器:


真是可以呀,以前 数据库驱动的依赖 都得 我们自己用 maven 导入 。现在 创建 SpringBoot 就可以 单机选择 驱动依赖。NB
如果在创建 Spring Boot 出现 无法 连接到 服务器的现象。请 进入 All-Setting

在 输入框里面 输入 http:start.spring.io 即可。
可以使用 YamlCREATE DATABASE `mybatis`;
USE `mybatis`;
CREATE TABLE `user`(
`id` INT(20) NOT NULL PRIMARY KEY,
`name` VARCHAR(30) DEFAULT NULL,
`pwd` VARCHAR(30) DEFAULT NULL
)ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO `user`(`id`,`name`,`pwd`) VALUES
(1,'王五','123456'),
(2,'张三','123456'),
(3,'李四','123456')
spring:
datasource:
username: root
password: 123123
url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
driver-class-name: com.mysql.cj.jdbc.Driver
DataSource dataSource 数据源,拿到这个数据源可以做很多的原生态 JDBC 操作。
@Test
void test() throws SQLException {
System.out.println(dataSource.getClass());
}

发现 Spring Boot 的默认数据库连接池 用的 是 hikari
@Test
void test() throws SQLException {
System.out.println(dataSource.getClass());
Connection connection = dataSource.getConnection();
String sql = "select * from user";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
ResultSet resultSet = preparedStatement.executeQuery();
while(resultSet.next()){
System.out.println(resultSet.getObject(1) + " || "
+ resultSet.getObject(2) + " || " + resultSet.getObject(3));
}
connection.close();
}

JdbcTemplate:不知道大家是否还记得 Template,之前在 整合 mybatis-spring 的时候 就学习过 这个 Template。
这玩意也可以操纵数据库,而且 功能更加的完善和强大。
但是 在使用这东西 之前,必须 要 添加 一个 依赖。
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-jdbcartifactId>
dependency>
可以说 JdbcTemplate 十分的 亲民,人性化。
比如说 queryForList 返回的类型是 List ,知道为什么用这种 携带 Map 的类型的吗。因为 这样的数据 更加的 接近于 JSON。JSON 就是 键值对形式的,所以 查询出来的数据,尽可量 全用 Map 去 接近。
package top.muquanyu.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
public class JdbcController {
@Autowired(required = false)
JdbcTemplate jdbcTemplate;
@RequestMapping("/userList")
public List<Map<String, Object>> userList(){
String sql = "select * from user";
List<Map<String, Object>> list_map = jdbcTemplate.queryForList(sql);
return list_map;
}
}

查询的写法,必须得有 映射类 pojo

增加一条数据
@RequestMapping("/insert")
public String insert(){
jdbcTemplate.update("insert into user(id,name,pwd) values (4,'test','123123')");
return "insert_ok";
}


@RequestMapping("/update/{id}")
public String insert(@PathVariable("id") Integer id){
String sql = "update user set name = ?, pwd = ? where id = ?";
Object[] params = new Object[3];
params[0] = "修改后的名字";
params[1] = "修改后的密码";
params[2] = id;
jdbcTemplate.update(sql,params);
return "update_ok";
}


同理 用 update 即可。