SpringBoot內(nèi)置數(shù)據(jù)源的持久化與解決方案
數(shù)據(jù)層解決方案
- SQL
- NoSQL
與SQL有關的解決方案
現(xiàn)有數(shù)據(jù)層解決方案技術選型
- Druid + MyBatis-Plus + MySQL
- 數(shù)據(jù)源:DruidDataSource
- 持久化技術:MyBatis-Plus / MyBatis
- 數(shù)據(jù)庫:MySQL
SpringBoot提供了3種內(nèi)嵌的數(shù)據(jù)源對象供開發(fā)者選擇
- HikariCP
- Tomcat提供DataSource
- Commons DBCP
??平常做項目時我所需要的maven坐標
數(shù)據(jù)源
<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>
數(shù)據(jù)庫
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>?? springboot中的數(shù)據(jù)源
若不提供數(shù)據(jù)源(例如刪除上面的Druid的坐標,就默認使用這三種中的一種(HikariCP默認)
- HikariCP:默認內(nèi)置數(shù)據(jù)源對象
- Tomcat提供DataSource: HikariCP不可用的情況下,且在web環(huán)境中,將使用tomcat服務器配置的數(shù)據(jù)源對象
- Commons DBCP: Hikari不可用,tomcat數(shù)據(jù)源也不可用,將使用dbcp數(shù)據(jù)源
?? 刪掉durid的maven坐標,將數(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)置持久化解決方案
?? 導入坐標
<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 #最大行數(shù)
fetch-size: -1 #緩存行數(shù)
Springboot內(nèi)置數(shù)據(jù)庫
?? SpringBoot提供了3種內(nèi)嵌數(shù)據(jù)庫供開發(fā)者選擇,提高開發(fā)測試效率
- 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管理控制臺參數(shù)
server:
port: 80
spring:
h2:
console:
path: /h2
enabled: true
運行項目,在網(wǎng)頁進行訪問,連接之后,發(fā)現(xiàn)連接異常,因為首次使用的原因,只需要在配置文件中配置相應的數(shù)據(jù)源就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
??運行項目

?? 輸入密碼登錄


??添加一個表

??添加數(shù)據(jù)后,查詢表信息

?? 測試
@Test
void testJdbcTemplateSave(@Autowired JdbcTemplate jdbcTemplate){
String sql="insert into tbl_book values(3,'斗羅大陸','科幻','左手藍銀草右手昊天錘')";
jdbcTemplate.update(sql);
}???注意: H2內(nèi)置數(shù)據(jù)庫這僅僅用于開發(fā)階段,線上項目請務必關閉控制臺功能
到此這篇關于SpringBoot內(nèi)置數(shù)據(jù)源的持久化與解決方案的文章就介紹到這了,更多相關SpringBoot內(nèi)置數(shù)據(jù)源內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
基于Java實現(xiàn)簡易的局域網(wǎng)對話系統(tǒng)
這篇文章主要介紹了基于Java實現(xiàn)的簡易的局域網(wǎng)對話系統(tǒng),文中的示例代碼對我們學習Java有一定的幫助,感興趣的小伙伴快來跟隨小編一起學習一下吧2021-12-12
maven為MANIFEST.MF文件添加內(nèi)容的方法
這篇文章主要介紹了maven為MANIFEST.MF文件添加內(nèi)容的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12

