SQLite本地数据库的简介和适用场景——集成SpringBoot的图文说明
前言:现在项目普遍使用的数据库都是
MySQL
,而有些项目实际上使用SQLite
既足矣。在一些特定的项目中,要比MySQL
更适用。
这一篇文章简单的介绍一下SQLite
,对比MySQL
的优缺点、以及适用的项目类型和集成SpringBoot
。
1. SQLite 简介
SQLite 是一种轻量级、嵌入式的关系型数据库管理系统,具有以下特点:
- 单文件存储:所有的数据库对象(如表、索引、视图等)都存储在一个普通的文件中,便于移动和备份。
- 无服务器架构:无需独立的服务器进程,数据库引擎直接嵌入应用程序中运行,极大地简化了部署。
- 零配置:不需要安装或配置,直接拷贝文件即可使用。
- 支持事务:完全支持 ACID(原子性、一致性、隔离性、持久性)事务机制,保证数据完整性。
- 跨平台:SQLite 数据库文件可以在不同操作系统之间无缝迁移。
- 开放源码:SQLite 是开源的,遵循公共领域协议,免费供个人和商业项目使用。
2. 对比MySQL的相对优缺点
1. SQLite 的相对优点
- 轻量级与便捷性:
- 无服务器架构:SQLite 不需要安装服务器,也无需运行单独的服务程序,直接嵌入到应用程序中。
- 零配置:使用时无需复杂的配置,只需引入库文件即可开始操作。
- 单文件存储:
- SQLite 的数据库存储为单个文件,便于迁移和备份。
- 适合嵌入式设备或小型应用程序。
- 资源占用小:
- SQLite 的代码库很小(通常小于 1MB),对系统资源的占用极低。
- 特别适合内存和存储空间有限的设备(如 IoT 设备、移动应用)。
- 跨平台兼容性:
- SQLite 的数据库文件在不同操作系统之间完全兼容,无需额外调整。
- 易用性高:
- 适合原型设计和快速开发,减少环境配置成本。
- 提供简单的 API,适合初学者和小型项目。
2. SQLite 的相对缺点
- 性能限制:
- 不擅长处理高并发场景,尤其是多写入操作时可能出现锁定问题。
- 在大型数据集(如 GB 级或更大数据)和复杂查询上性能不如 MySQL。
- 功能限制:
- 不支持存储过程、触发器(功能较简单)、视图等高级功能。
- 不具备复杂的权限管理机制,没有用户角色划分,适合单用户场景。
- 安全性较低:
- SQLite 没有内置的用户管理和身份验证机制,依赖应用程序自身控制访问权限。
- 不适合需要高安全性或多用户权限管理的场景。
- 缺乏扩展性:
- SQLite 设计为单机数据库,不支持分布式架构或主从复制。
- 无法满足大规模企业级应用的需求。
- 并发能力不足:
- SQLite 采用数据库级别锁,写入操作时会阻塞其他操作,无法处理高并发写入需求。
- 相比 MySQL 的行级锁,事务管理能力较弱。
- 数据类型较少:
- 没有date、decimal、json等数据类型。(有处理时间的函数)
3. 应用场景
- 嵌入式开发:广泛用于移动应用(如 Android 和 iOS)、IoT 设备等。
- 桌面软件:如浏览器(Google Chrome、Firefox)、媒体播放器等。
- 快速开发和测试:适合小型应用或开发中的原型设计。
- 只读数据库:适合存储小型静态数据(如配置文件或数据字典)。
- 做配置文件:一些桌面端、APP、linux应用服务的配置文件。
4. 集成SpringBoot
1. 使用idea快速创建一个SpringBoot
项目
2. 在pom.xml
中<dependencies>
中添加sqlite
的依赖
<!-- spring-boot-starter-jdbc 和 SQLite 驱动 sqlite-jdbc -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency><groupId>org.xerial</groupId><artifactId>sqlite-jdbc</artifactId><version>3.45.3.0</version>
</dependency>
3. 在application.yaml
中添加sqlite
的配置
spring:datasource:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: org.sqlite.JDBCurl: "${database.jdbc}:${database.path}"# 分别单独指定jdbc和path方便获取对应的值
database:jdbc: "jdbc:sqlite"path: "database.db"
4. 配置DataSourceConfig
,方便全局使用
import ...@Configuration
@Slf4j
public class DataSourceConfig {@Value("${database.jdbc}")private String jdbc;@Value("${database.path}")private String path;@Value("${spring.datasource.driver-class-name}")private String driverClassName;@Value("${project.version}")private String projectVersion;@Autowiredprivate ServletContext servletContext;@SneakyThrows@Beanpublic DataSource dataSource() {/**1、指定sqlite数据文件的具体位置,或者相对位置。2、初始化时,如果文件不存在、则创建文件、创建相应的数据表(初始化数据库)。3、配置dataSource数据源,方便全局使用。4、其他逻辑...**/}}
5. Application
启动类配置
/* 排除自动配置数据源 */
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
- 参数
exclude = {DataSourceAutoConfiguration.class}
:
默认情况下,Spring Boot 会根据类路径中的依赖自动配置数据源(比如HikariDataSource
)。不需要数据库或手动配置数据源,可以通过exclude
参数排除自动配置类。
这里排除了DataSourceAutoConfiguration
,表示应用不会自动配置数据源。
6. 运行SpringBoot
项目
/* 控制台输出 */
Tomcat started on port 8080 (http) with context path ''
Started Application in 3.21 seconds (process running for 4.6)
=================== spring boot 启动成功! =====================
- 在项目的目录下已经生成了
SQLite
的数据文件,至此SpringBoot
集成SQLite
完成
结束语:SQLite 的设计目标是轻量、高效、易用、方便迁移,适合需要嵌入式数据库的应用程序和小型项目。
—— 如果觉得文章有用💪,点个赞,支持一下👏!——
相关文章:

