SpringBoot加载SQLite数据源方式
作者:咖啡Beans
文章介绍了SpringBoot中配置SQLite数据源的流程,包括DBeaver连接数据库、执行建表与数据插入、引入依赖、初始化连接、定义实体类与Mapper,以及测试查询操作,同时提及多数据源适配的扩展方式
摘要
本文演示SpringBoot中单独使用SQLite数据源的场景写法。
示例步骤
1)打开dbeaver选择sqlite连接

- 选择自行创建的db文件地址

2)执行建表语句,并新增数据
-- 用工具连接sqlite库,执行建表DDL初始化数据库 -- 文件存放在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数据源连接配置
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>
* 初始化数据源
*/
@Slf4j
@Configuration
public class SqliteDbConfig {
@Autowired
private DataSource dataSource;
@Autowired
private HikariDataSourceCreator dataSourceCreator; //需要显式指定HikariDataSourceCreator
@PostConstruct
public void initDatasource() {
log.info("===开始数据源初始化===");
File file = FileUtil.file(ResourceUtil.getResource("sqlite/my_sqlite.db")); // 获取sqlite数据库文件
DataSourceProperty dataSourceProperty = new DataSourceProperty(); // 创建数据源属性对象
dataSourceProperty.setUrl("jdbc:sqlite:" + file.getAbsolutePath()); // 设置数据库连接URL
dataSourceProperty.setDriverClassName("org.sqlite.JDBC"); // 设置数据库驱动类名
DynamicRoutingDataSource ds = (DynamicRoutingDataSource) dataSource; // 获取动态数据源实例
DataSource masterDataSource = dataSourceCreator.createDataSource(dataSourceProperty); // 根据属性创建数据源
ds.addDataSource("master", masterDataSource); // 添加数据源到动态数据源中,命名为master
log.info("===数据源初始化完毕===");
}
/*
启动输出日志:
c.b.d.d.DynamicRoutingDataSource : dynamic-datasource initial loaded [0] datasource,Please add your primary datasource or check your configuration
org.coffeebeans.config.SqliteDbConfig : ===开始数据源初始化===
c.b.d.d.DynamicRoutingDataSource : dynamic-datasource - add a datasource named [master] success
org.coffeebeans.config.SqliteDbConfig : ===数据源初始化完毕===
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)定义实体类
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)测试查询
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)]
*/
}
}
总结
以上我们了解了SpringBoot中单独使用SQLite数据源的场景写法,除此之外还有更简便的使用场景,比如多数据源适配。
这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
