SQLite介绍
什么是SQLite
SQLite是一款非常轻量级的关系数据库系统,支持多数SQL92标准。它不需要单独安装,类似于一个文本文件,又可以放置在项目内作为持久化数据的内嵌式数据库使用。使用SQLite一般只需要带上一个dll,就可以使用它的全部功能。
SQLite应用场景
存储手机App应用、小型的Web项目或者桌面应用的持久化数据
SQLite安装
Windows安装SQLite
1.官网下载地址: https://www.sqlite.org/download.html
2.下载如下两个压缩文件(根据系统不同下载文件略有差别)
3.创建文件夹 D:\sqlite,并在此文件夹下解压上面两个压缩文件,将得到以下文件
4.将sqlite安装地址配置为环境变量:我的电脑右击->属性->高级系统设置->高级->环境变量->Path->编辑->新建->[你的安装目录]->ok,新建完毕后任一地址执行sqlite命令可进入命令行
Linux安装SQLite
1.使用下面的命令来检查您的机器上是否已经安装了 SQLite
user@naviproc1:~$ sqlite
Command 'sqlite' not found, but can be installed with:
sudo apt install sqlite
2.如未安装则使用命令安装,安装完毕进入敲sqlite3命令进入sqlite命令行
user@naviproc1:~$ sudo apt install sqlite3
user@naviproc1:~$ sqlite3
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>
3.使用【.quit】或【.exit】命令退出sqlite3控制界面
数据库表创建测试
1.在数据库文件存放地址新建test.db(test为数据库名),例如在d:/project/db/新建test.db文件
2.打开数据库文件,打开的方式有两种:
第一种:先进入sqlite3再打开文件
sqlite> .open d:/project/db/test.db
第二种:直接打开文件
C:\Windows\system32>sqlite3 d:/project/db/test.db
3.执行建表语句,并插入部分测试数据
DROP TABLE IF EXISTS "user";
CREATE TABLE "user" (
"uid" text(36) NOT NULL,
"name" TEXT,
"sex" integer,
"email" TEXT,
PRIMARY KEY ("uid")
);
4.数据插入完毕后可执行查询语句
sqlite> select * from user;
700|jQsuV|1|
74|zgIvN|1|
648|fLhFT|1|
561|AycmK|1|
436|TnPxs|1|
5.结果显示正常则SQLite安装完成
SpringBoot 整合 Sqlite3
1.pom.xml引入所需jar包
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.8.7</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc -->
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.28.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<!--mybatis plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.2.0</version>
</dependency>
2.application.yml配置数据库连接
server:
port: 8089
spring:
datasource:
url: jdbc:p6spy:sqlite:D:\project\db\test.db
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
username:
password:
3.数据库表和实体类的对应;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName
public class User {
@TableId
private String uid;
private String name;
private Integer sex;
private String email;
/*
* 数据库不存在的字段
* */
@TableField(exist = false)
private String nickName;
}
4.mapper接口,继承BaseMapper即可
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.demo.sqlite.pojo.User;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
5.在启动类上加上扫描mapper文件夹的注解,以防找不到mapper映射
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("com.demo.sqlite.mapper")
@SpringBootApplication
public class SqliteApplication {
public static void main(String[] args) {
SpringApplication.run(SqliteApplication.class, args);
}
}
6.接口访问实现基本功能
package com.demo.sqlite.controller;
import java.util.List;
import java.util.Map;
import java.util.Random;
import com.demo.sqlite.mapper.UserMapper;
import com.demo.sqlite.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import javax.annotation.Resource;
@RequestMapping("/index")
@RestController
public class IndexController {
@Resource
private UserMapper userMapper;
/**
* 获取所有数据
* @return
*/
@GetMapping
public Object index(){
return userMapper.selectList(null);
}
/**
* 新增
* @return
*/
@GetMapping("/insert")
public Object insert(){
User user = new User();
user.setName(randomString());
Random random = new Random();
user.setUid("" + random.nextInt(1000));
user.setSex(1);
return userMapper.insert(user);
}
/**
* 获取总数
* @return
*/
@GetMapping("/count")
public Object index1(){
Integer userCount = userMapper.selectCount(null);
return userCount;
}
/**
* 获取一个list集合
* 排序 orderByAsc("order_id")
* 不为null的判断 isNotNull("stove_code")
* 分组 groupBy("product_model")
* @return
*/
@GetMapping("/male")
public Object index2(){
List<User> users = userMapper.selectList(new QueryWrapper<User>().eq("sex", 1));
return users;
}
/**
* 获取一个map集合
* @return
*/
@GetMapping("/map")
public Object index3(){
List<Map<String,Object>> users = userMapper.selectMaps(new QueryWrapper<User>()
.select("uid,name")
.eq("sex", 1));
return users;
}
/**
* 随机生成字母
* @return
*/
public String randomString(){
StringBuilder s = new StringBuilder(5);
Random random = new Random();
for( int i = 0; i < 5; i ++) {
int choice = random.nextInt(2) % 2 == 0 ? 65 : 97; // 取得大写还是小写
s.append((char)(choice + random.nextInt(26)));
}
return s.toString();
}
}
参考链接: