• springboot嵌入式数据库derby初探


    Apache Derby 是100% Java 编写的内存数据库,属于 Apache 的一个开源项目。并且是一个容易管理的关系数据库管理系统
    Apache Derby 是一个与平台无关的数据库引擎,它以 Java 类库的形式对外提供服务。与其他难以部署的数据库不同, Derby 数据库体积小、安装非常简单

    主要特点

    1.程序小巧,基础引擎和内嵌的JDBC驱动总共大约2MB。

    2.基于Java、JDBC和SQL标准。

    3.提供内嵌的JDBC驱动,你可把Derby嵌入到基于Java的应用程序中。

    4.支持客户端/服务器模式。

    5.安装、布置和使用简单。

    Derby 数据库的两种运行模式

    1. 嵌入式模式。Derby 在应用程序的 JVM中运行。在这种模式下,只有应用程序可以访问数据库,例如另一个用户/应用程序将无法访问数据库。
    2. 服务器模式。如果 Derby 在服务器模式下运行,负责处理数据库请求的 Derby 网络服务器,可以把它当成类似mysql等的server服务器,可以供多个客户端应用程序访问

    好了,我们直接例一个嵌入式模式下的例子吧,这个单独作为sql server服务器模式的情况下不多,反正我是没看到过

     

    1. package com.zkb.conf;
    2. import io.swagger.annotations.ApiOperation;
    3. import io.swagger.models.auth.In;
    4. import org.springframework.context.annotation.Bean;
    5. import org.springframework.context.annotation.Configuration;
    6. import springfox.documentation.builders.ApiInfoBuilder;
    7. import springfox.documentation.builders.PathSelectors;
    8. import springfox.documentation.builders.RequestHandlerSelectors;
    9. import springfox.documentation.service.ApiInfo;
    10. import springfox.documentation.service.ApiKey;
    11. import springfox.documentation.service.Contact;
    12. import springfox.documentation.spi.DocumentationType;
    13. import springfox.documentation.spring.web.plugins.Docket;
    14. import springfox.documentation.swagger2.annotations.EnableSwagger2;
    15. import java.util.Arrays;
    16. import java.util.List;
    17. @Configuration
    18. @EnableSwagger2
    19. public class SwaggerConfig {
    20. @Bean
    21. public Docket createRestApi1() {
    22. return new Docket(DocumentationType.SWAGGER_2).enable(true).apiInfo(apiInfo()).select()
    23. .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
    24. .apis(RequestHandlerSelectors.basePackage("com.zkb.controller"))
    25. .paths(PathSelectors.any()).build().securitySchemes(apiKeyList()).groupName("系统接口");
    26. }
    27. private ApiInfo apiInfo() {
    28. return new ApiInfoBuilder()
    29. .title("系统接口文档")
    30. .description("这是系统接口文档说明")
    31. .contact(new Contact("h2", "", ""))
    32. .version("1.0")
    33. .build();
    34. }
    35. private List apiKeyList() {
    36. return Arrays.asList(new ApiKey("登录token", "token", In.HEADER.name()),
    37. new ApiKey("设备类型(android,ios,pc)---必填", "deviceType", In.HEADER.name()));
    38. }
    39. }
    1. package com.zkb.controller;
    2. import com.zkb.entity.Student;
    3. import com.zkb.mapper.StudentMapper;
    4. import com.zkb.service.StudentService;
    5. import io.swagger.annotations.Api;
    6. import io.swagger.annotations.ApiOperation;
    7. import org.springframework.beans.factory.annotation.Autowired;
    8. import org.springframework.web.bind.annotation.GetMapping;
    9. import org.springframework.web.bind.annotation.RequestMapping;
    10. import org.springframework.web.bind.annotation.RestController;
    11. import java.util.List;
    12. @RequestMapping("/test")
    13. @RestController
    14. @Api(value = "Student", tags = "Student")
    15. public class TestController {
    16. @Autowired
    17. StudentService studentService;
    18. @GetMapping("list")
    19. @ApiOperation(value = "获取列表")
    20. public List getList(){
    21. return studentService.list();
    22. }
    23. }
    1. package com.zkb.entity;
    2. import com.baomidou.mybatisplus.annotation.TableName;
    3. import com.baomidou.mybatisplus.extension.activerecord.Model;
    4. import lombok.Data;
    5. import lombok.EqualsAndHashCode;
    6. @Data
    7. @EqualsAndHashCode(callSuper = false)
    8. @TableName("student")
    9. public class Student extends Model {
    10. private Integer id;
    11. private String name;
    12. private Integer age;
    13. }
    1. package com.zkb.mapper;
    2. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    3. import com.zkb.entity.Student;
    4. public interface StudentMapper extends BaseMapper {
    5. void createStudentTable();
    6. }
    1. package com.zkb.service.impl;
    2. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
    3. import com.zkb.entity.Student;
    4. import com.zkb.mapper.StudentMapper;
    5. import com.zkb.service.StudentService;
    6. import org.springframework.stereotype.Service;
    7. @Service
    8. public class StudentServiceImpl extends ServiceImpl implements StudentService {
    9. @Override
    10. public void createStudentTable() {
    11. baseMapper.createStudentTable();
    12. }
    13. }
    1. package com.zkb.service;
    2. import com.baomidou.mybatisplus.extension.service.IService;
    3. import com.zkb.entity.Student;
    4. public interface StudentService extends IService {
    5. void createStudentTable();
    6. }
    1. package com.zkb;
    2. import com.zkb.entity.Student;
    3. import com.zkb.service.StudentService;
    4. import org.mybatis.spring.annotation.MapperScan;
    5. import org.springframework.beans.factory.annotation.Autowired;
    6. import org.springframework.boot.SpringApplication;
    7. import org.springframework.boot.autoconfigure.SpringBootApplication;
    8. import springfox.documentation.swagger2.annotations.EnableSwagger2;
    9. import javax.annotation.PostConstruct;
    10. import java.util.ArrayList;
    11. import java.util.List;
    12. @SpringBootApplication
    13. @MapperScan("com.zkb.mapper")
    14. @EnableSwagger2
    15. public class DerbyTestApplication {
    16. public static void main(String[] args) {
    17. SpringApplication.run(DerbyTestApplication.class, args);
    18. }
    19. @Autowired
    20. StudentService studentService;
    21. @PostConstruct
    22. public void init(){
    23. studentService.createStudentTable();
    24. List list= new ArrayList<>();
    25. Student student = new Student();
    26. student.setId(1);
    27. student.setName("张三");
    28. student.setAge(20);
    29. Student student1 = new Student();
    30. student1.setId(2);
    31. student1.setName("李四");
    32. student1.setAge(21);
    33. list.add(student);
    34. list.add(student1);
    35. studentService.saveBatch(list);
    36. }
    37. }
    1. "1.0" encoding="UTF-8"?>
    2. "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    3. "com.zkb.mapper.StudentMapper">
    4. "BaseResultMap" type="com.zkb.entity.Student">
    5. "id" property="id" />
    6. "name" property="name" />
    7. "age" property="age" />
    8. "createStudentTable">
    9. CREATE TABLE student(
    10. id int not null,
    11. name varchar(20),
    12. age int
    13. )
    1. server:
    2. port: 8888
    3. dbBaseDir: /tmp/derby
    4. spring:
    5. datasource:
    6. type: com.alibaba.druid.pool.DruidDataSource
    7. driver-class-name: org.apache.derby.jdbc.EmbeddedDriver
    8. url: jdbc:derby:${dbBaseDir}/MyDB;create=true
    9. username: root
    10. password: 123456
    11. jackson:
    12. date-format: yyyy-MM-dd HH:mm:ss
    13. time-zone: GMT+8
    14. logging:
    15. level:
    16. com:
    17. fs: debug
    18. mybatis-plus:
    19. configuration:
    20. map-underscore-to-camel-case: true
    21. auto-mapping-behavior: full
    22. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    23. mapper-locations: classpath:mapping/*.xml
    24. global-config:
    25. # 逻辑删除配置
    26. db-config:
    27. # 删除前
    28. logic-not-delete-value: 0
    29. # 删除后
    30. logic-delete-value: 1
    1. "1.0" encoding="UTF-8"?>
    2. "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. 4.0.0
    5. org.springframework.boot
    6. spring-boot-starter-parent
    7. 2.5.2
    8. com.zkb
    9. derby-test
    10. 0.0.1-SNAPSHOT
    11. derby-test
    12. derby-test
    13. 1.8
    14. 3.3.2
    15. 1.5.22
    16. 2.9.2
    17. 1.9.1
    18. 1.2.47
    19. org.springframework.boot
    20. spring-boot-starter-web
    21. org.apache.derby
    22. derby
    23. 10.13.1.1
    24. com.alibaba
    25. druid
    26. 1.0.31
    27. org.projectlombok
    28. lombok
    29. true
    30. com.baomidou
    31. mybatis-plus-boot-starter
    32. ${mybatis-plus.version}
    33. io.springfox
    34. springfox-swagger2
    35. ${springfox.version}
    36. io.swagger
    37. swagger-annotations
    38. io.swagger
    39. swagger-models
    40. io.swagger
    41. swagger-annotations
    42. ${swagger-ui.version}
    43. io.swagger
    44. swagger-models
    45. ${swagger-ui.version}
    46. io.springfox
    47. springfox-swagger-ui
    48. ${springfox.version}
    49. com.github.xiaoymin
    50. swagger-bootstrap-ui
    51. ${swagger-bootstrap-ui.version}
    52. com.alibaba
    53. fastjson
    54. ${fastjson.version}
    55. org.springframework.boot
    56. spring-boot-maven-plugin
    57. org.projectlombok
    58. lombok

    运行demo后会产生一个MyDB的文件夹  以上便是该文件夹里面的内容

     demo里面我写了一个初始化的方法,第二次运行要把对应的内容注释掉,不然会报表已存在错误

     

     可以看到,我已经查从derby数据库查出数据了,到这里demo就结束了

    demo地址:https://download.csdn.net/download/qq_14926283/86543026

  • 相关阅读:
    【Rust日报】2022-11-03 - 《连线(Wired)》杂志:接管技术的“病毒式”安全编程语言...
    心血管疾病预测--逻辑回归实现二分类
    python+playwright 学习-84 Response 接口返回对象
    容器环境JVM内存配置最佳实践
    嵌入式:驱动开发 Day4
    《算法竞赛·快冲300题》每日一题:“取石子游戏”
    JS防抖和节流在前端开发中的应用场景
    conda常用命令
    我的AIGC部署实践03
    .Net AsyncLocal介绍
  • 原文地址:https://blog.csdn.net/qq_14926283/article/details/126913585