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 }

测试页面!!!

posted @ 2020-07-10 17:22  edda_huang  阅读(259)  评论(0编辑  收藏  举报