问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何修改springboot的h2数据库默认库

发布网友 发布时间:2022-05-03 05:06

我来回答

2个回答

懂视网 时间:2022-05-03 09:27

  • 小而简,但是可以存储的数据还是很大,大概有512G左右;
  • 不用多余的安装,用来做测试和一些小工具最好不过了
  • 一些常见的关系型数据库,如mysql的大多数功能它全都支持,如事务,搭建集群等
  • 它是由Java开发的jar包,所以和其他的Jar应用一样,高可移植性
  • 缺点:

  • 由于它是内存型的,所以并不会持久化数据
  • 这的运行方式主要有两种:

    1. 和MySql很相似的服务器模式,运行起来后,可以连接多个实例,下载地址http://www.h2database.com/html/main.html
    2. 使用内嵌入到应用程序中,因为它是一个jar包,所以放应用程序中就可以了,但是它只能连接一个实例,也就是只能在当前应用程序中连接,不能在其他应用中操作(主要讲解这种模式)

      接下来我们就使用SpringJdbc连接数据库进行操作,当然其他orm框架也可以,使用SpringJdbc是为了简化代码

    运行环境:

    JDK1.8+Spring4以上
  • maven引入依赖(当然Spring相关的依赖是必须,)
  •  <dependency>
      <groupId>com.h2database</groupId>
      <artifactId>h2</artifactId>
      <version>1.3.172</version>
     </dependency>
     <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>5.1.10.RELEASE</version>
     </dependency>
     <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>5.1.10.RELEASE</version>
     </dependency>
     <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.1.10.RELEASE</version>
     </dependency>
     <!-- 2.Spring dao依赖 -->
     <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.1.10.RELEASE</version>
     </dependency>
  • 配置Spring的配置文件
  • <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd">
    
    
     <!--当然是配置datasource了-->
     <jdbc:embedded-database id="dataSource" type="H2">
     <!--一定要是先DDL,即数据库定义语言-->
     <jdbc:script location="classpath:sql/h2-schema.sql"/>
     <!--然后才是DML,数据库操作语言-->
     <jdbc:script location="classpath:sql/h2-data.sql" encoding="UTF-8"/>
     </jdbc:embedded-database>
    
     <!--定义springjdbctemplate-->
     <bean class="org.springframework.jdbc.core.JdbcTemplate" id="jdbcTemplate">
     <property name="dataSource" ref="dataSource"/>
     </bean>
    </beans>
  • 注意这里的这两个sql,一个是用来初始化数据库,另一个就是用来添加数据,一定要注意顺序,当然,写在一个sql文件中也可以
  • -- h2-schame.sql
    drop table if exists teacher ;
    
    -- 创建表
    create table teacher(
     id int primary key auto_increment,
     name varchar(20),
     age int
    );
     -- 插入表数据 h2-data.sql
    insert into teacher(name,age) values('张老师',23);
    insert into teacher(name,age) values('李老师',24);

    这里的datasource是通过jdbc命名空间定义的,因为我们选择模式是内嵌式运行。一个最简单的事情要明白,只有在这个应用运行中,才会访问到数据库,其他时间是不能使用外部工具连接的,比如idea的datasource工具

    技术图片

  • 实体类
  • public class Teacher {
     private int id;
     private String name;
     private int age;
    
    //省略set和get
    }
  • 测试代码
  • public static void main(String[] args) {
    
     ApplicationContext context = new ClassPathXmlApplicationContext("classpath:application.xml");
     JdbcTemplate jdbcTemplate = context.getBean("jdbcTemplate", JdbcTemplate.class);
    
     String selectSql = "select * from teacher";
    
     List query = jdbcTemplate.query(selectSql, new RowMapper() {
      @Nullable
      @Override
      public Object mapRow(ResultSet resultSet, int i) throws SQLException {
      Teacher teacher = new Teacher();
      teacher.setId(resultSet.getInt(1));
      teacher.setName(resultSet.getString(2));
      teacher.setAge(resultSet.getInt(3));
      return teacher;
      }
     });
    
     query.forEach(o -> System.out.println(o));
     }

    以下就是运行结果,当然你能看到一些关于这个datasource的信息
    技术图片
    我们给程序一个不退出的代码,让它一直运行(如果是一个web应用,只要启动,就会一直运行),使用idea连接一下这个数据库

    技术图片

    但是你通过这个工具是不能看见teahcer表的,同样,你通过这个工具添加的表和数据也不会使用程序取到的,因为它本身就是连接实例之间是分开的,这样做是很安全的。

    如果是使用SpringBoot的话:

    运行环境:SpirngBoot+SpringJdbc

    这里并不创建一个新的SpringBoot项目,而是使用Java注解的方式来注册bean(在SpirngBoot的环境就可以这样用)

  • 配置类
  • package cn.lyn4ever.bean;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
    import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
    
    import javax.sql.DataSource;
    
    @Configuration
    public class BeanConfig {
    
     @Bean
     public DataSource dataSource() {
     try {
      EmbeddedDatabaseBuilder dbBuilder = new EmbeddedDatabaseBuilder();
      return dbBuilder.setType(EmbeddedDatabaseType.H2)
       .addScripts("classpath:sql/h2-schema.sql", "classpath:sql/h2-data.sql")
       .build();
     } catch (Exception e) {
      System.out.println("创建数据库连接失败");
      return null;
     }
     }
    
     @Bean
     public JdbcTemplate jdbcTemplate(){
     JdbcTemplate jdbcTemplate = new JdbcTemplate();
     jdbcTemplate.setDataSource(dataSource());
     return jdbcTemplate;
     }
    }
    
  • 测试类
  •  public static void main(String[] args) {
    
     ApplicationContext context = new AnnotationConfigApplicationContext(BeanConfig.class);
    
     JdbcTemplate jdbcTemplate = context.getBean("jdbcTemplate", JdbcTemplate.class);
    
     String selectSql = "select * from teacher";
    
     List query = jdbcTemplate.query(selectSql, new RowMapper() {
      @Nullable
      @Override
      public Object mapRow(ResultSet resultSet, int i) throws SQLException {
      Teacher teacher = new Teacher();
      teacher.setId(resultSet.getInt(1));
      teacher.setName(resultSet.getString(2));
      teacher.setAge(resultSet.getInt(3));
      return teacher;
      }
     });
    
     query.forEach(o -> System.out.println(o));
     }

    技术图片

    Spring系列学习笔记

    在Spring中使用嵌入式数据库-H2

    标签:values   void   row   group   derby   static   spi   cti   image   

    热心网友 时间:2022-05-03 06:35

    在登录名里右键属性,可以看到设置默认数据库

    SpringBoot配置使用H2数据库

    配置YML文件:在Spring Boot的配置文件中,添加H2数据库的配置信息,包括数据库类型、连接地址等。编写代码:在应用逻辑中使用Spring Data JPA或MyBatis等框架,与H2数据库进行交互。准备数据:在项目的资源目录中创建一个名为schema.sql的文件,用于存放数据表结构和初始数据。编译执行:编译Spring Boot项目...

    简介:什么是H2数据库?

    1、首先我根据springboot初始化了一个简单的项目 parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version2.7.0/version relativePath/ !-- lookup parent from repository --/parent code&gt; 2、添加了H2数据库的maven坐标 !-- H2数据库配置 --d...

    [七]Java开发进阶之路:Spring Boot 集成MySQL - MyBatis Plus注解方式...

    一、MySQL环境配置为实现本地测试,我们通过Docker部署MySQL,执行相应命令进行安装、登录和数据库创建。确保数据库名为'springboot',否则将遇到SQL语法错误。二、添加依赖和配置在pom.xml文件中加入lombok和mysql的依赖,并在application.yaml中修改为MySQL连接参数,指定正确的数据库名。三、数据库表结构和...

    springboot集成普罗米修斯监控页面空白

    1、首先引入springboot集成普罗米修斯监控页面h2maven依赖。2、其次配置文件yml中加入h2数据库配置,其中schema和data为初始化表结构和数据,url该方式是本地文件的形式。3、最后页面登录访问,访问端口和项目是同一个端口。

    springboot提供了哪些startproject

    1. Spring Boot AutoConfigure:这个startproject的目标是简化Spring应用程序的配置。通常,配置Spring应用程序可能涉及到许多繁琐的步骤,但是通过使用Spring Boot AutoConfigure,开发者可以提供自动配置的功能。例如,如果你的类路径上有H2数据库,Spring Boot就会自动配置一个内存数据库连接池。2. Spring Boot ...

    springboot的特性有哪些

    自动配置:Spring Boot的一个主要特性是能够自动配置Spring应用程序。开发者无需手动配置各种设置,Spring Boot会根据项目中的类路径、属性设置等自动配置应用程序。例如,如果在类路径中存在H2数据库,Spring Boot会自动配置一个内存数据库。这种自动配置极大地减少了开发者的配置工作,同时也减少了出错的可能...

    Spring Boot 2.4.0 正式发布!全新的配置处理机制,拥抱云原生!_百度知...

    嵌入式数据库检测逻辑改进:仅在内存中视为嵌入式数据库,改变H2、HSQl和Derby文件形式持久化的行为。Logback配置属性调整:默认不包含HTTP traces中的Cookie请求头和set-Cookie响应头,需在升级Spring Boot 2.3时进行相应配置调整。Undertow保留原始请求URL:符合Servlet规范,用户可自定义行为。Elasticsearch...

    spring+boot是如何避免大量maven导入和版本冲突的?

    版本控制:Spring Boot为开发人员提供了一套约定大于配置的开发方式,这使得开发人员可以专注于业务逻辑而不是配置问题。在 Spring Boot 中,大部分的依赖库版本都是被预定义的,而且经过充分的测试和验证。这些版本的选择是基于兼容性和稳定性考虑,可以有效避免版本冲突的问题。多模块管理:在大型项目中,...

    sping boot 低层次测试(Low Level Test)

    首先,我们需要搭建一个基于Spring Boot 2.7.11版本,JDK1.8和Maven的测试框架。这个框架的核心是确保测试的独立性,能够模拟数据库、Redis、Kafka等服务。例如,通过H2内存数据库mock,我们引入相关依赖,配置application.yml,并启动服务,这样会自动建立内存数据库和初始化表结构,提供了易于访问的界面。

    基于SpringBoot的轻量、非侵入式数据库数据告警器

    需要写一个数据库数据监控的告警小工具,要求:整体来讲,逻辑很简单,没啥技术难点,属于重复造轮子,考虑到需要解析配置文件、多数据源配置,定时任务等,所以使用SpringBoot,利用其自动化配置,类型安全配置属性,集成简单的任务调度等优点,可以方便地的配置不同的数据源,同时将复杂配置文件中的数据注入...

    springboot内置数据库 springboot内嵌数据库 springboot两个数据库 springboot查询数据库 springboot多数据库配置 springboot2多数据源 springboot 多个数据源 springboot数据源 springboot h2
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    微软Win10 DirectX 12 Ultimate正式发布:如何统一AMD/NVIDIA PC显卡和X... 台湾咖啡店品牌有哪些 RedmiBook13首卖4199元,哪些配置的双十二尝鲜价分别是多少? 陂西镇自然环境 鹰凰斗破苍穹简介 骜鹰斗破苍穹简介 三原县陂西镇派出所所长电话 三原县陂西镇初级中学简介 同时用两种洗面奶好吗? 小屁孩日记:屁事多基本信息 人品不过关,谈什么都没用 格兰仕公司战略是怎样作用于其他五种基本的竞争力量的 格兰仕是要倒闭了么 vivo 手机音量最小值调小怎么调 上海的美景作文三百字 上海美景有那些 我司是软件开发公司,现在给医药公司开发app,对方要求我司开票,不知道货物名称要怎么写 上海有哪些好玩的风景 住房公积金很多年没有交,可以提取吗 出个脑筋急转弯吧,这个问题,你知道答案是什么吗 医疗软件开发现在在我国的趋势如何?北京哪家公司医疗app开发比较专业? 给你一个脑筋急转弯 住房公积金一直都没交了.里面的钱还能取出来吗 国内健康医疗类APP做的比较好的有哪些? 求一个脑筋急转弯 APP药品商城需要什么资质 做医疗行业的软件开发怎么样? 我的住房公积金没交满一年我想拿出来怎么操作 药店app开发找链环科技可以吗? 给你出一个脑筋急转弯:(看看我们的默契和缘分) ”人有德行,如水至清”这句话出自何处? 上善若水,厚德载物. 厚德载物&quot;最早出自以下哪本文献 求百家讲坛视频全集链接,最好是百度云盘或者360云盘,谢谢! 做人的八大要素 有没有很好看很好看的韩国古装剧 宫廷剧?? 极力推荐的? 感谢推荐 作为一个成功商人应该具备哪些素质 怎样运用心理暗示缓解失眠? 求好看的韩国古代宫廷剧,要有女人之间的争宠的 好人的标准 人品道德是什么意思? 梦见别人家老房子倒塌让姐姐陪 为什么每次登陆qq都要输入登陆手机验证码 京东购物该如何换货 梦见一群鬼小朋友在那玩着玩着就不见了 小米手机耗电快 待机一个小时耗电百分之十多。 摆脱失眠的有效方法,你知道哪些? 请问一下,微信京东上换货,我想换的货资料在什么地方填?在线等,急。 梦见好多小鬼和自己孩子玩,只有我能看到,很急,还没有办法,别人都看不到。 我买的漫画单行本说是“铜版纸全彩印刷”的,那什么叫“铜版纸”啊?和普通漫画纸比起来,哪个更好些?