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)是面向对象软件设计中的一种结构型设计…...
破解海外业务困局:新加坡服务器托管与跨境组网策略
在当今全球化商业蓬勃发展的浪潮之下,众多企业将目光投向海外市场,力求拓展业务版图、抢占发展先机。而新加坡,凭借其卓越的地理位置、强劲的经济发展态势以及高度国际化的营商环境,已然成为企业海外布局的热门之选。此时…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...
通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...
