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 }
测试页面!!!
SpringBoot(3):SpringData 数据访问的更多相关文章
- 【SpringBoot实战】数据访问
前言 在开发中我们通常会对数据库的数据进行操作,SpringBoot对关系性和非关系型数据库的访问操作都提供了非常好的整合支持.SpringData是spring提供的一个用于简化数据库访问.支持云服 ...
- SpringBoot+MyBatis简单数据访问应用
因为实习用的是MyBatis框架,所以写一篇关于SpringBoot整合MyBatis框架的总结. 一,Pom文件 <?xml version="1.0" encoding= ...
- SpringBoot起飞系列-数据访问(九)
一.前言 前边我们已经学些了开发的基本流程,最重要的一步来了,怎么样和数据库交互才是最重要的,毕竟没有数据那就相当于什么也没做,本文我们来学习使用springboot整合jdbc.mybatis.jp ...
- SpringBoot之旅第五篇-数据访问
一.引言 大部分系统都离不开数据访问,数据库包括SQL和NOSQL,SQL是指关系型数据库,常见的有SQL Server,Oracle,MySQL(开源),NOSQL是泛指非关系型数据库,常见的有Mo ...
- Springboot数据访问,棒棒哒!
Springboot对数据访问部分提供了非常强大的集成,支持mysql,oracle等传统数据库的同时,也支持Redis,MongoDB等非关系型数据库,极大的简化了DAO的代码,尤其是Spring ...
- java框架之SpringBoot(9)-数据访问及整合MyBatis
简介 对于数据访问层,无论是 SQL 还是 NOSQL,SpringBoot 默认采用整合 SpringData 的方式进行统一处理,添加了大量的自动配置,引入了各种 Template.Reposit ...
- 六、SpringBoot与数据访问
六.SpringBoot与数据访问 1.JDBC spring: datasource: username: root password: 123456 url: jdbc:mysql://192.1 ...
- SpringBoot详细研究-02数据访问
Springboot对数据访问部分提供了非常强大的集成,支持mysql,oracle等传统数据库的同时,也支持Redis,MongoDB等非关系型数据库,极大的简化了DAO的代码,尤其是Spring ...
- SpringBoot:Mybatis + Druid 数据访问
西部开源-秦疆老师:基于SpringBoot 2.1.7 的博客教程 秦老师交流Q群号: 664386224 未授权禁止转载!编辑不易 , 转发请注明出处!防君子不防小人,共勉! 简介 对于数据访问层 ...
随机推荐
- celery kill task
from celery.task.control import revokerevoke(task_id, terminate=True) https://stackoverflow.com/ques ...
- Spring 之 BeanFactory 源码 - 接口分析
一.BeanFactory的基本类体系结构(接口为主):
- SpringCloud升级之路2020.0.x版-36. 验证断路器正确性
本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 上一节我们通过单元测试验证了线程隔离的正确性,这一节我们来验证我们断路器的正确性,主要包括 ...
- Go语言核心36讲(Go语言实战与应用九)--学习笔记
31 | sync.WaitGroup和sync.Once 我们在前几次讲的互斥锁.条件变量和原子操作都是最基本重要的同步工具.在 Go 语言中,除了通道之外,它们也算是最为常用的并发安全工具了. 说 ...
- arm中断汇编
IRQ_Handler: push {lr} /* 保存 lr 地址 */ push {r0-r3, r12} /* 保存 r0-r3,r12 寄存器 */ mrs r0, spsr /* 读取 sp ...
- 前台json遍历拼装
//添加角色. $.ajax({ type: "post", url: "/sysRole/list", data: {page: 1, limit: 1000 ...
- 全面了解一致性哈希算法及PHP代码实现
在设计一个分布式系统的架构时,为了提高系统的负载能力,需要把不同的数据分发到不同的服务节点上.因此这里就需要一种分发的机制,其实就是一种算法,来实现这种功能.这里我们就用到了Consistent Ha ...
- Go IF 条件语句
条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句. 以下是在大多数编程语言中发现的典型条件语句的一般形式 ...
- 【玩具】使用Python自动化发送微信消息进行订水
事情是这样的,我知道淘宝上有卖一种USB接口的大按钮,估计是给工厂或者医院之类的场景设计的,样子长这样: 然后我就一直挺想搞一个的,不为别的,就是玩,但是想来想去也没想到这玩意儿对我而言能有啥用途,就 ...
- 探索JavaScript执行机制
前言 不论是工作还是面试,我们可能都经常会碰到需要知道代码的执行顺序的场景,所以打算花点时间彻底搞懂JavaScript的执行机制. 如果这篇文章有帮助到你,️关注+点赞️鼓励一下作者,文章公众号首发 ...