前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springboot集成sqlite数据库

springboot集成sqlite数据库

作者头像
用户10125653
发布2022-11-10 21:54:04
2.9K0
发布2022-11-10 21:54:04
举报
文章被收录于专栏:changechange

安装sqlite工具

下载连接:https://www.sqlite.org/download.html

  • 下载工具包sqlite-dll-win32-x86-3370000.zip和sqlite-tools-win32-x86-3370000.zip

创建数据文件

  • 解压后进入sqlite-tools-win32-x86-3370000文件下,运行sqlite3.exe,执行命令新建db数据文件。

.open test.db

image.png
image.png
image.png
image.png

格式化输出

  • 执行命令

.header on

.mode column

.timer on

  • 展示效果
image.png
image.png

连接数据sqlite

navicat 连接数据sqlite

image.png
image.png

jdbc 连接sqlite

  • 导入依赖
代码语言:javascript
复制
 implementation 'org.xerial:sqlite-jdbc:3.28.0'
 implementation 'p6spy:p6spy:3.8.7'
代码语言:javascript
复制
#sqlite
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.driver-class-name= com.p6spy.engine.spy.P6SpyDriver
spring.datasource.url=jdbc:p6spy:sqlite:D:\\work\\sqllite\\sqlite-tools-win32-x86-3370000\\crpt.db
# 最小空闲连接数量
spring.datasource.hikari.minimum-idle=1
# 空闲连接存活最大时间,默认600000(10分钟)
server.jetty.connection-idle-timeout=180000
# 连接池最大连接数,默认是10
spring.datasource.hikari.maximum-pool-size=1
# 此属性控制从池返回的连接的默认自动提交行为,默认值:true
spring.datasource.hikari.auto-commit=true
# 连接池名称

# 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
spring.datasource.hikari.max-lifetime=60000
# 数据库连接超时时间,默认30秒,即30000
spring.datasource.hikari.connection-timeout=30000

ikari.connection-timeout=30000
#连接测试查询
spring.datasource.hikari.connection-test-query=SELECT 1

注意:spring.datasource.url数据库连接也可以用相对路径方便测试,部署时候使用相对路径时将sqlite一并打入到相应的路径就可以了。

spring.datasource.url:jdbc:p6spy:sqlite:resource:sqlite/crpt.db

  • 动态配置sqlite数据源
代码语言:javascript
复制
@Configuration
@Slf4j
public class DataSourceConfiguration {


    @Bean
    public DataSource getDataSource() {
        DataSourceBuilder<?> dataSourceBuilder = DataSourceBuilder.create();
        dataSourceBuilder.driverClassName("com.p6spy.engine.spy.P6SpyDriver");
        dataSourceBuilder.url("jdbc:p6spy:sqlite:" + NativeLoader.DbUrl);
        return dataSourceBuilder.build();
    }
}

此方法需要在bean注入之前给NativeLoader.DbUrl赋值即可

创建数据表,默认main数据库,没必要再附加其他数据库

sqlite数据类型

  • INTEGER 值是一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中。 亲和类型: INT INTEGER TINYINT SMALLINT MEDIUMINT BIGINT UNSIGNED BIG INT INT2 INT8
  • REAL 值是一个浮点值,存储为 8 字节的 IEEE 浮点数字。 亲和类型: REAL DOUBLE DOUBLE PRECISION FLOAT
  • TEXT 值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。 亲和类型: CHARACTER(20) VARCHAR(255) VARYING CHARACTER(255) NCHAR(55) NATIVE CHARACTER(70) NVARCHAR(100) TEXT CLOB
  • BLOB 值是一个 blob 数据,完全根据它的输入存储。 亲和类型: BLOB no datatype specified
  • Date 与 Time 数据类型 TEXT 格式为 "YYYY-MM-DD HH:MM:SS.SSS" 的日期。 REAL 从公元前 4714 年 11 月 24 日格林尼治时间的正午开始算起的天数。 INTEGER 从 1970-01-01 00:00:00 UTC 算起的秒数。
  • 处理java实体类中 JSONObject 类型 和 LocalDateTime 类型,类型转换错误问题
代码语言:javascript
复制
@EqualsAndHashCode(callSuper = true)
@Data
@TableName(autoResultMap = true)
public class Combo extends Model<Combo> {

    @ApiModelProperty(value = "逻辑图")
    @TableField(typeHandler = JacksonTypeHandler.class)
    private JSONObject topology;


    @ApiModelProperty(value = "时间")
    @TableField(typeHandler = LocalDateTypeHandler.class)
    private LocalDateTime localDateTime;
  • 创表语句和mysql差异不大
代码语言:javascript
复制
DROP TABLE IF EXISTS "equip";
CREATE TABLE "equip" (
  "id" integer,
  "is_bpa" integer,
  "equip_type" integer,
  "type_str" TEXT(2),
  "name" TEXT(50),
  "del_flag" integer(1),
  "attributes" TEXT,
  "update_time" TEXT,
  "create_time" TEXT,
  PRIMARY KEY ("id")
);

基本表创建完成后可以和mybatis结合,增删查改和MySQL无异,如果有特殊语句自行查询,最后提一点,sqlite支持多线程查询,但不支持多线程修改,不然会抛出异常[SQLITE_BUSY] The database file is locked (database is locked)

数据恢复

  • 在服务启动目录下sqlite 会自动生产spy.log
image.png
image.png

根据时间戳查找某时刻需要恢复的数据

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装sqlite工具
  • 创建数据文件
  • 格式化输出
  • 连接数据sqlite
  • 数据恢复
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档