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 未授权禁止转载!编辑不易 , 转发请注明出处!防君子不防小人,共勉! 简介 对于数据访问层 ...
随机推荐
- Docker 部署前后端项目
Docker 部署前后端项目 平生不会相思,才会相思,便害相思. 简介:都是被逼的,从零开始一个Docker 部署九个微服务和三个前端项目.其中,这些服务需要用到Nacos.MySQL.Nginx.E ...
- dart系列之:dart语言中的异常
目录 简介 Exception和Error Throw和catch Finally 总结 简介 Exception是程序中的异常情况,在JAVA中exception有checked Exception ...
- Salesforce Consumer Goods Cloud 浅谈篇一之基础介绍
本篇参考: https://baike.baidu.com/item/%E6%B6%88%E8%B4%B9%E5%93%81/425802?fr=aladdin https://help.salesf ...
- Python基础(迭代)
# from collections import Iterable#collections模块的Iterable类型判断 # dict1 = {'a':111,'b':222,'c':333} # ...
- Python系列教程-详细版 | 图文+代码,快速搞定Python编程(附全套速查表)
作者:韩信子@ShowMeAI 教程地址:http://showmeai.tech/article-detail/python-tutorial 声明:版权所有,转载请联系平台与作者并注明出处 引言 ...
- 【AGC板刷记录】
这个帖子,是在自己学知识点累了的时候就看看\(AGC\)的题目来休息. 而且白天上课可以做( AGC-001 \(A\ BBQ Easy\) 考虑从小到大排,相邻两个取为一对. BBQ Easy #i ...
- 洛谷 P6788 - 「EZEC-3」四月樱花(整除分块)
题面传送门 题意: 求 \[\prod\limits_{x=1}^n\prod\limits_{y|x}\frac{y^{d(y)}}{\prod\limits_{z|y}z+1} \pmod{p} ...
- CF605E Intergalaxy Trips
CF605E Intergalaxy Trips 考虑你是不知道后来的边的出现情况的,所以可以这样做:每天你都选择一些点进行观察,知道某天往这些点里面的某条边可用了,你就往这条边走.这样贪心总是对的. ...
- 如何反向推断基因型文件中的参考碱基(REF/ALT)?
目录 需求 解决 方法一 方法二 需求 客户随手丢来一个基因型文件,类似于hapmap格式,只是少了中间多余的那几列,像这种类hapmap格式文件,往往是芯片数据. 这样的数据因为缺乏等位基因:参考碱 ...
- git的使用理解(分支合并的使用理解,多人编程的解决方案)
本文主要记录了对git日常使用的一些理解,主要是对git分支的一些感悟. git强大的版本控制系统,之前也使用过SVN,感觉上git对于多人开发的版本控制更加强大,特别是最近对git分支的使用,更是深 ...