Springboot + Sqlite实战(离线部署成功)

最近有个需求,是手机软件离线使用,
用的springboot + mybatis-plus + mysql,无法实现,于是考虑使用内嵌式轻量级的数据库SQLlite

  1. 引入依赖
		<dependency>
            <groupId>org.xerial</groupId>
            <artifactId>sqlite-jdbc</artifactId>
            <version>3.36.0.3</version>
        </dependency>
  1. 修改配置文件
server:
  port: 9090
spring:
  datasource:
    url: jdbc:sqlite:sqlite.db
    driver-class-name: org.sqlite.JDBC
mybatis-plus:
  mapper-locations: classpath:mapper/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      id-type: auto
  type-aliases-package: com.example.sqlite.entity

此处的url折磨了一晚上,网上各种百度加resource目录下什么的,最后直接这样,启动后会在根目录下自动生成一个db文件。
在这里插入图片描述

  1. 铺底表结构及数据
    预先 生成表结构以及铺地数据,百度了很久并不能通过预先放好sql,然后启动时候动态执行生成。
    最后只能自己在本系统中手动创建好,以及执行好sql,项目打包之后该数据库及铺底数据会内嵌其中

1). 建表语句

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`
(
    `id`          INTEGER NOT NULL,
    `username`    TEXT,
    `password`    TEXT,
    PRIMARY KEY (`id`)
)

sqllite的数据类型和mysql不同,但同时也包容(不确定)
简单来说
整数用 INTEGER
字符串用 TEXT
浮点数 REAL

具体可参考该链接: SQLLite基本数据类型

2). 铺地数据

INSERT INTO `user` VALUES (1, '范大', '11111');

将这两个sql放在项目里的文件夹
在这里插入图片描述

3). 添加Sqllite
在这里插入图片描述
在这里插入图片描述
建议方框内的值直接填写生成的db名即可,同时别忘记点击一个test Connection测试一下。

在这里插入图片描述
ok,生成了db。

4). 执行sql
双击该数据库,
在这里插入图片描述
选择之前的sql执行,可以看日志
在这里插入图片描述

两个sql都run一下

在这里插入图片描述

OK, 我这边都成功了

  1. 简单写个demo
    Controller
package com.example.sqlite.controller;

import com.example.sqlite.entity.User;
import com.example.sqlite.service.UserService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/user")
@RequiredArgsConstructor
public class UserController {

    private final UserService userService;

    @GetMapping("/get/{id}")
    public User findOne(@PathVariable Integer id) {
        return userService.getById(id);
    }


    @GetMapping("/save/{id}")
    public void save(@PathVariable Integer id) {
        User user = new User();
        user.setId(id);
        user.setUsername(id+":哈哈哈哈");
        userService.save(user);
    }

}

service

package com.example.sqlite.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.sqlite.entity.User;

public interface UserService extends IService<User> {
}

serviceImpl

package com.example.sqlite.service;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.sqlite.entity.User;
import com.example.sqlite.mapper.UserMapper;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService{
}

Mapper

package com.example.sqlite.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.sqlite.entity.User;

public interface UserMapper extends BaseMapper<User> {
}

Entity

package com.example.sqlite.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@Data
@TableName("user")
public class User {

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    private String username;

    private String password;


}

UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.sqlite.mapper.UserMapper">

</mapper>

MybatisPlusConfig

package com.example.sqlite.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

//注入配置springboot
@Configuration
@MapperScan("com.example.sqlite.mapper")
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.SQLITE));
        return interceptor;
    }
}

启动后,访问成功。
在这里插入图片描述
打个包,java -jar启动
仍然访问成功。文章来源地址https://uudwc.com/A/y5A9y

原文地址:https://blog.csdn.net/ideaxx/article/details/132673425

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年09月05日 10:32
【iOS】Category、Extension和关联对象
下一篇 2023年09月05日 10:33