SpringBoot项目整合MybatisPlus并使用SQLite作为数据库

打印 上一主题 下一主题

主题 557|帖子 557|积分 1671

SQLite先容



  • SQLite 是一个进程内库,它实现了独立的、无服务器的、零配置的事件性 SQL 数据库引擎。SQLite 没有单独的服务器进程。SQLite直接读取和写入普通磁盘文件,就是一个完整的 SQL 数据库包含多个表、索引、 触发器和视图包含在单个磁盘文件中数据库文件格式是跨平台的
  • 可以自由复制数据库在 32 位和 64 位系统之间,或在 big-endian 和 little-endian 体系布局之间。这些功能使SQLite成为盛行的选择一种应用步伐文件格式。SQLite 数据库文件是美国国会图书馆保举的存储格式
  • 免费
  • 在天下上应用广泛
  • SQLite是一个紧凑的库,启用所有功能后,库大小可以小于 750KiB, 详细取决于目标平台和编译器优化设置。 内存使用量和速度之间必要权衡。 你给它内存越多,SQLite通常运行得越快。尽管云云,在低内存环境中,性能通常也相当不错。根据它的使用方式,SQLite 可能比直接文件系统 I/O 更快
搭建项目

创建项目



修改pom.xml

因为使用SpringBoot 3.2.1 出了一些问题,下面改成2.5.14
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4.     <modelVersion>4.0.0</modelVersion>
  5.     <parent>
  6.         <groupId>org.springframework.boot</groupId>
  7.         <artifactId>spring-boot-starter-parent</artifactId>
  8.         <version>2.5.14</version>
  9.         <relativePath/> <!-- lookup parent from repository -->
  10.     </parent>
  11.     <groupId>org.dam</groupId>
  12.     <artifactId>increment-backup-serve</artifactId>
  13.     <version>0.0.1-SNAPSHOT</version>
  14.     <name>increment-backup-serve</name>
  15.     <description>increment-backup-serve</description>
  16.     <properties>
  17.         <java.version>17</java.version>
  18.     </properties>
  19.     <dependencies>
  20.         <dependency>
  21.             <groupId>org.springframework.boot</groupId>
  22.             <artifactId>spring-boot-starter</artifactId>
  23.         </dependency>
  24.         <!-- web启动插件 -->
  25.         <dependency>
  26.             <groupId>org.springframework.boot</groupId>
  27.             <artifactId>spring-boot-starter-web</artifactId>
  28.         </dependency>
  29.         <!--lombok插件-->
  30.         <dependency>
  31.             <groupId>org.projectlombok</groupId>
  32.             <artifactId>lombok</artifactId>
  33.             <optional>true</optional>
  34.         </dependency>
  35.         <!-- sqlite3驱动包 -->
  36.         <dependency>
  37.             <groupId>org.xerial</groupId>
  38.             <artifactId>sqlite-jdbc</artifactId>
  39.             <version>3.21.0.1</version>
  40.         </dependency>
  41.         <!--mybatis-plus插件-->
  42.         <dependency>
  43.             <groupId>com.baomidou</groupId>
  44.             <artifactId>mybatis-plus-boot-starter</artifactId>
  45.             <version>3.4.3.1</version>
  46.         </dependency>
  47.         <dependency>
  48.             <groupId>org.springframework.boot</groupId>
  49.             <artifactId>spring-boot-starter-test</artifactId>
  50.             <scope>test</scope>
  51.         </dependency>
  52.     </dependencies>
  53.     <build>
  54.         <plugins>
  55.             <plugin>
  56.                 <groupId>org.springframework.boot</groupId>
  57.                 <artifactId>spring-boot-maven-plugin</artifactId>
  58.             </plugin>
  59.         </plugins>
  60.     </build>
  61. </project>
复制代码
使用Macbook pro运行项目,会报如下错误
  1. Caused by: java.lang.Exception: No native library is found for os.name=Mac and os.arch=aarch64. path=/org/sqlite/native/Mac/aarch64
复制代码
办理方案,修改版本
  1. <!-- sqlite3驱动包 -->
  2. <dependency>
  3.     <groupId>org.xerial</groupId>
  4.     <artifactId>sqlite-jdbc</artifactId>
  5.     <version>3.32.3.3</version>
  6. </dependency>
复制代码
SQLite

查看SQLite是否安装

我的开发机是mac系统,自动了sqlite3,如果你们没有的话,要去安装,可以参考官方文档的快速开始:https://www.sqlite.org/quickstart.html
  1. mac@MacdeMac-Pro ~ % sqlite3
  2. SQLite version 3.39.4 2022-09-07 20:51:41
  3. Enter ".help" for usage hints.
  4. Connected to a transient in-memory database.
  5. Use ".open FILENAME" to reopen on a persistent database.
复制代码
创建数据库

从一个目次进入终端,创建数据库
  1. mac@MacdeMac-Pro sql % sqlite3 increment-backup.db;
  2. SQLite version 3.39.4 2022-09-07 20:51:41
  3. Enter ".help" for usage hints.
复制代码
查看数据库是否创建成功
  1. sqlite> .databases
  2. main: /Volumes/MacSpan/Projects/increment-backup/sql/DatabaseName.db r/w
复制代码
创建成功,出现如下文件

创建数据表

创建数据表
  1. sqlite> create table user
  2.    ...> (
  3.    ...>   id   INTEGER not null primary key autoincrement,
  4.    ...>   name varchar(20)
  5.    ...> );
复制代码
查看数据表
  1. sqlite> .tables
  2. user
复制代码
IDEA连接SQLite



连接成功

navicat连接SQLite数据库



连接成功

后端增删改查接口实现

MybatisX生成代码

