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服务器模式的情况下不多,反正我是没看到过

 

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

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

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

 

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

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