简介

今天在对一个系统设计进行技术选型的时候,纠结于是否继续使用H2轻量级数据库。H2虽然是java编写的,也很适用于java编程的数据库,但是之前在使用时还是发现了一些坑,而且用的人并不算多。于是考虑到了另一个数据库——SQLite。

我想试着把springboot项目跟SQLite结合使用,最好是还能结合JPA,但是我发现网上对于整合SQLite+SpringBoot+JPA的文章挺少的,有些写的也比较复杂,于是稍微研究了一下,整理了比较简单的整合版。

SQLite介绍

SQLite是一个C语言编写的轻量级数据库,是一个实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎 ,被广泛应用于安卓端、PC端。

整合步骤


第一步,新建maven项目,添加必要的依赖,只需要springboot的、jpa的和sqlite的。

 <!--springboot的必须依赖-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
    </parent>
    <dependencies>
        <!--启动springmvc的相关配置,springboot的自动配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--jpa-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
    <!--sqlite的必须依赖-->
        <dependency>
            <groupId>org.xerial</groupId>
            <artifactId>sqlite-jdbc</artifactId>
            <version>3.30.1</version>
        </dependency>
        <dependency>
            <groupId>com.github.gwenn</groupId>
            <artifactId>sqlite-dialect</artifactId>
            <version>0.1.0</version>
        </dependency>
    </dependencies>

第二步,新建application.properties文件:

# Sqlite
spring.datasource.driver-class-name=org.sqlite.JDBCspring.datasource.url=jdbc:sqlite:F:/IdeaProject/jserver/db.dbspring.jpa.hibernate.ddl-auto=updatespring.jpa.show-sql=true

第三步,编写springboot启动类

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

第四步,编写数据表对应的实体类User.java

import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

//表明这是个需要生成数据表的类
@Entity
public class User {
	// 定义主键id
    @Id
	// 声明一个策略通用生成器,name为”system-uuid”,策略strategy为”uuid”。
    @GenericGenerator(name = "system-uuid", strategy ="uuid")
	// 用generator属性指定要使用的策略生成器。
    @GeneratedValue(generator = "system-uuid")
    private String id;
    private String name;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

第五步,编写实现User实体增删改查的接口类

@RestController
public class UserController {
    @Autowired
    private UserRepository userRepository;
    /**
     * 新增一条数据
     * @param name
     * @return
     */
    @RequestMapping("/add")
    public User add(String name){
        User user = new User();
        user.setName(name);
        return userRepository.save(user);
    }
    /**
     * 查询所有数据
     * @return
     */
    @RequestMapping("/list")
    public Iterable<User> list(){
        Iterable<User> all = userRepository.findAll();
        return all;
    }
}

最后,启动springboot项目,发现项目目录下多了一个test.db文件,也就是sqlite数据库文件,项目整体结构如下:

测试使用


打开浏览器,分别输入 http://localhost:8080/add?name=testhttp://localhost:8080/list 进行测试。

使用可视化工具操作SQLite

既然test.db文件就是生成的数据库文件,那么有没有什么办法能直接打开这个文件进行可视化操作数据呢?官方提供了一个工具—— DB Browser for SQLite

可在 https://sqlitebrowser.org/dl/ 下载合适的版本,下载后,打开程序界面,点击打开数据库,选择test.db文件即可

您可能感兴趣的: