Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring Boot 中使用 SQLite

Spring Boot 中使用 SQLite

作者头像
编程小白狼
发布于 2024-12-31 00:29:04
发布于 2024-12-31 00:29:04
61900
代码可运行
举报
文章被收录于专栏:编程小白狼编程小白狼
运行总次数:0
代码可运行

在现代的软件开发中,Spring Boot 已成为构建 Java 应用程序的热门框架之一。其简洁的配置、快速的开发周期以及对各种数据库的支持,使得开发者能够高效地创建稳定的应用程序。SQLite 作为一种轻量级的嵌入式数据库,常用于开发、测试和小型应用程序。本文将介绍如何在 Spring Boot 项目中使用 SQLite 数据库。

环境准备 JDK: 确保你的系统上安装了 JDK 8 或更高版本。 Maven/Gradle: 你需要一个构建工具来管理项目依赖。 IDE: 例如 IntelliJ IDEAEclipse,用于开发。 创建 Spring Boot 项目

你可以通过 Spring Initializr 网站(https://start.spring.io/)快速生成一个 Spring Boot 项目。选择以下配置:

Project: Maven Project Language: Java Spring Boot: 最新版本 Project Metadata: Group: com.example Artifact: sqlite-demo Name: sqlite-demo Description: Demo project for Spring Boot with SQLite Package name: com.example.sqlitedemo Dependencies: Spring Web Spring Data JPA H2 Database(先选择这个,之后我们会替换为 SQLite)

生成项目后,解压并导入到你的 IDE 中。

替换 H2 为 SQLite

  1. 修改 pom.xml

首先,移除 H2 数据库的依赖,并添加 SQLite 的依赖:

xml Copy Code

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!-- 添加 SQLite 依赖 -->
<dependency>
    <groupId>org.xerial</groupId>
    <artifactId>sqlite-jdbc</artifactId>
    <version>3.34.0</version> <!-- 请使用最新版本 -->
</dependency>
  1. 配置 application.properties

在 src/main/resources/application.properties 文件中,配置 SQLite 数据库连接:

properties Copy Code

SQLite 数据库配置

spring.datasource.url=jdbc:sqlite:src/main/resources/db/test.db spring.datasource.driver-class-name=org.sqlite.JDBC spring.datasource.username= spring.datasource.password= spring.jpa.database-platform=com.example.sqlitedemo.config.SQLiteDialect

JPA/Hibernate 配置

spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLiteDialect

注意:SQLiteDialect 类是我们需要自定义的,因为 Spring Data JPA 默认不支持 SQLite。

  1. 自定义 SQLiteDialect

在 src/main/java/com/example/sqlitedemo/config 目录下创建一个新的 Java 类 SQLiteDialect:

java Copy Code package com.example.sqlitedemo.config;

import org.hibernate.dialect.Dialect; import org.hibernate.dialect.function.StandardSQLFunction; import org.hibernate.dialect.function.SQLFunctionTemplate; import org.hibernate.type.StandardBasicTypes;

public class SQLiteDialect extends Dialect {

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public SQLiteDialect() {
    registerColumnType(Types.BIT, "integer");
    registerColumnType(Types.TINYINT, "integer");
    registerColumnType(Types.SMALLINT, "integer");
    registerColumnType(Types.INTEGER, "integer");
    registerColumnType(Types.BIGINT, "integer");
    registerColumnType(Types.FLOAT, "real");
    registerColumnType(Types.DOUBLE, "double");
    registerColumnType(Types.DECIMAL, "decimal");
    registerColumnType(Types.NUMERIC, "numeric");
    registerColumnType(Types.CHAR, "char");
    registerColumnType(Types.VARCHAR, "varchar");
    registerColumnType(Types.CLOB, "clob");
    registerColumnType(Types.BLOB, "blob");
    registerColumnType(Types.DATE, "date");
    registerColumnType(Types.TIME, "time");
    registerColumnType(Types.TIMESTAMP, "timestamp");

    registerFunction("concat", new StandardSQLFunction("||", StandardBasicTypes.STRING));
    registerFunction("mod", new SQLFunctionTemplate(StandardBasicTypes.INTEGER, "?1 % ?2"));
    registerFunction("substr", new SQLFunctionTemplate(StandardBasicTypes.STRING, "substr(?1, ?2, ?3)"));
    
    // 添加其他自定义函数,如有需要
}

@Override
public String getNativeIdentifierGeneratorStrategy() {
    return "native";
}

@Override
public boolean supportsIdentityColumns() {
    return true;
}

@Override
public boolean hasDataTypeInIdentityColumn() {
    return true;
}

@Override
public String getIdentityColumnString() {
    return "integer PRIMARY KEY AUTOINCREMENT";
}

@Override
public String getIdentitySelectString() {
    return "SELECT last_insert_rowid()";
}

@Override
public boolean supportsLimit() {
    return true;
}

@Override
public boolean supportsLimitOffset() {
    return true;
}

@Override
public boolean bindLimitParametersInReverseOrder() {
    return true;
}

@Override
public boolean supportsTemporaryTables() {
    return true;
}

@Override
public String getDropTemporaryTableString() {
    return "DROP TABLE IF EXISTS";
}

@Override
public boolean dropTemporaryTableAfterUse() {
    return true;
}

@Override
public boolean supportsCurrentTimestampSelection() {
    return true;
}

@Override
public boolean isCurrentTimestampSupported() {
    return true;
}

@Override
public String getCurrentTimestampSQL() {
    return "CURRENT_TIMESTAMP";
}

@Override
public boolean supportsUnionAll() {
    return true;
}

@Override
public boolean hasAlterTable() {
    return false; // SQLite has limited ALTER TABLE support
}

@Override
public boolean dropConstraints() {
    return false;
}

}

  1. 创建实体类和 Repository

现在你可以创建实体类和相应的 Repository 接口。例如,创建一个简单的 User 实体类:

java Copy Code package com.example.sqlitedemo.model;

import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id;

@Entity public class User {

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String name;
private String email;

// Getters and Setters

}

创建 UserRepository 接口:

java Copy Code package com.example.sqlitedemo.repository;

import com.example.sqlitedemo.model.User; import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> { }

  1. 使用数据库

你可以在你的 Service 或 Controller 中注入 UserRepository 并进行数据库操作。

java Copy Code package com.example.sqlitedemo.service;

import com.example.sqlitedemo.model.User; import com.example.sqlitedemo.repository.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;

import java.util.List;

@Service public class UserService {

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Autowired
private UserRepository userRepository;

public List<User> getAllUsers() {
    return userRepository.findAll();
}

public User saveUser(User user) {
    return userRepository.save(user);
}

}

测试

启动你的 Spring Boot 应用程序,并访问你定义的 API 端点来测试对 SQLite 数据库的操作。

😩抱歉,出了点小问题,请稍后重试

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
重学SpringBoot3-集成Spring Security(四)
在现代应用开发中,安全性和数据管理是两大重要模块。Spring Security 提供了全面的安全解决方案,而 Spring Data JPA 则简化了与数据库的交互。将两者结合,可以在保护应用的同时,轻松实现基于用户身份的访问控制、权限管理和安全的数据存储操作。
CoderJia
2024/10/20
6270
重学SpringBoot3-集成Spring Security(四)
SpringBoot整合JPA+SQLite
在现代Java开发领域,Spring Boot以其便捷的配置、快速的开发启动能力广受青睐,而JPA(Java Persistence API)作为Java持久化规范,提供了强大且优雅的对象关系映射(ORM)方案。SQLite作为轻量级嵌入式数据库,适合在一些小型项目、本地测试场景或者对资源占用要求苛刻的环境下使用。本篇博客将详细介绍如何在Spring Boot项目中整合JPA与SQLite,搭建高效的数据持久化层。
编程小白狼
2024/12/31
8501
Spring-Data-JPA尝鲜:快速搭建CRUD+分页后台实例
JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据。他的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate,TopLink,JDO等ORM框架各自为营的局面。值得注意的是,JPA是在充分吸收了现有Hibernate,TopLink,JDO等ORM框架的基础上发展而来的,具有易于使用,伸缩性强等优点。从目前的开发社区的反应上看,JPA受到了极大的支持和赞扬,其中就包括了Spring与EJB3.0的开发团队。
我没有三颗心脏
2019/02/14
1.8K0
Spring-Data-JPA尝鲜:快速搭建CRUD+分页后台实例
Spring Boot – 使用 ModelMapper 将实体映射到 DTO
在企业应用中,我们使用RESTful服务来建立客户端和服务器之间的通信。总体思路是客户端将请求发送到服务器,服务器用一些响应来响应该请求。一般来说,我们大多数应用程序都具有三个不同的层:Web层、业务层和数据库层。这些层中的对象大多彼此不同。例如,Web层对象与数据库层中的同一对象完全不同。由于数据库对象可能包含 Web 层对象中不需要的字段,例如自动生成的字段、密码字段等。
用户1418987
2023/10/26
1.6K0
Spring Boot – 使用 ModelMapper 将实体映射到 DTO
Spring Boot入门
Spring Boot入门: 使用IDEA创建Spring Boot 项目: 选择 勾选Web 生成项目结构: 例子: package com.example.testboot; import or
二十三年蝉
2018/02/28
8680
Spring Boot入门
Spring Boot 之 MySQL数据库使用
引入依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId>
白墨石
2021/01/13
1.1K0
Spring Boot 之 MySQL数据库使用
spring jpa restful请求示例
postman请求,可以进行GET POST PUT PATCH DELETE请求 http://localhost:8080/ http://localhost:8080/score/1
oktokeep
2024/10/09
1280
spring jpa restful请求示例
Springboot集成sqlite数据库,并使用jpa、Hibernate操作sqlite
之前举例使用jpa、Hibernate多是以mysql为例,这次因为需要使用一个内嵌式数据库,选择了sqlite,网上多是讲一些sqlite的api封装的框架。这里我们还是使用jpa、Hibernate来操作sqlite。
天涯泪小武
2019/01/17
6.8K0
SPRING学习
If you use Maven, visit the Spring Initializr to generate a new project with the required dependencies (Spring Web, Spring Data JPA, and MySQL Driver).
用户3519280
2023/07/07
2490
Spring Boot 构建多租户SaaS平台核心技术指南
笔者从2014年开始接触SaaS(Software as a Service),即多租户(或多承租)软件应用平台;并一直从事相关领域的架构设计及研发工作。机缘巧合,在笔者本科毕业设计时完成了一个基于SaaS的高效财务管理平台的课题研究,从中收获颇多。最早接触SaaS时,国内相关资源匮乏,唯一有的参照资料是《互联网时代的软件革命:SaaS架构设计》(叶伟等著)一书。最后课题的实现是基于OSGI(Open Service Gateway Initiative)Java动态模块化系统规范来实现的。
JAVA葵花宝典
2020/03/10
3K0
Spring Boot 构建多租户SaaS平台核心技术指南
Spring Boot(12):轻松搞定关系型数据库,Spring Boot与JPA的完美结合!
Spring Boot是Spring家族中的一员,也是一个非常重要的组件。Spring Boot的主要目标是简化Spring应用的构建、开发、测试以及部署等过程。Spring Boot提供了一个快速且强大的方式来创建基于Spring的应用程序,并帮助开发者快速构建,减少了很多繁琐的配置工作,使得我们可以专注于业务逻辑的实现。
bug菌
2023/09/13
9310
Spring Boot(12):轻松搞定关系型数据库,Spring Boot与JPA的完美结合!
Spring Boot 最佳实践(五)Spring Data JPA 操作 MySQL 8
JPA(Java Persistence API)Java持久化API,是 Java 持久化的标准规范,Hibernate是持久化规范的技术实现,而Spring Data JPA是在 Hibernate 基础上封装的一款框架。
磊哥
2018/09/07
4.1K0
Spring Boot 最佳实践(五)Spring Data JPA 操作 MySQL 8
三分钟数据持久化:Spring Boot, JPA 与 SQLite 的完美融合
在快节奏的软件开发领域,每一个简化工作流程的机会都不容错过。想要一个无需繁琐配置、能够迅速启动的数据持久化方案吗?这篇文章将是你的首选攻略。在这里,我们将向你展示如何将 Spring Boot 的便捷性、JPA 的强大查询能力和 SQLite 的轻量级特性结合在一起,实现快速而又优雅的数据管理。
未读代码
2024/03/04
1.4K0
三分钟数据持久化:Spring Boot, JPA 与 SQLite 的完美融合
spring-boot-starter-data-jpa + SQLite简单例子(含全部代码)
SQLite官网:http://www.sqlite.org/ SQLite是比 Access 更优秀的文件型数据库,支持复杂的 SQL 语句,支持索引、触发器,速度很快,开源等。
程裕强
2021/11/18
5K0
spring-boot-starter-data-jpa + SQLite简单例子(含全部代码)
Spring Boot 正确中使用JPA实战
JPA 是 JCP 组织发布的 Java EE 标准之一,因此任何声称符合 JPA 标准的框架都遵循同样的架构,提供相同的访问API,这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。
后端码匠
2019/10/24
1.6K0
Spring Boot整合Ehcache实现缓存功能
这里介绍Spring Boot结合JPA,MySQL和Ehcache实现缓存功能,提高程序访问效率。
itlemon
2020/04/03
4.6K0
精通 Spring Boot 系列文(7)
ORM(Object/Relation Mapping,对象/关系型数据库映射)是一种规范,用于描述面向对象语言到关系型数据库的映射。
程序员小猿
2021/01/19
8880
精通 Spring Boot 系列文(7)
Spring Boot 项目从入门到精通实操教程
下面我将基于Spring Boot 3.2和Java 17,使用最新的技术栈和最佳实践,为你提供一个完整的Spring Boot项目实操教程。
啦啦啦191
2025/06/14
6890
Spring Boot 项目从入门到精通实操教程
Maven工程搭建spring boot+spring mvc+JPA
1、maven工程,少不了pom.xml,spring boot的引入可参考官网:
JQ实验室
2022/02/09
5090
Java 最新技术实操指南:从 Java 8 + 特性到 Spring Boot 与 Hibernate 应用实践
以下是结合Java最新技术(Java 8+特性、Spring Boot、Hibernate等)的实操内容,按照考试常见考点分类整理,包含技术说明和代码示例。
啦啦啦191
2025/07/12
1420
Java 最新技术实操指南:从 Java 8 + 特性到 Spring Boot 与 Hibernate 应用实践
相关推荐
重学SpringBoot3-集成Spring Security(四)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档