springboot环境下配置使用sqlite数据库方式

 更新时间:2024年05月22日 10:24:56   作者:一路1向北  
这篇文章主要介绍了springboot环境下配置使用sqlite数据库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

springboot环境配置使用sqlite数据库

在springboot环境下,使用mybatis配置sqlite数据库。

pom文件导入mybatis和sqlite依赖

<dependency>
       <groupId>org.xerial</groupId>
       <artifactId>sqlite-jdbc</artifactId>
       <version>3.21.0.1</version>
</dependency>
<dependency>
       <groupId>org.mybatis.spring.boot</groupId>
       <artifactId>mybatis-spring-boot-starter</artifactId>
       <version>1.3.2</version>
</dependency>

application.properties配置

spring.datasource.driver-class-name=org.sqlite.JDBC
spring.datasource.url=jdbc:sqlite::resource:static/sqllite/web_manage.db
spring.datasource.username=
spring.datasource.password=

mybatis.mapper-locations=classpath:static/mapper/*.xml

具体的url等路径根据实际情况填写,若是引用项目内的db文件,必须以jdbc:sqlite::resource: 开头,后面填写存放路径,一般放在static下的文件内。

使用

接下来就像mybatis配置mysql数据库完成后一样,进行数据的操作即可,sql语句大同小异。

Springboot集成sqlite3遇到的问题

使用背景

需要做C/S系统,数据库选择文档型的sqlite3

在使用过程中遇到了一些问题

1.sqlite3仅支持数据库单连接

在最开始的时候由于直接粘贴复制,导致在每次停止服务后数据库都会被锁,报“[SQLITE_BUSY] The database file is locked (database is locked)”异常,后经排查,是配置了两个数据源,导致sqlite3数据库死锁。

sqlite3其本质是文档型数据库,在启动项目之后,无法再用数据库连接工具连接到数据库。

在对数据库操作时亦如此,它不支持并行操作,所以在使用多线程操作时可能会报“[SQLITE_BUSY] The database file is locked (database is locked)”异常。

2.在删除库中的数据之后,数据库占用空间未减小

由于我是将数据库嵌入C/S系统,同时需要对库的数据进行清理,所以需要在删除之后清除所占内存

原因:从Sqlite删除数据后,未使用的磁盘空间会被添加到一个内在的”空闲列表”中用于存储你下次插入的数据。磁盘空间并没有丢失。但是也不向操作系统返回磁盘空间。

解决方案:

方案1.删除后手动执行VACUUM命令

由于我是通过springboot集成的,所以在清空数据库之后,新加一条清空数据库的指令

<update id="vacuum">
        VACUUM
  </update>

方案2.在数据库文件建成中,将auto_vacuum设置成“1”。

注意:只有在数据库中未建任何表时才能改变auto-vacuum标记。试图在已有表的情况下修改不会导致报错。

当开启auto-vacuum,当提交一个从数据库中删除除数据的事物时,数据库文件自动收缩。

数据库会在内部存储一些信息以便支持这一功能,这使得数据库文件比不开启该选项时稍微大一些。

推荐使用方案1

总结

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

相关文章

  • JVM 参数配置详细介绍

    JVM 参数配置详细介绍

    这篇文章主要介绍了JVM 参数配置详细介绍的相关资料,需要的朋友可以参考下
    2017-02-02
  • Java中的异常和处理机制实例详解

    Java中的异常和处理机制实例详解

    这篇文章主要介绍了Java中的异常和处理机制,结合实例形式详细分析了Java异常与处理机制的相关概念、原理、用法及操作注意事项,需要的朋友可以参考下
    2019-05-05
  • java中成员变量与局部变量区别分析

    java中成员变量与局部变量区别分析

    这篇文章主要介绍了java中成员变量与局部变量区别,较为详细的分析了java中成员变量与局部变量的功能、用法与区别,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • 一篇文章带你了解JAVA面对对象应用

    一篇文章带你了解JAVA面对对象应用

    Java是一门面向对象的语言。对象是Java程序中的基本实体。除了对象之外Java程序同样处理基本数据。下面这篇文章主要给大家总结了关于Java中面向对象的知识点,需要的朋友可以参考借鉴,下面来一起看看吧
    2021-08-08
  • Java由浅入深讲解继承上

    Java由浅入深讲解继承上

    继承就是可以直接使用前辈的属性和方法。自然界如果没有继承,那一切都是处于混沌状态。多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作
    2022-04-04
  • java使用mybatis调用存储过程返回一个游标结果集方式

    java使用mybatis调用存储过程返回一个游标结果集方式

    这篇文章主要介绍了java使用mybatis调用存储过程返回一个游标结果集方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • springboot实现图片上传与下载功能

    springboot实现图片上传与下载功能

    这篇文章主要为大家详细介绍了后端spring项目经常要做的功能,实现图片上传和下载,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-12-12
  • 关于Spring中的三级缓存解析

    关于Spring中的三级缓存解析

    这篇文章主要介绍了关于Spring中的三级缓存,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • SpringBoot 整合mapstruct的实现步骤

    SpringBoot 整合mapstruct的实现步骤

    这篇文章主要介绍了SpringBoot整合mapstruct,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Java实现实时监控目录下文件变化的方法

    Java实现实时监控目录下文件变化的方法

    今天小编就为大家分享一篇关于Java实现实时监控目录下文件变化的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03

最新评论