当前位置: 首页 > news >正文

SQLite使用入门

SQLite数据库概述

在某些场景下使用SQLite文件数据库替代MySQL数据库是非常值得的,比如存储的数据量可控,业务查询简单。
相比起MySQL,PostgreSQL这样的大型数据库,SQLite文件数据库仅支持有限的数据类型;SQLite支持的SQL语法与MySQL/PostreSQL也有不尽相同,关于SQLite的介绍参考SQLite 教程。

在Spring Boot框架中使用SQLite数据库

基础配置

组件依赖:

<!-- 使用JDBC访问 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId>
</dependency><!-- SQLite JDBC驱动 -->
<dependency><groupId>org.xerial</groupId><artifactId>sqlite-jdbc</artifactId><version>3.44.1.0</version>
</dependency><!-- 集成MyBatis -->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${version.mybatis.starter}</version>
</dependency>

数据源配置:

@Configuration
public class DataSourceConfig {@Beanpublic DataSource dataSource() {SQLiteDataSource dataSource = new SQLiteDataSource();// 指定SQLite数据库文件地址dataSource.setUrl("jdbc:sqlite:C:\\Users\\test\\sample.db");return dataSource;}
}

MyBatis配置:

@Configuration
@MapperScan("com.sample.mapper")
public class MyBatisConfig {@Beanpublic SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();sessionFactory.setDataSource(dataSource);// 设置MyBatis配置org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();configuration.setMapUnderscoreToCamelCase(true);configuration.getTypeAliasRegistry().registerAliases("com.sample.po");configuration.getTypeHandlerRegistry().register("com.sample.handler");// 设置方言configuration.setDatabaseId("sqlite");sessionFactory.setConfiguration(configuration);sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));return sessionFactory.getObject();}
}

SQLite本身不支持Boolean类型,如果数据实体中存在Boolean类型属性,需要进行类型转换,可以配置全局类型处理器:

package com.sample.handler;import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;@MappedTypes(Boolean.class)
@MappedJdbcTypes(JdbcType.INTEGER)
public class BooleanTypeHandler extends BaseTypeHandler<Boolean> {@Overridepublic void setNonNullParameter(PreparedStatement ps, int i, Boolean parameter, JdbcType jdbcType) throws SQLException {ps.setInt(i, parameter ? 1 : 0);}@Overridepublic Boolean getNullableResult(ResultSet rs, String columnName) throws SQLException {int value = rs.getInt(columnName);return rs.wasNull() ? null : value == 1;}@Overridepublic Boolean getNullableResult(ResultSet rs, int columnIndex) throws SQLException {int value = rs.getInt(columnIndex);return rs.wasNull() ? null : value == 1;}@Overridepublic Boolean getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {int value = cs.getInt(columnIndex);return cs.wasNull() ? null : value == 1;}
}

Spring Boot应用配置配置:

## 应用启动时初始化数据库表
spring.datasource.platform=sqlite
spring.datasource.initialization-mode=always
spring.datasource.schema=classpath:sql/schema.sql## 集成MyBatis
## 检查MyBatis的配置文件
mybatis.check-config-location=true
## 指定MyBatis配置文件路径
mybatis.config-location=classpath:/mybatis-config.xml
## 注册XML映射器
mybatis.mapper-locations=classpath:/mapper/**/*.xml
## 指定POJO别名设置所在包
mybatis.type-aliases-package=com.sample.po
## 指定Java类型处理器所在包
mybatis.type-handlers-package=com.sample.handler
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.executor-type=simple

数据表DDL

将如下创建数据库表的DDL语句保存到classpath:sql/schema.sql文件中。

CREATE TABLE IF NOT EXISTS user (id INTEGER PRIMARY KEY AUTOINCREMENT, -- 主键acct TEXT NOT NULL,                   -- 账号名称age INTEGER NOT NULL,                 -- 年龄addr TEXT NOT NULL,                   -- 地址ctime INTEGER NOT NULL,               -- 创建时间戳mtime INTEGER NOT NULL                -- 修改时间戳
);

完成上述准备工作以后,就可以像使用MySQL那样通过MyBatis操作数据库表了。

SQLite访问工具

推荐使用开源,跨平台的SQLite数据库管理工具:SQLiteStudio。

【参考】
SQLite 教程
关于SQLite的注释

http://www.gsyq.cn/news/23640.html

相关文章:

  • Layui框架使用入门
  • The 2024 ICPC Asia Hangzhou Regional Contest
  • 手机也能用的在线p图网站,大图轻松处理
  • CF2135 C. By the Assignment
  • 触想参与国家标准起草,助力行业规范化发展
  • Burp Suite Professional 2025.10 发布 - Web 应用安全、测试和扫描
  • F5 BIG-IP 15.1.10.8 - 领先的应用交付与安全服务
  • XPath索引定位深度解析://X[n]与(//X)[n]的本质区别
  • 2025年10月波形护栏厂家推荐榜单:基于公开数据的中立对比与选购参考
  • Index of /python/
  • 2025年10月项目管理工具推荐榜:十款主流平台深度对比与选购指南
  • GRPO
  • 2025年10月止痒控油洗发水评测推荐:聚焦头皮屏障修复与临床验证的排名解析
  • 2025年10月石墨电极厂家推荐排名:晶碳科技产品矩阵与合规资质透视
  • 2025年10月领先品牌认证机构推荐榜:尚普与华信人深度对比评测
  • RM500U-EA
  • 2025年10月槲皮素产品推荐榜:五款热门单品深度对比与中立评测
  • System.Windows.Forms.DataVisualization.Charting 完全指南
  • 区间压缩dp(poj3254)
  • 完整教程:C++STL之list
  • 13 Static 关键字的作用
  • DS:一个处理php前端数据的实用类
  • rk3399 安卓7 添加 exfat 格式U 盘支持
  • 2025年10月ai优化推荐对比榜:十强服务商数据化拆解与选择策略
  • 深入解析:图书馆自习室|基于SSM的图书馆自习室座位预约小程序设计与实现(源码+数据库+文档)
  • 21-java-grpc-demo-1
  • 【AI绘画】你有多久没有打开SD了?
  • 2025年10月geo优化供应商推荐榜:十强对比评测与中立选购指南
  • 标准差和方差
  • 2025年10月geo优化推荐榜单:十强服务商全维度对比与中立选购指南