一. 简介

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 数据访问的更多相关文章

  1. 【SpringBoot实战】数据访问

    前言 在开发中我们通常会对数据库的数据进行操作,SpringBoot对关系性和非关系型数据库的访问操作都提供了非常好的整合支持.SpringData是spring提供的一个用于简化数据库访问.支持云服 ...

  2. SpringBoot+MyBatis简单数据访问应用

    因为实习用的是MyBatis框架,所以写一篇关于SpringBoot整合MyBatis框架的总结. 一,Pom文件 <?xml version="1.0" encoding= ...

  3. SpringBoot起飞系列-数据访问(九)

    一.前言 前边我们已经学些了开发的基本流程,最重要的一步来了,怎么样和数据库交互才是最重要的,毕竟没有数据那就相当于什么也没做,本文我们来学习使用springboot整合jdbc.mybatis.jp ...

  4. SpringBoot之旅第五篇-数据访问

    一.引言 大部分系统都离不开数据访问,数据库包括SQL和NOSQL,SQL是指关系型数据库,常见的有SQL Server,Oracle,MySQL(开源),NOSQL是泛指非关系型数据库,常见的有Mo ...

  5. Springboot数据访问,棒棒哒!

    Springboot对数据访问部分提供了非常强大的集成,支持mysql,oracle等传统数据库的同时,也支持Redis,MongoDB等非关系型数据库,极大的简化了DAO的代码,尤其是Spring ...

  6. java框架之SpringBoot(9)-数据访问及整合MyBatis

    简介 对于数据访问层,无论是 SQL 还是 NOSQL,SpringBoot 默认采用整合 SpringData 的方式进行统一处理,添加了大量的自动配置,引入了各种 Template.Reposit ...

  7. 六、SpringBoot与数据访问

    六.SpringBoot与数据访问 1.JDBC spring: datasource: username: root password: 123456 url: jdbc:mysql://192.1 ...

  8. SpringBoot详细研究-02数据访问

    Springboot对数据访问部分提供了非常强大的集成,支持mysql,oracle等传统数据库的同时,也支持Redis,MongoDB等非关系型数据库,极大的简化了DAO的代码,尤其是Spring ...

  9. SpringBoot:Mybatis + Druid 数据访问

    西部开源-秦疆老师:基于SpringBoot 2.1.7 的博客教程 秦老师交流Q群号: 664386224 未授权禁止转载!编辑不易 , 转发请注明出处!防君子不防小人,共勉! 简介 对于数据访问层 ...

随机推荐

  1. celery kill task

    from celery.task.control import revokerevoke(task_id, terminate=True) https://stackoverflow.com/ques ...

  2. Spring 之 BeanFactory 源码 - 接口分析

    一.BeanFactory的基本类体系结构(接口为主):

  3. SpringCloud升级之路2020.0.x版-36. 验证断路器正确性

    本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 上一节我们通过单元测试验证了线程隔离的正确性,这一节我们来验证我们断路器的正确性,主要包括 ...

  4. Go语言核心36讲(Go语言实战与应用九)--学习笔记

    31 | sync.WaitGroup和sync.Once 我们在前几次讲的互斥锁.条件变量和原子操作都是最基本重要的同步工具.在 Go 语言中,除了通道之外,它们也算是最为常用的并发安全工具了. 说 ...

  5. arm中断汇编

    IRQ_Handler: push {lr} /* 保存 lr 地址 */ push {r0-r3, r12} /* 保存 r0-r3,r12 寄存器 */ mrs r0, spsr /* 读取 sp ...

  6. 前台json遍历拼装

    //添加角色. $.ajax({ type: "post", url: "/sysRole/list", data: {page: 1, limit: 1000 ...

  7. 全面了解一致性哈希算法及PHP代码实现

    在设计一个分布式系统的架构时,为了提高系统的负载能力,需要把不同的数据分发到不同的服务节点上.因此这里就需要一种分发的机制,其实就是一种算法,来实现这种功能.这里我们就用到了Consistent Ha ...

  8. Go IF 条件语句

    条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句. 以下是在大多数编程语言中发现的典型条件语句的一般形式 ...

  9. 【玩具】使用Python自动化发送微信消息进行订水

    事情是这样的,我知道淘宝上有卖一种USB接口的大按钮,估计是给工厂或者医院之类的场景设计的,样子长这样: 然后我就一直挺想搞一个的,不为别的,就是玩,但是想来想去也没想到这玩意儿对我而言能有啥用途,就 ...

  10. 探索JavaScript执行机制

    前言 不论是工作还是面试,我们可能都经常会碰到需要知道代码的执行顺序的场景,所以打算花点时间彻底搞懂JavaScript的执行机制. 如果这篇文章有帮助到你,️关注+点赞️鼓励一下作者,文章公众号首发 ...