SpringBoot(3):SpringData 数据访问

摘要:
一.简介SpringData是一个用于简化数据库访问,并支持云服务的开源框架;其主要目标是使得对数据的访问变得方便快捷。SpringBoot底层都是采用SpringData的方式进行统一处理各种数据库SpingData官网:https://spring.io/projects/spring-data二.JDBC1.新建一个项目:springboot-date引入相应的模块项目建好之后,springboot会自动帮我们导入了如下的启动器2.用IDEA连接上自己的数据库,实现数据库的访问3.SpringBoot中,我们需要进行简单的配置,用于实现数据库的连接在resources下创建application.yml配置1spring:2datasource:3username:root4password:1234565#?";39jdbcTemplate.update;40return"删除成功";41}4243//4.修改44@RequestMapping45publicStringupdate{46Stringsql="updatebookssetbookName=?wherebookId="+id;47//数据48Object[]objects=newObject[3];49objects[0]="平凡的世界";50objects[1]=5;51objects[2]=55;52jdbcTemplate

一. 简介

Spring Data是一个用于简化数据库访问,并支持云服务的开源框架;其主要目标是 使得对数据的访问变得方便快捷。对于数据访问层,无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库)。Spring Boot 底层都是采用 Spring Data 的方式进行统一处理各种数据库

Sping Data 官网:https://spring.io/projects/spring-data

二. JDBC

1.新建一个项目:springboot-date 引入相应的模块

SpringBoot(3):SpringData 数据访问第1张

项目建好之后,springboot会自动帮我们导入了如下的启动器

SpringBoot(3):SpringData 数据访问第2张

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 classSpringbootDataApplicationTests {
4 
5     //DI注入数据源
6 @Autowired
7 DataSource dataSource;
8 
9 @Test
10     public void contextLoads() throwsSQLException {
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 操作数据库了

SpringBoot(3):SpringData 数据访问第3张

三. 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 importorg.springframework.beans.factory.annotation.Autowired;
2 importorg.springframework.jdbc.core.JdbcTemplate;
3 importorg.springframework.web.bind.annotation.PathVariable;
4 importorg.springframework.web.bind.annotation.RequestMapping;
5 importorg.springframework.web.bind.annotation.RestController;
6 
7 importjava.util.List;
8 importjava.util.Map;
9 
10 @RestController
11 public classJdbcController {
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         returnmaps;
25 }
26 
27     //2.增加
28     @RequestMapping("/add")
29     publicString 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 数据访问》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇xxl-job滥用netty导致的问题和解决方案我痛恨 Git 的 10 个理由下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mysql权限管理

1.使用密码登录mysql mysql -u root -p 2.查看所有的数据库 show databases; 3.创建数据库 create database <数据库名>; 4.创建数据库同时设置字符集  create database <数据库名> default character set utf8 collate utf...

Spring Boot中使用@Transactional注解配置事务管理

事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多。声明式事务有两种方式,一种是在配置文件(xml)...

rosdep update问题解决终极方法

转载:https://blog.csdn.net/weixin_42584917/article/details/114448355 最香的终极解决方法,虽然有点麻烦,可是必成功yyds raw.githubusercontent.com实际上就是github的用户数据服务器,rosdep程序下载的就是github.com/ros/rosdistro这个r...

tp5 使用SMproxy连接池来连接mysql数据库

前言:之前面试的时候被问到tp5-mysql连接池的问题,一下就蒙了,不知道啥玩意,今天有时间特意百度了一下。 PHP连接池的设计初衷是PHP 没有连接池,所以高并发时数据库会出现连接打满的情况,Mycat 等数据库中间件会出现部分 SQL 无法使用,例如不支持批量添加等,而且过于臃肿。 smproxy的原理是将数据库连接作为对象存储在内存中,当用户需要访...

MySQL之IDE工具介绍及数据备份

一、IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 二、MySQL数据备份 #1. 物理备份: 直接复制数据库文件,适用于大型数据库环境( 如数据文件、控制文件、归档日志文件等)。但不能恢复到异构系统中如Windows。 #2. 逻辑...

大数据自学3-Windows客户端DbVisualizer/SQuirreL配置连接hive

前面已经学习了将数据从Sql Server导入到Hive DB,并在Hue的Web界面可以查询,接下来是配置客户端工具直接连Hive数据库,常用的有DbVisualizer、SQuirreL SQL Client、DataGrip,只试用了前面两种,花了1天多时间最终实现了用这两款工具连Hive,还是挺有成就感的。 先把环境说明下,有些问题跟环境版本是非常...