SpringBoot內置數據源的持久化與解決方案
數據層解決方案
- SQL
- NoSQL
與SQL有關的解決方案
現有數據層解決方案技術選型
- Druid + MyBatis-Plus + MySQL
- 數據源:DruidDataSource
- 持久化技術:MyBatis-Plus / MyBatis
- 數據庫:MySQL
SpringBoot提供瞭3種內嵌的數據源對象供開發者選擇
- HikariCP
- Tomcat提供DataSource
- Commons DBCP
🔥平常做項目時我所需要的maven坐標
數據源
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> </dependency>
持久化技術
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency>
數據庫
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency>
🔥 springboot中的數據源
若不提供數據源(例如刪除上面的Druid的坐標,就默認使用這三種中的一種(HikariCP默認)
- HikariCP:默認內置數據源對象
- Tomcat提供DataSource: HikariCP不可用的情況下,且在web環境中,將使用tomcat服務器配置的數據源對象
- Commons DBCP: Hikari不可用,tomcat數據源也不可用,將使用dbcp數據源
🔥 刪掉durid的maven坐標,將數據源換成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
內置持久化解決方案
🔥 導入坐標
<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();//查詢單個對象 /* 一般不使用這種格式 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 其實就是結果集 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 #查詢超時時間
max-rows: 500 #最大行數
fetch-size: -1 #緩存行數
Springboot內置數據庫
🔥 SpringBoot提供瞭3種內嵌數據庫供開發者選擇,提高開發測試效率
- H2
- HSQL
- Derby
🔥 導入依賴;
<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管理控制臺參數
server:
port: 80
spring:
h2:
console:
path: /h2
enabled: true
運行項目,在網頁進行訪問,連接之後,發現連接異常,因為首次使用的原因,隻需要在配置文件中配置相應的數據源就ok瞭,重新啟動成功後,這些配置可以刪除,也可以留著。
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
🔥運行項目
🔥 輸入密碼登錄
🔥添加一個表
🔥添加數據後,查詢表信息
🔥 測試
@Test void testJdbcTemplateSave(@Autowired JdbcTemplate jdbcTemplate){ String sql="insert into tbl_book values(3,'鬥羅大陸','科幻','左手藍銀草右手昊天錘')"; jdbcTemplate.update(sql); }
⭐⭐⭐註意: H2內置數據庫這僅僅用於開發階段,線上項目請務必關閉控制臺功能
到此這篇關於SpringBoot內置數據源的持久化與解決方案的文章就介紹到這瞭,更多相關SpringBoot內置數據源內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Spring Boot 整合持久層之JdbcTemplate
- 基於SpringBoot整合SSMP的詳細教程
- SpringBoot淺析緩存機制之Redis單機緩存應用
- Spring操作JdbcTemplate數據庫的方法學習
- 教你用springboot連接mysql並實現增刪改查