
SQLite 是一种嵌入式关系型数据库管理系统RDBMS使用 C 语言开发以其简单性、轻量级和零配置而闻名。不需要独立的服务器可以直接嵌入到应用中。支持事务支持各种编程语言。是移动应用和嵌入式系统的首选数据库解决方案。本文将会带你了解如何在 Spring Boot 中配置和使用 SQLite。创建 Spring Boot 应用创建一个示例 Spring Boot 应用。在pom.xml添加spring-boot-starter-jdbc和 SQLite 驱动 sqlite-jdbc 依赖dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-jdbc/artifactId /dependency dependency groupIdorg.xerial/groupId artifactIdsqlite-jdbc/artifactId /dependencysqlite-jdbc已经被 Spring Boot 纳入了版本控制所以在项目继承了spring-boot-starter-parent的情况下添加此依赖不用声明版本号。配置属性在application.yaml中配置如下属性spring: datasource: type: com.zaxxer.hikari.HikariDataSource driver-class-name: org.sqlite.JDBC url: jdbc:sqlite:D:\\app.db使用默认的数据源实现HikariDataSource。通过driver-class-name属性指定 SQLite 的驱动类。url配置指定了 SQLite 数据库文件的位置可以是相对路径或者绝对路径。如果文件不存在会被创建。数据管理测试得益于 Spring Boot 对数据源开箱即用的支持完成上述配置后SQLite 数据库已经就绪可以使用了。创建测试类import java.time.LocalDateTime; import java.util.Map; import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.jdbc.core.ColumnMapRowMapper; import org.springframework.jdbc.core.JdbcTemplate; SpringBootTest(webEnvironment WebEnvironment.RANDOM_PORT) public class DemoApplicationTests { static final Logger log LoggerFactory.getLogger(DemoApplicationTests.class); Autowired JdbcTemplate jdbcTemplate; Test public void test() throws Exception { // 1、首先创建数据表 String ddl CREATE TABLE user ( id INTEGER PRIMARY KEY NOT NULL, name TEXT, create_at TEXT ); ; this.jdbcTemplate.execute(ddl); // 2、插入一条数据 int ret this.jdbcTemplate.update(INSERT INTO user (id, name, create_at) VALUES (?, ?, ?);, new Object[] {1, springdoc, LocalDateTime.now()}); log.info(插入数据{}, ret); // 3、检索一条数据 MapString, Object user this.jdbcTemplate.queryForObject(SELECT * FROM user WHERE id ?, new ColumnMapRowMapper(), 1L); log.info(检索数据{}, user); } }首先在测试类中注入JdbcTemplate这是由 Spring Data Jdbc Stater 自动配置的用于操作 SQLite 数据库。计算机科学接着执行 DDL 语句在数据库中创建user表有三个字段id、name和create_at其中id是 INTEGER 类型、主键且不能为 NULL。后面两个字段则都是 TEXT 类型。DDL 语句的声明使用了 JDK 15 引入的新特性 “文本块”。然后执行INSERT语句往表中插入一条记录通过?占位符绑定位置参数返回受影响的行数。最后执行SELECT查询从数据库中检索上一步插入的记录。使用ColumnMapRowMapperMapper 把查询结果封装为MapString, Objectkey 是列名称value 是对应的值。SQLite 没有一个单独的用于存储日期、时间的类型。但 SQLite 能够把日期和时间存储为 TEXT、REAL 或 INTEGER 值。TEXT格式为 “YYYY-MM-DD HH:MM:SS.SSS” 的日期。REAL从公元前 4714 年 11 月 24 日格林尼治时间的正午开始算起的天数。INTEGER从 1970-01-01 00:00:00 UTC 算起的秒数。执行测试控制台输出的日志如下INFO 18800 --- [ main] c.s.demo.test.DemoApplicationTests : 插入数据1 INFO 18800 --- [ main] c.s.demo.test.DemoApplicationTests : 检索数据{id1, namespringdoc, create_at2023-11-14T19:28:17.135435300}输出结果符合预期整合成功