前言 有时候,为了制作单机版应用,需要将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改动不是很大,一些细小问题需要自己测试解决。 |
|