java 的 sqlite 的简单使用
介绍
SQLite
是一个极其轻量级、零配置、嵌入式的关系型数据库系统,非常适合用于小型应用、嵌入式系统、桌面和移动应用程序。它的简单性和高效性使其成为快速原型开发和小规模应用的理想选择。然而,对于需要高并发、复杂事务或分布式特性的应用,SQLite
可能不是最合适的选择。
Java项目中的使用
添加依赖
1 | <!-- Spring Boot JPA Starter --> |
若sqlite-jdbc依赖拉不下来,就在pom中添加下面的临时仓库
1 |
|
添加springboot配置
yml 文件配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17spring:
# 数据源配置
datasource:
# database.db 为生成的数据库文件名,可自行修改为xxx.db
url: jdbc:sqlite:database.db
driver-class-name: org.sqlite.JDBC
# sqlite没有用户名和密码,所以username和password留空
username:
password:
# JPA 配置
jpa:
# 此为sqlite的方言配置,可以找其他作者的成品直接使用
database-platform: com.shimu.dialect.SQLiteDialect
hibernate:
# 自动创建表
ddl-auto: update
show-sql: trueproperties 文件配置
1
2
3
4
5
6
7
8
9
10
11
12
13# 数据源配置
## database.db 为生成的数据库文件名,可自行修改为xxx.db
spring.datasource.url=sqlite:database.db
spring.datasource.driver-class-name=org.sqlite.JDBC
## sqlite没有用户名和密码,所以username和password留空
spring.datasource.username=
spring.datasource.password=
# JPA 配置
## 此为sqlite的自定义方言配置,可以找其他作者的成品直接使用
spring.jpa.database-platform=com.shimu.dialect.SQLiteDialect
## 自动创建表
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto
create
: 每次启动应用时都会删除表并重新创建。update
: 每次启动应用时会尝试更新数据库表(如果需要的话),但不会删除已有数据。validate
: 验证数据库结构与实体类是否匹配,不做修改。none
: 不进行任何操作。
使用 update 或 create 的时候,Hibernate 会根据实体类中的定义来自动创建和更新表,但无法直接处理默认值(除非使用 columnDefinition)。
创建自定义方言SQLiteDialect类
1 | import org.hibernate.dialect.Dialect; |
创建实体类
1 | import lombok.Data; |
注解解释
@Id
: 表示为主键id@GeneratedValue
: 自动生成id的值@Column
属性 默认值 描述 name
field name
指定数据库表中列的名称 nullable
true
指定该列是否允许为 NULL
length
255
指定字符串列的最大长度 unique
false
指定该列的值是否唯一 insertable
true
指定是否在插入时包含该列 updatable
true
指定是否在更新时修改该列 columnDefinition
null
指定列的数据库定义(例如类型、默认值) precision
null
指定数字类型字段的总位数 scale
null
指定数字类型字段的小数位数
创建repository类
UserRepository.java
1 |
|
JpaRepository
1 |
|
其中 JpaRepository<T, ID>
的泛型 T
是实体,ID
是主键id
使用repository操作sqlite
- 创建
UserService
1
// 省略
- 创建
UserServiceImpl
1
2
3
4
5
6
7
8
9
10
11
12
13
public class UserServiceImpl implements UserService{
private UserRepository userRepository;
// 新增
public void save(User user) {
userRepository.saveAndFlush(user);
}
// 省略
}
参考文章
SQLiteDialect
来源:https://blog.51cto.com/u_13706148/6031121