SpringBoot內(nèi)置數(shù)據(jù)源的持久化與解決方案
數(shù)據(jù)層解決方案
- SQL
- NoSQL
與SQL有關(guān)的解決方案
現(xiàn)有數(shù)據(jù)層解決方案技術(shù)選型
- Druid + MyBatis-Plus + MySQL
- 數(shù)據(jù)源:DruidDataSource
- 持久化技術(shù):MyBatis-Plus / MyBatis
- 數(shù)據(jù)庫:MySQL
SpringBoot提供了3種內(nèi)嵌的數(shù)據(jù)源對(duì)象供開發(fā)者選擇
- HikariCP
- Tomcat提供DataSource
- Commons DBCP
??平常做項(xiàng)目時(shí)我所需要的maven坐標(biāo)
數(shù)據(jù)源
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> </dependency>
持久化技術(shù)
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency>
數(shù)據(jù)庫
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency>
?? springboot中的數(shù)據(jù)源
若不提供數(shù)據(jù)源(例如刪除上面的Druid的坐標(biāo),就默認(rèn)使用這三種中的一種(HikariCP默認(rèn))
- HikariCP:默認(rèn)內(nèi)置數(shù)據(jù)源對(duì)象
- Tomcat提供DataSource: HikariCP不可用的情況下,且在web環(huán)境中,將使用tomcat服務(wù)器配置的數(shù)據(jù)源對(duì)象
- Commons DBCP: Hikari不可用,tomcat數(shù)據(jù)源也不可用,將使用dbcp數(shù)據(jù)源
?? 刪掉durid的maven坐標(biāo),將數(shù)據(jù)源換成HikariCP
spring:
datasource:
url: jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC
hikari:
driver-class-name=com: com.mysql.cj.jdbc.Driver
username: root
password: root
內(nèi)置持久化解決方案
?? 導(dǎo)入坐標(biāo)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
??編寫測試類:
package com.jkj; import com.jkj.dao.BookDao; import com.jkj.domian.Book; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; @SpringBootTest class Springboot09SqlApplicationTests { /*@Autowired private BookDao bookDao;*/ /*@Test void contextLoads() { *//*bookDao.selectById(2);*//* }*/ @Autowired private JdbcTemplate jdbcTemplate; @Test void JDBCTEST() { // jdbcTemplate.update();//增刪改 // jdbcTemplate.query(); //查詢 // jdbcTemplate.queryForObject();//查詢單個(gè)對(duì)象 /* 一般不使用這種格式 String sql ="select * from tbl_book"; List<Map<String,Object>> maps = jdbcTemplate.queryForList(sql); System.out.println(maps);*/ RowMapper<Book> rm = new RowMapper<Book>() { @Override public Book mapRow(ResultSet resultSet, int i) throws SQLException { // ResultSet resultSet 其實(shí)就是結(jié)果集 Book temp = new Book(); temp.setId(resultSet.getInt("id")); temp.setName(resultSet.getString("name")); temp.setType(resultSet.getString("type")); temp.setDescription(resultSet.getString("description")); return temp; } }; String sql = "select * from tbl_book "; List<Book> list = jdbcTemplate.query(sql, rm); System.out.println(list); } }
??JdbcTemplate的其它配置
spring:
jdbc:
template:
query-timeout: -1 #查詢超時(shí)時(shí)間
max-rows: 500 #最大行數(shù)
fetch-size: -1 #緩存行數(shù)
Springboot內(nèi)置數(shù)據(jù)庫
?? SpringBoot提供了3種內(nèi)嵌數(shù)據(jù)庫供開發(fā)者選擇,提高開發(fā)測試效率
- H2
- HSQL
- Derby
?? 導(dǎo)入依賴;
<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
?? 配置H2管理控制臺(tái)參數(shù)
server:
port: 80
spring:
h2:
console:
path: /h2
enabled: true
運(yùn)行項(xiàng)目,在網(wǎng)頁進(jìn)行訪問,連接之后,發(fā)現(xiàn)連接異常,因?yàn)槭状问褂玫脑?,只需要在配置文件中配置相?yīng)的數(shù)據(jù)源就ok了,重新啟動(dòng)成功后,這些配置可以刪除,也可以留著。
server:
port: 80
spring:
h2:
console:
path: /h2
enabled: truedatasource:
url: jdbc:h2:~/test
hikari:
driver-class-name=com: org.h2.Driver
username: sa
password: 123456
??運(yùn)行項(xiàng)目
?? 輸入密碼登錄
??添加一個(gè)表
??添加數(shù)據(jù)后,查詢表信息
?? 測試
@Test void testJdbcTemplateSave(@Autowired JdbcTemplate jdbcTemplate){ String sql="insert into tbl_book values(3,'斗羅大陸','科幻','左手藍(lán)銀草右手昊天錘')"; jdbcTemplate.update(sql); }
???注意: H2內(nèi)置數(shù)據(jù)庫這僅僅用于開發(fā)階段,線上項(xiàng)目請(qǐng)務(wù)必關(guān)閉控制臺(tái)功能
到此這篇關(guān)于SpringBoot內(nèi)置數(shù)據(jù)源的持久化與解決方案的文章就介紹到這了,更多相關(guān)SpringBoot內(nèi)置數(shù)據(jù)源內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring?Data?JPA?實(shí)體類中常用注解說明
這篇文章主要介紹了Spring?Data?JPA?實(shí)體類中常用注解說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11maven中配置項(xiàng)目的jdk版本無效的排查方式
這篇文章主要介紹了maven中配置項(xiàng)目的jdk版本無效的排查方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04spring boot openfeign從此和httpClient說再見詳析
這篇文章主要給大家介紹了關(guān)于spring boot openfeign從此和httpClient說再見的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧2018-06-06Springboot整合mybatis開啟二級(jí)緩存的實(shí)現(xiàn)示例
在一級(jí)緩存中,是查詢兩次數(shù)據(jù)庫的,顯然這是一種浪費(fèi),既然SQL查詢相同,就沒有必要再次查庫了,直接利用緩存數(shù)據(jù)即可,這種思想就是MyBatis二級(jí)緩存的初衷,本文就詳細(xì)的介紹了Springboot整合mybatis開啟二級(jí)緩存,感興趣的可以了解一下2022-05-05Java中StringUtils工具類的一些用法實(shí)例
這篇文章主要介紹了Java中StringUtils工具類的一些用法實(shí)例,本文著重講解了isEmpty和isBlank方法的使用,另外也講解了trim、strip等方法的使用實(shí)例,需要的朋友可以參考下2015-06-06關(guān)于Spring中@Transactional事務(wù)回滾的注意事項(xiàng)
這篇文章主要介紹了關(guān)于Spring中@Transactional事務(wù)回滾的注意事項(xiàng),回滾(Rollback)指的是程序或數(shù)據(jù)處理錯(cuò)誤,將程序或數(shù)據(jù)恢復(fù)到上一次正確狀態(tài)的行為?;貪L包括程序回滾和數(shù)據(jù)回滾等類型,需要的朋友可以參考下2023-05-05