sqlite读取文件初始库表

简介: sqlite读取文件初始库表

一旦发现英雄也会落井,投石的人会格外勇敢,人群会格外拥挤。——《芳华》

目录结构:

GAV

<dependency>
    <groupId>com.ejlchina</groupId>
    <artifactId>bean-searcher-boot-starter</artifactId>
    <version>3.6.0</version>
</dependency>
<dependency>
    <groupId>org.xerial</groupId>
    <artifactId>sqlite-jdbc</artifactId>
    <version>3.36.0.3</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.0.M5</version>
</dependency>


配置:

spring:
  datasource:
    driver-class-name: org.sqlite.JDBC
    url: jdbc:sqlite:src/main/resources/data.sqlite
  sql:
    init:
      schema-locations: classpath:db/schema-sqlite.sql
      data-locations: classpath:db/data-sqlite.sql
# Logger Config
logging:
  level:
    root: debug
bean-searcher:
  sql:
    default-mapping:
      redundant-suffixes: PO
  params:
    pagination:
      start: 1

schema-sqlite.sql

DROP TABLE IF EXISTS PERSON;
CREATE TABLE PERSON
(
    id        INTEGER PRIMARY KEY AUTOINCREMENT,
    firstname VARCHAR(30) NULL DEFAULT NULL,
    age       INT(11)     NULL DEFAULT NULL,
    lastname  VARCHAR(50) NULL DEFAULT NULL
);

data-sqlite.sql

DELETE
FROM PERSON;
INSERT INTO PERSON (id, firstname, age, lastname)
VALUES (1, 'John', 18, 'White'),
       (2, 'John', 20, 'Doe'),
       (3, 'Tom', 28, 'clancy'),
       (4, 'Sandy', 21, 'white'),
       (5, 'Billie', 24, 'Billie');

测试代码:

package com.ruben;
import java.io.BufferedInputStream;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.util.ResourceUtils;
import com.ejlchina.searcher.BeanSearcher;
import com.ejlchina.searcher.SearchResult;
import com.ejlchina.searcher.util.MapUtils;
import com.ruben.pojo.po.PersonPO;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.StrUtil;
import lombok.SneakyThrows;
@SpringBootTest
class SimpleBeanSearcherApplicationTests {
    @Resource
    private JdbcTemplate jdbcTemplate;
    @Resource
    private BeanSearcher beanSearcher;
    @Value("${spring.sql.init.schema-locations}")
    private String schemaLocations;
    @Value("${spring.sql.init.data-locations}")
    private String dataLocations;
    public static final String SQL_SPLIT = ";";
    @SneakyThrows
    @Autowired
    public void init() {
        final String schemaSql = IoUtil.readUtf8(
                (BufferedInputStream) ResourceUtils.getURL(schemaLocations).getContent());
        final String dataSql = IoUtil.readUtf8((BufferedInputStream) ResourceUtils.getURL(dataLocations).getContent());
        Arrays.stream(schemaSql.split(SQL_SPLIT)).filter(StrUtil::isNotBlank).forEach(jdbcTemplate::execute);
        Arrays.stream(dataSql.split(SQL_SPLIT)).filter(StrUtil::isNotBlank).forEach(jdbcTemplate::execute);
    }
    @Test
    void searchPage() {
        final Map<String, Object> params = MapUtils.builder().page(1, 5).build();
        final SearchResult<PersonPO> result = beanSearcher.search(PersonPO.class, params);
        Assertions.assertEquals(5, result.getTotalCount().longValue());
        final List<PersonPO> personPOList = result.getDataList();
        Assertions.assertAll(() -> personPOList.forEach(System.out::println));
    }
}
相关文章
|
7月前
|
关系型数据库 分布式数据库 数据库
一库多能:阿里云PolarDB三大引擎、四种输出形态,覆盖企业数据库全场景
PolarDB是阿里云自研的新一代云原生数据库,提供极致弹性、高性能和海量存储。它包含三个版本:PolarDB-M(兼容MySQL)、PolarDB-PG(兼容PostgreSQL及Oracle语法)和PolarDB-X(分布式数据库)。支持公有云、专有云、DBStack及轻量版等多种形态,满足不同场景需求。2021年,PolarDB-PG与PolarDB-X开源,内核与商业版一致,推动国产数据库生态发展,同时兼容主流国产操作系统与芯片,获得权威安全认证。
|
2月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
195 0
|
3月前
|
机器学习/深度学习 算法 数据库
基于GoogleNet深度学习网络和GEI步态能量提取的步态识别算法matlab仿真,数据库采用CASIA库
本项目基于GoogleNet深度学习网络与GEI步态能量图提取技术,实现高精度步态识别。采用CASI库训练模型,结合Inception模块多尺度特征提取与GEI图像能量整合,提升识别稳定性与准确率,适用于智能安防、身份验证等领域。
|
5月前
|
存储 SQL Java
数据存储使用文件还是数据库,哪个更合适?
数据库和文件系统各有优劣:数据库读写性能较低、结构 rigid,但具备计算能力和数据一致性保障;文件系统灵活易管理、读写高效,但缺乏计算能力且无法保证一致性。针对仅需高效存储与灵活管理的场景,文件系统更优,但其计算短板可通过开源工具 SPL(Structured Process Language)弥补。SPL 提供独立计算语法及高性能文件格式(如集文件、组表),支持复杂计算与多源混合查询,甚至可替代数据仓库。此外,SPL 易集成、支持热切换,大幅提升开发运维效率,是后数据库时代文件存储的理想补充方案。
|
7月前
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
368 14
|
SQL 关系型数据库 MySQL
数据库导入SQL文件:全面解析与操作指南
在数据库管理中,将SQL文件导入数据库是一个常见且重要的操作。无论是迁移数据、恢复备份,还是测试和开发环境搭建,掌握如何正确导入SQL文件都至关重要。本文将详细介绍数据库导入SQL文件的全过程,包括准备工作、操作步骤以及常见问题解决方案,旨在为数据库管理员和开发者提供全面的操作指南。一、准备工作在导
1647 0
|
9月前
|
存储 NoSQL MongoDB
数据库数据恢复—MongoDB数据库迁移过程中丢失文件的数据恢复案例
某单位一台MongoDB数据库由于业务需求进行了数据迁移,数据库迁移后提示:“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”
|
8月前
|
数据库
|
11月前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
1037 15
|
11月前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
下一篇
开通oss服务