SpringBoot加载SQLite数据源方式

 更新时间:2025年09月12日 09:07:37   作者:咖啡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数据源的场景写法,除此之外还有更简便的使用场景,比如多数据源适配。

这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 浅谈Spring Cloud Netflix-Ribbon灰度方案之Zuul网关灰度

    浅谈Spring Cloud Netflix-Ribbon灰度方案之Zuul网关灰度

    这篇文章主要介绍了浅谈Spring Cloud Netflix-Ribbon灰度方案之Zuul网关灰度,想了解Ribbon灰度的同学可以参考下
    2021-04-04
  • Maven配置文件修改及导入第三方jar包的实现

    Maven配置文件修改及导入第三方jar包的实现

    本文主要介绍了Maven配置文件修改及导入第三方jar包的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • Java编程redisson实现分布式锁代码示例

    Java编程redisson实现分布式锁代码示例

    这篇文章主要介绍了Java编程redisson实现分布式锁代码示例,小编觉得还是比较不错的,这里给大家分享下,供需要的朋友参考。
    2017-10-10
  • Java异步线程中的CompletableFuture与@Async详解

    Java异步线程中的CompletableFuture与@Async详解

    这篇文章主要介绍了Java异步线程中的CompletableFuture与@Async详解,CompletableFuture是java中提供的一个异步执行类,@Async是Spring提供的异步执行方法,当调用方法单独开启一个线程进行调用,需要的朋友可以参考下
    2024-01-01
  • Java日常练习题,每天进步一点点(36)

    Java日常练习题,每天进步一点点(36)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-07-07
  • SpringBoot整合OpenCV的实现示例

    SpringBoot整合OpenCV的实现示例

    这篇文章主要介绍了SpringBoot整合OpenCV的实现示例。文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Java中的引用类型和使用场景详细

    Java中的引用类型和使用场景详细

    这篇文章介绍的是Java中的引用类型和使用场景,主要内容展开Java中的引用类型,有强引用、软引用 、弱引用、虚引用,需要的朋友可以参考一下
    2021-10-10
  • springboot项目中分页查询的使用示例解析

    springboot项目中分页查询的使用示例解析

    本文详细讲解SpringBoot中两种主流分页方案:MyBatis+PageHelper和MyBatisPlus的实现方式、原理、优缺点及实际应用场景,内容涵盖配置、代码示例、注意事项和对比总结,感兴趣的朋友一起看看吧
    2025-04-04
  • 详述IntelliJ IDEA提交代码前的 Code Analysis 机制(小结)

    详述IntelliJ IDEA提交代码前的 Code Analysis 机制(小结)

    本篇文章主要介绍了详述IntelliJ IDEA提交代码前的 Code Analysis 机制(小结),具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-11-11
  • Spring Boot 将yyyy-MM-dd格式的文本字符串直接转换为LocalDateTime出现的问题

    Spring Boot 将yyyy-MM-dd格式的文本字符串直接转换为LocalDateTime出现的问题

    这篇文章主要介绍了Spring Boot 将yyyy-MM-dd格式的文本字符串直接转换为LocalDateTime出现的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09

最新评论