SQLite本地数据库的简介和适用场景——集成SpringBoot的图文说明
前言:现在项目普遍使用的数据库都是MySQL,而有些项目实际上使用SQLite既足矣。在一些特定的项目中,要比MySQL更适用。 这一篇文章简单的介绍一下SQLite,对比MySQL的优缺点、以及适用的项目类型和集成SpringBoot。 1. SQLite 简介 …...
管理面板Ajenti的在Windows10下Ubuntu24.04/Ubuntu22.04里的安装
Ajenti是一款基于Web的开源系统管理控制面板,可用于通过Web浏览器,管理远程系统管理性任务,这一点与 Webmin模块 非常相似。 Ajenti是一款功能非常强大的轻型工具,它提供了快速的、反应灵敏的Web界面,可用于管理小型服…...
在Python如何用Type创建类
文章目录 一,如何创建类1:创建一个简单类2:添加属性和方法3:动态继承父类4:结合元类的使用总结 二.在什么情境下适合使用Type创建类1. **运行时动态生成类**2. **避免重复代码**3. **依赖元类或高级元编程**4. **动态扩…...
Android学习19 -- NDK4--共享内存(TODO)
在安卓的NDK(Native Development Kit)中,C共享内存通常用于不同进程间的通信,或者在同一进程中多线程之间共享数据。这种方法相较于其他形式的IPC(进程间通信)来说,具有更高的性能和低延迟。共享…...

《Cocos Creator游戏实战》非固定摇杆实现原理
为什么要使用非固定摇杆 许多同学在开发摇杆功能时,会将摇杆固定在屏幕左下某一位置,不会让其随着大拇指触摸点改变,而且玩家只有按在了摇杆上才能移动人物(触摸监听事件在摇杆精灵上)。然而,不同玩家的大拇指长度不同…...

RabbitMQ工作模式(详解 工作模式:简单队列、工作队列、公平分发以及消息应答和消息持久化)
文章目录 十.RabbitMQ10.1 简单队列实现10.2 Work 模式(工作队列)10.3 公平分发10.4 RabbitMQ 消息应答与消息持久化消息应答概念配置 消息持久化概念配置 十.RabbitMQ 10.1 简单队列实现 简单队列通常指的是一个基本的消息队列,它可以用于…...

【VScode】第三方GPT编程工具-CodeMoss安装教程
一、CodeMoss是什么? CodeMoss是一款集编程、学习和办公于一体的高效工具。它兼容多种主流平台,包括VSCode、IDER、Chrome插件、Web和APP等,支持插件安装,尤其在VSCode和IDER上的表现尤为出色。无论你是编程新手还是资深开发者&a…...
在JavaScript中,let 和 const有什么不同
在JavaScript中,let 和 const 是用于声明变量的关键字,但它们有一些重要的区别 1.重新赋值: let 声明的变量可以重新赋值。const 声明的变量必须在声明时初始化,并且之后不能重新赋值 let a 10; a 20; // 有效,a 的…...
Mysq学习-Mysql查询(4)
5.子查询 子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL4.1开始引入.在SELECT子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件,查询可以基于一个表或者多个表. 子查询中常用的操作符有ANY(SOME),ALL,IN,EXISTS.子查询可以添加到SELECT,UPD…...

