SQLite是一个过程中的库,实现自足,服务器,零配置,事务性的SQL数据库引擎。它是一个数据库,它是零配置,这意味着其他数据库一样,不需要在系统中配置。
像其他数据库,SQLite引擎不是一个独立的过程,可以按应用程序要求连结静态或动态。 SQLite 直接访问其存储文件。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除嵌入式tomcat插件 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.21.0.1</version>
</dependency>
MyBatis配置
@Configuration
public class MyBatisConfig {
@Autowired
private DataSourceProperties dataSourceProperties;
@Bean(name="dataSource")
public DataSource dataSource() {
SQLiteDataSource dataSource = new SQLiteDataSource();
dataSource.setUrl(dataSourceProperties.getUrl());
return dataSource;
}
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource());
return sqlSessionFactoryBean.getObject();
}
}
@Configuration
public class MyBatisMapperScannerConfig {
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
//com.example.demo.dal.mapper 这个包名是所有的Mapper.java文件所在的路径,该包下面的子包里面的文件同样会扫描到。
//此包名与具体的应用的名称相关
mapperScannerConfigurer.setBasePackage("com.yunzin.dataview.mapper");
return mapperScannerConfigurer;
}
}
因为我创建的demo是webapp工程,整合了一个最近发现的比较好看的前端框架:Pear Admin Layui,所以是以tomcat方式启动的。
其实使用SQLite的场景还是蛮多的,比较常见的CRM等小型信息化管理系统,皆可使用SQLite来完成。
只是我们都已经习惯了MySQL,而且互联网上关于MySQL的资料也非常全,也就基本上少有人去使用。
我认为在大型系统或者是处于互联网隔绝运行的平台,需要与外部系统进行数据交换或对接的场景下,使用SQLite来搭建一个数据转发服务是理想的选择,因为不依赖安装数据库,所需对接的基础数据可以存储在SQLite中,转发时保证了数据一致性。
上述源码已上传至gitee仓库
关注公众号
回复关键字【sqlite】即可获取