SpringBoot加載SQLite數(shù)據(jù)源方式
摘要
本文演示SpringBoot中單獨(dú)使用SQLite數(shù)據(jù)源的場(chǎng)景寫法。
示例步驟
1)打開dbeaver選擇sqlite連接

- 選擇自行創(chuàng)建的db文件地址

2)執(zhí)行建表語句,并新增數(shù)據(jù)
-- 用工具連接sqlite庫(kù),執(zhí)行建表DDL初始化數(shù)據(jù)庫(kù) -- 文件存放在src/main/resources/sqlite/my_sqlite.db CREATE TABLE IF NOT EXISTS user ( id INTEGER primary key autoincrement, name VARCHAR, create_time VARCHAR ); INSERT INTO "user" (id, name, create_time) VALUES(1, 'sqlite名字', '2025-01-01 00:00:00');
3)引入依賴
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-tomcat</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
</dependency>
</dependencies>
4)初始化sqlite數(shù)據(jù)源連接配置
package org.coffeebeans.config;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.resource.ResourceUtil;
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
import com.baomidou.dynamic.datasource.creator.DataSourceCreator;
import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
import com.baomidou.dynamic.datasource.creator.hikaricp.HikariDataSourceCreator;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Configuration;
import javax.annotation.PostConstruct;
import javax.sql.DataSource;
import java.io.File;
/**
* <li>ClassName: SqliteDbConfig </li>
* <li>Author: OakWang </li>
* 初始化數(shù)據(jù)源
*/
@Slf4j
@Configuration
public class SqliteDbConfig {
@Autowired
private DataSource dataSource;
@Autowired
private HikariDataSourceCreator dataSourceCreator; //需要顯式指定HikariDataSourceCreator
@PostConstruct
public void initDatasource() {
log.info("===開始數(shù)據(jù)源初始化===");
File file = FileUtil.file(ResourceUtil.getResource("sqlite/my_sqlite.db")); // 獲取sqlite數(shù)據(jù)庫(kù)文件
DataSourceProperty dataSourceProperty = new DataSourceProperty(); // 創(chuàng)建數(shù)據(jù)源屬性對(duì)象
dataSourceProperty.setUrl("jdbc:sqlite:" + file.getAbsolutePath()); // 設(shè)置數(shù)據(jù)庫(kù)連接URL
dataSourceProperty.setDriverClassName("org.sqlite.JDBC"); // 設(shè)置數(shù)據(jù)庫(kù)驅(qū)動(dòng)類名
DynamicRoutingDataSource ds = (DynamicRoutingDataSource) dataSource; // 獲取動(dòng)態(tài)數(shù)據(jù)源實(shí)例
DataSource masterDataSource = dataSourceCreator.createDataSource(dataSourceProperty); // 根據(jù)屬性創(chuàng)建數(shù)據(jù)源
ds.addDataSource("master", masterDataSource); // 添加數(shù)據(jù)源到動(dòng)態(tài)數(shù)據(jù)源中,命名為master
log.info("===數(shù)據(jù)源初始化完畢===");
}
/*
啟動(dòng)輸出日志:
c.b.d.d.DynamicRoutingDataSource : dynamic-datasource initial loaded [0] datasource,Please add your primary datasource or check your configuration
org.coffeebeans.config.SqliteDbConfig : ===開始數(shù)據(jù)源初始化===
c.b.d.d.DynamicRoutingDataSource : dynamic-datasource - add a datasource named [master] success
org.coffeebeans.config.SqliteDbConfig : ===數(shù)據(jù)源初始化完畢===
org.coffeebeans.SqliteTest : Started SqliteTest in 2.668 seconds (JVM running for 3.577)
com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
*/
}
5)定義實(shí)體類
package org.coffeebeans.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
/**
* <li>ClassName: SqliteUser </li>
* <li>Author: OakWang </li>
*/
@Data
@TableName("user")
publicclass SqliteUser implements Serializable {
private static final long serialVersionUID = 6133167221453780808L;
@TableId(type = IdType.AUTO)
private Long id;
@TableField("name")
private String name;
@TableField("create_time")
private String createTime;
}
6)定義Mapper
package org.coffeebeans.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.coffeebeans.entity.SqliteUser;
import java.util.List;
@Mapper
public interface SqliteUserMapper {
@Select("select id,name,create_time as createTime from user where id = 1")
List<SqliteUser> selectBySearchInSqlite();
}
7)測(cè)試查詢
package org.coffeebeans;
import lombok.extern.slf4j.Slf4j;
import org.coffeebeans.mapper.SqliteUserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
/**
* <li>ClassName: org.org.org.coffeebeans.SqliteTest </li>
* <li>Author: OakWang </li>
*/
@Slf4j
@SpringBootTest
public class SqliteTest {
@Autowired
private SqliteUserMapper sqliteUserMapper;
@Test
void test() {
log.info("Sqlite查詢:" + sqliteUserMapper.selectBySearchInSqlite());
/*
Sqlite查詢:[SqliteUser(id=1, name=sqlite名字, createTime=2025-01-01 00:00:00)]
*/
}
}
總結(jié)
以上我們了解了SpringBoot中單獨(dú)使用SQLite數(shù)據(jù)源的場(chǎng)景寫法,除此之外還有更簡(jiǎn)便的使用場(chǎng)景,比如多數(shù)據(jù)源適配。
這些僅為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- SpringBoot+mybatis-plus實(shí)現(xiàn)多數(shù)據(jù)源配置的詳細(xì)步驟
- 在SpringBoot中配置和使用多個(gè)數(shù)據(jù)源方式
- SpringBoot實(shí)現(xiàn)動(dòng)態(tài)切換數(shù)據(jù)源的示例代碼
- SpringBoot動(dòng)態(tài)配置數(shù)據(jù)源的三種實(shí)現(xiàn)方式
- SpringBoot + Druid + Dynamic Datasource 多數(shù)據(jù)源配置方案
- 在SpringBoot項(xiàng)目中動(dòng)態(tài)切換數(shù)據(jù)源和數(shù)據(jù)庫(kù)的詳細(xì)步驟
- SpringBoot項(xiàng)目中多數(shù)據(jù)源配置方法與使用場(chǎng)景
相關(guān)文章
淺談Spring Cloud Netflix-Ribbon灰度方案之Zuul網(wǎng)關(guān)灰度
這篇文章主要介紹了淺談Spring Cloud Netflix-Ribbon灰度方案之Zuul網(wǎng)關(guān)灰度,想了解Ribbon灰度的同學(xué)可以參考下2021-04-04
Maven配置文件修改及導(dǎo)入第三方j(luò)ar包的實(shí)現(xiàn)
本文主要介紹了Maven配置文件修改及導(dǎo)入第三方j(luò)ar包的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
Java編程redisson實(shí)現(xiàn)分布式鎖代碼示例
這篇文章主要介紹了Java編程redisson實(shí)現(xiàn)分布式鎖代碼示例,小編覺得還是比較不錯(cuò)的,這里給大家分享下,供需要的朋友參考。2017-10-10
Java異步線程中的CompletableFuture與@Async詳解
這篇文章主要介紹了Java異步線程中的CompletableFuture與@Async詳解,CompletableFuture是java中提供的一個(gè)異步執(zhí)行類,@Async是Spring提供的異步執(zhí)行方法,當(dāng)調(diào)用方法單獨(dú)開啟一個(gè)線程進(jìn)行調(diào)用,需要的朋友可以參考下2024-01-01
Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(36)
下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你2021-07-07
SpringBoot整合OpenCV的實(shí)現(xiàn)示例
這篇文章主要介紹了SpringBoot整合OpenCV的實(shí)現(xiàn)示例。文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
springboot項(xiàng)目中分頁(yè)查詢的使用示例解析
本文詳細(xì)講解SpringBoot中兩種主流分頁(yè)方案:MyBatis+PageHelper和MyBatisPlus的實(shí)現(xiàn)方式、原理、優(yōu)缺點(diǎn)及實(shí)際應(yīng)用場(chǎng)景,內(nèi)容涵蓋配置、代碼示例、注意事項(xiàng)和對(duì)比總結(jié),感興趣的朋友一起看看吧2025-04-04
詳述IntelliJ IDEA提交代碼前的 Code Analysis 機(jī)制(小結(jié))
本篇文章主要介紹了詳述IntelliJ IDEA提交代碼前的 Code Analysis 機(jī)制(小結(jié)),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-11-11
Spring Boot 將yyyy-MM-dd格式的文本字符串直接轉(zhuǎn)換為L(zhǎng)ocalDateTime出現(xiàn)的問題
這篇文章主要介紹了Spring Boot 將yyyy-MM-dd格式的文本字符串直接轉(zhuǎn)換為L(zhǎng)ocalDateTime出現(xiàn)的問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09

