日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

整合JDBC---SpringBoot

發布時間:2023/12/3 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 整合JDBC---SpringBoot 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

整合JDBC

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

整合JDBC

測試數據源

1、我去新建一個項目測試:springboot-data-jdbc ; 引入相應的模塊!基礎模塊

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Yt7ZMtY6-1610102948043)(C:\Users\王東梁\AppData\Roaming\Typora\typora-user-images\image-20210108162430550.png)]

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: 123456#?serverTimezone=UTC解決時區的報錯url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8driver-class-name: com.mysql.cj.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();} }

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

我們來全局搜索一下,找到數據源的所有自動配置都在 :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

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方法:用于執行存儲過程、函數相關語句。

測試

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

package com.kuang.controller;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import java.util.Date; import java.util.List; import java.util.Map;@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;}//新增一個用戶@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 就搞定了。

總結

以上是生活随笔為你收集整理的整合JDBC---SpringBoot的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。