Spring Data
对于数据访问层,无论是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
数据库相关的启动器:可以参考官方文档:https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter
JDBC
创建一个项目进行测试:Spring data
环境配置
JDK 1.8
maven 3.6.1
spring Boot 2.4.4
MySQL 5.x
1.创建项目
选择Springboot项目
项目信息
选择我们需要的依赖
2.相关依赖(上一步勾选了就会自动生成 版本不同生产的也不同 不勾选粘贴也可以)
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--JDBC-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--MYSQL驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
3.数据库信息(这里连接之前创建的数据库,就不细说了)
数据库名mybatis 表名user 字段如下图
4.配置application.yml文件
数据库配置
注意:
MySQL5和MySQL8的驱动不一样(5:com.mysql.jdbc.Driver
8:com.mysql.cj.jdbc.Driver
)
时区MySQL5可以不加(一般不会报错)
spring:
datasource:
username: root
password: x5
url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.jdbc.Driver
5.测试一下数据源以及数据库连接
代码在后面
注意:这里可能会出现一下错误(具体问题具体分析)
1.CLIENT_PLUGIN_AUTH is required
(驱动版本过高)
2.java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z
(驱动版本过低)
3.The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents mo
(时区问题)
package com.zhao;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@SpringBootTest
class Springboot04DataApplicationTests {
@Autowired
DataSource dataSource;
@Test
void contextLoads() throws SQLException {
//查看一下默认数据源:com.zaxxer.hikari.HikariDataSource
System.out.println(dataSource.getClass());
//获得数据库连接
Connection connection = dataSource.getConnection();
System.out.println(connection);
connection.close();
}
}
6.创建JDBCController进行增删改查测试
在controllr层创建JDBCController类
创建JdbcTemplate对象进行增删改查 Spring boot在这里封装了数据库基本操作。
@RestController
public class JDBCController {
@Autowired
JdbcTemplate jdbcTemplate;
}
7.数据查询
查询方法(写到JdbcController中)
//查询数据库所有信息
//没有实体类 数据库中的东西 怎么获取? Map
@GetMapping("/userList")
public List<Map<String,Object>> userList(){
String sql="select *from user";
List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
return maps;
}
8.数据添加
@GetMapping("/addUser")
public String addUser(){
String sql ="insert into mybatis.user(id,name,pwd) values (4,'小明','123456')";
jdbcTemplate.update(sql);
return "add-ok";
}
9.数据修改
使用Object数组进行 预处理
@GetMapping("/updateUser/{id}")
public String updateUser(@PathVariable("id")Integer id){
String sql ="update mybatis.user set name=?,pwd=?where id="+id;
Object[] objects = new Object[2];
objects[0]="小明2";
objects[1]="abcdef";
jdbcTemplate.update(sql,objects);
return "update-ok";
}
10.数据删除
@GetMapping("/deleteUser/{id}")
public String deleteUser(@PathVariable("id")Integer id){
String sql ="delete from mybatis.user where id =?";
jdbcTemplate.update(sql,id);
return "delete-ok";