springboot整合,springboot14 整合JDBC

 2023-11-30 阅读 37 评论 0

摘要:14、整合JDBC 14.1、SpringData簡介 對于數據訪問層,無論是 SQL(關系型數據庫) 還是 NOSQL(非關系型數據庫),Spring Boot 底層都是采用 Spring Data 的方式進行統一處理。 Spring Boot 底層都是采用 Spring Data 的方式進行統一處理各種數據庫,Spring Da

14、整合JDBC
14.1、SpringData簡介
對于數據訪問層,無論是 SQL(關系型數據庫) 還是 NOSQL(非關系型數據庫),Spring Boot 底層都是采用 Spring Data 的方式進行統一處理。

Spring Boot 底層都是采用 Spring Data 的方式進行統一處理各種數據庫,Spring Data 也是 Spring 中與 Spring Boot、Spring Cloud 等齊名的知名項目。

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

數據庫相關的啟動器 :可以參考官方文檔:

https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/reference/htmlsingle/#using-boot-starter

springboot整合,14.2、整合JDBC
創建測試項目測試數據源

1、新建一個項目測試:springboot-data-jdbc ; 引入相應的模塊!基礎模塊
在這里插入圖片描述
2、項目建好之后,發現自動幫我們導入了如下的啟動器:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope>
</dependency>

3、編寫yaml配置文件連接數據庫;

spring:datasource:username: rootpassword: root#?serverTimezone=UTC解決時區的報錯url: jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8driver-class-name: com.mysql.jc.jdbc.Driver#新的驅動程序類不推薦使用 com.mysql.jdbc.Driver 驅動程序通過SPI自動注冊,通常不需要手動加載驅動程序類。//要保證有springboot數據庫

注意:

  • 新的驅動程序類不推薦使用 com.mysql.jdbc.Driver
  • 驅動程序通過SPI自動注冊,通常不需要手動加載驅動程序類。
  • 新的驅動程序類推薦使用 com.mysql.jc.jdbc.Driver 可以不配置,有默認配置
  • 也就是說可以不需要寫driver-class-name: com.mysql.jc.jdbc.Driver

4、配置完這一些東西后,我們就可以直接去使用了,因為SpringBoot已經默認幫我們進行了自動配置;去測試類測試一下

@SpringBootTest
class SpringbootDataJdbcApplicationTests {//DI注入數據源@AutowiredDataSource dataSource;@Testpublic void contextLoads() throws SQLException {//看一下默認數據源System.out.println(dataSource.getClass());//獲得連接Connection connection =   dataSource.getConnection();System.out.println(connection);//關閉連接connection.close();}
}

c
結果:我們可以看到他默認給我們配置的數據源為 : class com.zaxxer.hikari.HikariDataSource , 我們并沒有手動配置

springboot2?我們來全局搜索一下,找到數據源的所有自動配置都在 :DataSourceAutoConfiguration文件:

@Import({Hikari.class, Tomcat.class, Dbcp2.class, Generic.class, DataSourceJmxConfiguration.class}
)
protected static class PooledDataSourceConfiguration {protected PooledDataSourceConfiguration() {}
}

這里導入的類都在 DataSourceConfiguration 配置類下,可以看出 Spring Boot 2.2.5 默認使用HikariDataSource 數據源,而以前版本,如 Spring Boot 1.5 默認使用 org.apache.tomcat.jdbc.pool.DataSource 作為數據源;

HikariDataSource 號稱 Java WEB 當前速度最快的數據源,相比于傳統的 C3P0 、DBCP、Tomcat jdbc 等連接池更加優秀;

可以使用 spring.datasource.type 指定自定義的數據源類型,值為 要使用的連接池實現的完全限定名。

關于數據源我們并不做介紹,有了數據庫連接,顯然就可以 CRUD 操作數據庫了。但是我們需要先了解一個對象 JdbcTemplate

JDBCTemplate

java jdbc執行sql語句、在這里插入圖片描述
在這里插入圖片描述
1、有了數據源(com.zaxxer.hikari.HikariDataSource),然后可以拿到數據庫連接(java.sql.Connection),有了連接,就可以使用原生的 JDBC 語句來操作數據庫;

2、即使不使用第三方第數據庫操作框架,如 MyBatis等,Spring 本身也對原生的JDBC 做了輕量級的封裝,即JdbcTemplate。

3、數據庫操作的所有 CRUD 方法都在 JdbcTemplate 中。

4、Spring Boot 不僅提供了默認的數據源,同時默認已經配置好了 JdbcTemplate 放在了容器中,程序員只需自己注入即可使用

5、JdbcTemplate 的自動配置是依賴 org.springframework.boot.autoconfigure.jdbc 包下的 JdbcTemplateConfiguration 類

JdbcTemplate主要提供以下幾類方法:

  • execute方法:可以用于執行任何SQL語句,一般用于執行DDL語句;
  • update方法及batchUpdate方法:update方法用于執行新增、修改、刪除等語句;batchUpdate方法用于執行批處理相關語句;
  • query方法及queryForXXX方法:用于執行查詢相關語句;
  • call方法:用于執行存儲過程、函數相關語句。

jdbc連接oracle,測試

編寫一個Controller,注入 jdbcTemplate,編寫測試方法進行訪問測試;

@RestController
@RequestMapping("/jdbc")
public class JdbcController {/*** Spring Boot 默認提供了數據源,默認提供了 org.springframework.jdbc.core.JdbcTemplate* JdbcTemplate 中會自己注入數據源,用于簡化 JDBC操作* 還能避免一些常見的錯誤,使用起來也不用再自己來關閉數據庫連接*/@AutowiredJdbcTemplate jdbcTemplate;//查詢employee表中所有數據//List 中的1個 Map 對應數據庫的 1行數據//Map 中的 key 對應數據庫的字段名,value 對應數據庫的字段值@GetMapping("/list")public List<Map<String, Object>> userList(){String sql = "select * from employee";List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);return maps;//jdbcTemplate.queryForList該方法將返回一個List,該List中的每一條 記錄是一個Map對象,對應應數據庫中某一行;}//新增一個用戶@GetMapping("/add")public String addUser(){//插入語句,注意時間問題String sql = "insert into employee(last_name, email,gender,department,birth)" +" values ('狂神說','24736743@qq.com',1,101,'"+ new Date().toLocaleString() +"')";jdbcTemplate.update(sql);//查詢return "addOk";}//修改用戶信息@GetMapping("/update/{id}")public String updateUser(@PathVariable("id") int id){//插入語句String sql = "update employee set last_name=?,email=? where id="+id;//數據Object[] objects = new Object[2];objects[0] = "秦疆";objects[1] = "24736743@sina.com";jdbcTemplate.update(sql,objects);//查詢return "updateOk";}//刪除用戶@GetMapping("/delete/{id}")public String delUser(@PathVariable("id") int id){//插入語句String sql = "delete from employee where id=?";jdbcTemplate.update(sql,id);//查詢return "deleteOk";}}

測試請求,結果正常;

到此,CURD的基本操作,使用 JDBC 就搞定了。

補充:
JdbcTemplate基本使用https://blog.csdn.net/weixin_40001125/article/details/88538576

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/186157.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息