安装torch-geometric库
目录 1.查看 torch 和 CUDA 版本 2.依次下载和 torch 和 CUDA 对应版本的四个依赖库pyg-lib、torch-scatter、torch-sparse、torch-cluster以及torch-spline-conv 3.下载并安装torch-geometric库 1.查看 torch 和 CUDA 版本 查看CUDA版本 nvcc -V 查看pytorch版本 pip s…...
Java数组深入解析:定义、操作、常见问题与高频练习
一、数组的定义 1. 什么是数组 数组是一个容器,用来存储多个相同类型的数据。它属于引用数据类型,可以存储基本数据类型(如int、char)或者引用数据类型(如String、对象)。 2. 数组的定义方式 a. 动态初…...

Docker-构建自己的Web-Linux系统-镜像webtop:ubuntu-kde
介绍 安装自己的linux-server,可以作为学习使用,web方式访问,基于ubuntu构建开源项目 https://github.com/linuxserver/docker-webtop安装 docker run -d -p 1336:3000 -e PASSWORD123456 --name webtop lscr.io/linuxserver/webtop:ubuntu-kde登录 …...

【C语言练习(17)—输出杨辉三角形】
C语言练习(17) 文章目录 C语言练习(17)前言题目题目解析整体代码 前言 杨辉三角形的输出可以分三步,第一步构建一个三角形、第二步根据规律将三角形内容填写、第三步将三角形以等腰的形式输出 题目 请输出一个十行的…...

SpringMVC学习(二)——RESTful API、拦截器、异常处理、数据类型转换
一、RESTful (一)RESTful概述 RESTful是一种软件架构风格,用于设计网络应用程序。REST是“Representational State Transfer”的缩写,中文意思是“表现层状态转移”。它基于客户端-服务器模型和无状态操作,以及使用HTTP请求来处理数据。RES…...

React 第二十节 useRef 用途使用技巧注意事项详解
简述 useRef 用于操作不需要在视图上渲染的属性数据,用于访问真实的DOM节点,或者React组件的实例对象,允许直接操作DOM元素或者是组件; 写法 const inpRef useRef(params)参数: useRef(params),接收的 …...
VIVO Java开发面试题及参考答案
TCP 能不能两次握手? TCP 不能两次握手。 在 TCP 连接建立过程中,三次握手是必不可少的。第一次握手是客户端向服务器发送一个带有 SYN(同步序列号)标志的 TCP 报文段,这个报文段包含了客户端初始的序列号。这一步的主要目的是告诉服务器,客户端想要建立连接,并且让服务…...

C# Winfrom chart图 实例练习
代码太多了我就不展示了,贴一些比较有代表性的 成品效果展示: Excel转Chart示例 简单说一下我的思路 \ 先把Excel数据展示在dataGridView控件上 XLIST 为 X轴的数据 XLIST 为 Y轴的数据 ZLIST 为 展示的数据进行数据处理点击展示即可 // 将Excel数…...

iOS从Matter的设备认证证书中获取VID和PID
设备认证证书也叫 DAC, 相当于每个已经认证的设备的标识。包含了 VID 和 PID. VID: Vendor ID ,标识厂商 PID: Product ID, 标识设备的 根据 Matter 对于设备证书的规定,DAC证书subject应该包含VID 和 PID. 可通过解析 X509 证书读取subject…...

带着国标充电器出国怎么办? 适配器模式(Adapter Pattern)
适配器模式(Adapter Pattern) 适配器模式适配器模式(Adapter Pattern)概述talk is cheap, show you my code总结 适配器模式 适配器模式(Adapter Pattern)是面向对象软件设计中的一种结构型设计…...

破解海外业务困局:新加坡服务器托管与跨境组网策略
在当今全球化商业蓬勃发展的浪潮之下,众多企业将目光投向海外市场,力求拓展业务版图、抢占发展先机。而新加坡,凭借其卓越的地理位置、强劲的经济发展态势以及高度国际化的营商环境,已然成为企业海外布局的热门之选。此时…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...