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数据源的场景写法,除此之外还有更简便的使用场景,比如多数据源适配。

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

相关文章

  • Java使用BouncyCastle加密

    Java使用BouncyCastle加密

    本文主要介绍了Java使用BouncyCastle加密,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 如何使用java给局域网的电脑发送开机数据包

    如何使用java给局域网的电脑发送开机数据包

    这篇文章主要为大家详细介绍了如何使用java给局域网的电脑发送开机数据包,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-09-09
  • SpringMVC数据输出相关知识总结

    SpringMVC数据输出相关知识总结

    今天带大家学习SpringMVC的相关知识,文中对SpringMVC数据输出作了非常详细的代码示例,对正在学习的小伙伴们很有帮助,需要的朋友可以参考下
    2021-06-06
  • LRU算法及Apache LRUMap源码实例解析

    LRU算法及Apache LRUMap源码实例解析

    这篇文章主要给大家介绍了关于LRU算法及Apache LRUMap源码解析的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-11-11
  • Java 滑动窗口最大值的实现

    Java 滑动窗口最大值的实现

    这篇文章主要介绍了Java 滑动窗口最大值,给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。感兴趣的可以了解一下
    2021-05-05
  • java获取时间的方法总结

    java获取时间的方法总结

    以下是对java中获取时间的几种方法进行了详细的分析介绍,需要的朋友可以参考下
    2013-07-07
  • 解决springMVC 跳转js css图片等静态资源无法加载的问题

    解决springMVC 跳转js css图片等静态资源无法加载的问题

    下面小编就为大家带来一篇解决springMVC 跳转js css图片等静态资源无法加载的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Java递归运行的机制:递归的微观解读图文分析

    Java递归运行的机制:递归的微观解读图文分析

    这篇文章主要介绍了Java递归运行的机制:递归的微观解读,结合图文形式详细分析了java递归运行的原理、机制与相关注意事项,需要的朋友可以参考下
    2020-03-03
  • Spring 中的 @PathVariable 注解及应用场景分析

    Spring 中的 @PathVariable 注解及应用场景分析

    @PathVariable注解是 Spring 框架中一个非常实用的注解,它可以帮助我们轻松地从 URL 中提取参数,从而实现 RESTful API 的开发,通过本文的介绍,我们了解了@PathVariable注解的基本使用方法和高级用法,以及它的应用场景,感兴趣的朋友跟随小编一起看看吧
    2025-05-05
  • spring中AOP 注解开发示例详解

    spring中AOP 注解开发示例详解

    这篇文章主要介绍了spring中AOP注解开发的相关资料,文中介绍的很详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02

最新评论