如果没有安装如下插件的话,先安装一下




生成成功

创建如下项目布局,并粘贴所生成的代码已往

留意,mapper.xml的实体类引用要和你项目的一致

不会生成看这个

因为只是非常简单的案例,这里先不使用service包下的代码
User

  1. package org.dam.entity;
  2. import com.baomidou.mybatisplus.annotation.IdType;
  3. import com.baomidou.mybatisplus.annotation.TableField;
  4. import com.baomidou.mybatisplus.annotation.TableId;
  5. import com.baomidou.mybatisplus.annotation.TableName;
  6. import lombok.Data;
  7. import java.io.Serializable;
  8. /**
  9. *
  10. * @TableName user
  11. */
  12. @TableName(value ="user")
  13. @Data
  14. public class User implements Serializable {
  15.     /**
  16.      *
  17.      */
  18.     @TableId(type = IdType.AUTO)
  19.     private Integer id;
  20.     /**
  21.      *
  22.      */
  23.     private String name;
  24.     @TableField(exist = false)
  25.     private static final long serialVersionUID = 1L;
  26.     @Override
  27.     public boolean equals(Object that) {
  28.         if (this == that) {
  29.             return true;
  30.         }
  31.         if (that == null) {
  32.             return false;
  33.         }
  34.         if (getClass() != that.getClass()) {
  35.             return false;
  36.         }
  37.         User other = (User) that;
  38.         return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
  39.             && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()));
  40.     }
  41.     @Override
  42.     public int hashCode() {
  43.         final int prime = 31;
  44.         int result = 1;
  45.         result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
  46.         result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
  47.         return result;
  48.     }
  49.     @Override
  50.     public String toString() {
  51.         StringBuilder sb = new StringBuilder();
  52.         sb.append(getClass().getSimpleName());
  53.         sb.append(" [");
  54.         sb.append("Hash = ").append(hashCode());
  55.         sb.append(", id=").append(id);
  56.         sb.append(", name=").append(name);
  57.         sb.append(", serialVersionUID=").append(serialVersionUID);
  58.         sb.append("]");
  59.         return sb.toString();
  60.     }
  61. }
复制代码
UserMapper

  1. package org.dam.mapper;
  2. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  3. import org.dam.entity.User;
  4. /**
  5. * @author mac
  6. * @description 针对表【user】的数据库操作Mapper
  7. * @createDate 2024-01-18 21:12:12
  8. * @Entity generator.entity.User
  9. */
  10. public interface UserMapper extends BaseMapper<User> {
  11. }
复制代码
UserMapper.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper
  3.         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4.         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="org.dam.mapper.UserMapper">
  6.     <resultMap id="BaseResultMap" type="org.dam.entity.User">
  7.             <id property="id" column="id" jdbcType="INTEGER"/>
  8.             <result property="name" column="name" jdbcType="VARCHAR"/>
  9.     </resultMap>
  10.     <sql id="Base_Column_List">
  11.         id,name
  12.     </sql>
  13. </mapper>
复制代码
controller

  1. package org.dam.controller;
  2. import org.dam.entity.User;
  3. import org.dam.mapper.UserMapper;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.*;
  6. /**
  7. * @Author dam
  8. * @create 2024/1/18 20:37
  9. */
  10. @RestController
  11. @RequestMapping("/user")
  12. public class UserController {
  13.     @Autowired
  14.     UserMapper userMapper;
  15.     /**
  16.      * 增添数据
  17.      */
  18.     @GetMapping("/insert")
  19.     public Object insert(String name) {
  20.         User user = new User();
  21.         user.setName(name);
  22.         return userMapper.insert(user);
  23.     }
  24.     /**
  25.      * 查询数据
  26.      */
  27.     @GetMapping("/show")
  28.     public Object show() {
  29.         return userMapper.selectList(null);
  30.     }
  31.     /**
  32.      * 删除数据
  33.      */
  34.     @DeleteMapping("/delete")
  35.     public Object delete(Integer id) {
  36.         return userMapper.deleteById(id);
  37.     }
  38.     /**
  39.      * 修改数据
  40.      */
  41.     @GetMapping("/update")
  42.     public Object update(Integer id, String name) {
  43.         User user = new User();
  44.         user.setId(id);
  45.         user.setName(name);
  46.         return userMapper.updateById(user);
  47.     }
  48. }
复制代码
创建配置文件application.yaml

留意url要对应sqlite数据库

  1. # Tomcat
  2. server:
  3.   port: 8899
  4. #spring
  5. spring:
  6.   datasource:
  7.     #引用项目中的数据库文件
  8.     driver-class-name: org.sqlite.JDBC
  9.     url: jdbc:sqlite::resource:static/sqlite/increment-backup.db
  10.     username:
  11.     password:
  12.   # 指定静态资源的路径
  13.   web:
  14.     resources:
  15.       static-locations: classpath:/static/
  16. #mybatis:
  17. #  mapper-locations: classpath*:mapper/**/*.xml
复制代码
启动类IncrementBackupServeApplication

  1. package org.dam;
  2. import org.mybatis.spring.annotation.MapperScan;
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. @SpringBootApplication
  6. @MapperScan("org.dam.mapper")
  7. public class IncrementBackupServeApplication {
  8.     public static void main(String[] args) {
  9.         SpringApplication.run(IncrementBackupServeApplication.class, args);
  10.     }
  11. }
复制代码
测试

我这边使用接口测试工具Apifox来进行测试,使用Postman等其他工具也是可以的,不过我猛烈保举Apifox,感觉非常好用
插入用户


查询所有用户


修改用户名称


再查一次,修改成功

删除用户


再查一遍,删除成功


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大号在练葵花宝典

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表