SpringBoot(3):SpringData 数据访问
一. 简介
Spring Data是一个用于简化数据库访问,并支持云服务的开源框架;其主要目标是 使得对数据的访问变得方便快捷。对于数据访问层,无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库)。Spring Boot 底层都是采用 Spring Data 的方式进行统一处理各种数据库
Sping Data 官网:https://spring.io/projects/spring-data
二. JDBC
1.新建一个项目:springboot-date 引入相应的模块
项目建好之后,springboot会自动帮我们导入了如下的启动器
2.用IDEA连接上自己的数据库,实现数据库的访问
3.SpringBoot中,我们需要进行简单的配置,用于实现数据库的连接
在resources下创建application.yml配置
1 spring: 2 datasource: 3 username: root 4 password: 123456 5 #?serverTimezone=UTC解决时区的报错 6 url: jdbc:mysql://localhost:3306/ssm-books?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8 7 driver-class-name: com.mysql.jdbc.Driver
4.配置完数据库的东西后,我们就可以直接去使用了,因为SpringBoot已经默认帮我们进行了自动配置;我们去测试类测试一下
1 @RunWith(SpringRunner.class) 2 @SpringBootTest 3 public class SpringbootDataApplicationTests { 4 5 //DI注入数据源 6 @Autowired 7 DataSource dataSource; 8 9 @Test 10 public void contextLoads() throws SQLException { 11 12 System.out.println("默认数据源:" + dataSource.getClass()); 13 //获得连接 14 Connection connection = dataSource.getConnection(); 15 //关闭连接 16 connection.close(); 17 } 18 }
我们可以看到他默认给我们配置的数据源为:class com.zaxxer.hikari.HikariDataSource 我们并没有手动配置
有了数据库连接,显然就可以 CRUD 操作数据库了
三. CRUD 操作
1.有了数据源(com.zaxxer.hikari.HikariDataSource) 和 数据库连接(java.sql.Connection),就可以使用连接和原生的 JDBC 语句来操作数据库
2.即使不使用第三方第数据库操作框架,如 MyBatis等,Spring 本身也对原生的 JDBC 做了轻量级的封装,即 org.springframework.jdbc.core.JdbcTemplate
3.数据库操作的所有 CRUD 方法都在 JdbcTemplate 中
4.SpringBoot 不仅提供了默认的数据源,同时默认已经配置好了 JdbcTemplate 放在了容器中,我们只需注入即可使用
5.JdbcTemplate 的自动配置原理是依赖 org.springframework.boot.autoconfigure.jdbc 包下的 org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration 类
JdbcTemplate主要提供以下几类方法
-
execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句
-
update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句
-
query方法及queryForXXX方法:用于执行查询相关语句
-
call方法:用于执行存储过程、函数相关语句
代码测试
1 import org.springframework.beans.factory.annotation.Autowired; 2 import org.springframework.jdbc.core.JdbcTemplate; 3 import org.springframework.web.bind.annotation.PathVariable; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 import org.springframework.web.bind.annotation.RestController; 6 7 import java.util.List; 8 import java.util.Map; 9 10 @RestController 11 public class JdbcController { 12 13 //JdbcTemplate 会自己注入数据源 14 @Autowired 15 JdbcTemplate jdbcTemplate; 16 17 //1.查询 18 @RequestMapping("/all") 19 public List<Map<String, Object>> all() { 20 //插入语句 21 String sql = "select * from books"; 22 //查询 23 List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql); 24 return maps; 25 } 26 27 //2.增加 28 @RequestMapping("/add") 29 public String add() { 30 String sql = "insert into books (bookId,bookName,bookNumber,bookPrice) values (4,'红楼梦',8,88)"; 31 jdbcTemplate.update(sql); 32 return "插入成功"; 33 } 34 35 //3.删除 36 @RequestMapping("/del/{id}") 37 public String del(@PathVariable("id") Integer id) { 38 String sql = "delete from books where bookId=?"; 39 jdbcTemplate.update(sql, id); 40 return "删除成功"; 41 } 42 43 //4.修改 44 @RequestMapping("/update/{id}") 45 public String update(@PathVariable("id") Integer id) { 46 String sql = "update books set bookName=?,bookNumber=?,bookPrice=? where bookId="+id; 47 //数据 48 Object[] objects = new Object[3]; 49 objects[0] = "平凡的世界"; 50 objects[1] = 5; 51 objects[2] = 55; 52 jdbcTemplate.update(sql, objects); 53 return "修改成功"; 54 } 55 }
测试页面!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了