分享

Springboot Mybatis项目MySql如何改为Sqlite版本教程

 笑笑兔 2024-05-11 发布于天津

前言

有时候,为了制作单机版应用,需要将Springboot项目mysql切换成sqlite版本,该如何解决呢?

一、数据库转换

mysql转sqlite还是非常方便的,直接通过Navicat工具即可。

1、打开navica,选择文件新建sqlite。如图

2、输入连接名,选择新建slqite3以及存放路径,最后点击【确定】。如图

3、通过【工具】—【数据传输】,将mysql数据导入sqlite。如图

4、选择数据源(mysql)以及目标(sqlite),点击【下一步】。如图

二、Springboot项目添加依赖包

1、pom.xml文件依赖配置

   <dependency>
            <groupId>org.xerial</groupId>
            <artifactId>sqlite-jdbc</artifactId>
            <version>3.34.0</version> <!-- Use the latest version -->
   </dependency>
    <!--项目基于mybatis开发,如果不是可以选择忽略-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.16</version>
        </dependency>
        <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3.1</version>
        </dependency>

2、application.yml配置

  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    #druid相关配置
    druid:
      url: jdbc:sqlite:D:\stu.db
      driver-class-name: org.sqlite.JDBC
      username:
      password:
      #解决Result Set报错Close问题
      pool-prepared-statements: false
      max-pool-prepared-statement-per-connection-size: -1

三、其他问题

1、sqlite不支持时间类型

项目实体类日期字段Date、LocalDateTime,需要手动改为String类型,否则报错。例如以下代码:

    @TableField(value = "created_time", fill = FieldFill.INSERT)
    @ApiModelProperty(value = "创建时间")
    private String createdTime;

2、模糊查询问题

Sqlite中不包含Concat函数帮助我们处理,就只能用最原始的字符串拼接,特别的Sqlite中使用

name  like '%'||#{param.name}||'%'

3、联合查询id排序问题

mysql多表查询,order by id默认是主表,而sqlite不指定会报错。

总结

项目mysql切换成sqlite改动不是很大,一些细小问题需要自己测试解决。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多