安装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
格式化输出
- 执行命令
.header on
.mode column
.timer on
- 展示效果
连接数据sqlite
navicat 连接数据sqlite
jdbc 连接sqlite
- 导入依赖
<code style="margin-left:0"> implementation 'org.xerial:sqlite-jdbc:3.28.0' implementation 'p6spy:p6spy:3.8.7'</code>
<code style="margin-left:0">#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</code>
注意:spring.datasource.url数据库连接也可以用相对路径方便测试,部署时候使用相对路径时将sqlite一并打入到相应的路径就可以了。
spring.datasource.url:jdbc:p6spy:sqlite:resource:sqlite/crpt.db
- 动态配置sqlite数据源
<code style="margin-left:0">@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(); } }</code>
此方法需要在bean注入之前给NativeLoader.DbUrl赋值即可
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 类型,类型转换错误问题
<code style="margin-left:0">@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;</code>
- 创表语句和mysql差异不大
<code style="margin-left:0">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") );</code>
基本表创建完成后可以和mybatis结合,增删查改和MySQL无异,如果有特殊语句自行查询,最后提一点,sqlite支持多线程查询,但不支持多线程修改,不然会抛出异常[SQLITE_BUSY] The database file is locked (database is locked)
数据恢复
- 在服务启动目录下sqlite 会自动生产spy.log
根据时间戳查找某时刻需要恢复的数据
未经允许不得转载:木盒主机 » springboot集成sqlite数据库