前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot With H2

Spring Boot With H2

作者头像
十毛
发布2021-02-04 09:48:52
4160
发布2021-02-04 09:48:52
举报

在一些快速项目项目中,会使用H2作为数据库

引入jar包

使用mybatis作为ORM

  • pom.xml
代码语言:javascript
复制
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.4</version>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.4.200</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>29.0-jre</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

示例代码

对实体类Person以及与对应的数据库表person进行增删改查

  • 实体类Person
代码语言:javascript
复制
package com.tenmao.myh2;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * @author tenmao
 * @since 2020/6/2
 */
@Data
public class Person {
    @EqualsAndHashCode.Exclude
    private Integer id;
    private String name;
    private Integer age;
}
  • 示例Application类
代码语言:javascript
复制
@SpringBootApplication
public class Myh2Application implements CommandLineRunner {
    @Resource
    private PersonMapper personMapper;
    public static void main(String[] args) {
        SpringApplication.run(Myh2Application.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        Person tenmao = new Person();
        tenmao.setName("tenmao");
        tenmao.setAge(100);
        personMapper.insertOne(tenmao);
        Person tenmaoInDb = personMapper.selectById(tenmao.getId());
        Preconditions.checkArgument(tenmaoInDb.equals(tenmao));
        System.out.println(tenmao);
    }
}
  • Mapper
代码语言:javascript
复制
@Mapper
public interface PersonMapper {
    @Options(useGeneratedKeys = true, keyProperty = "id")
    @Insert("INSERT INTO person(name, age) VALUES(#{name}, #{age})")
    int insertOne(Person person);

    @Select("SELECT * FROM person WHERE id=#{id}")
    Person selectById(int id);
}

配置文件

  • resources/application.yml H2不需要用户名和密码
代码语言:javascript
复制
spring:
  datasource:
    url: jdbc:h2:mem:testdb #配置数据库URL
    driver-class-name: org.h2.Driver #设置数据库驱动
  • 初始化建表语句:resources/schema.sql
代码语言:javascript
复制
CREATE TABLE `person`
(
    id   INT(11)     NOT NULL auto_increment primary key,
    name varchar(32) NOT NULL,
    age  INT DEFAULT NULL
);

常见问题

  • org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "([*]"; expected "(, WITH, SELECT, TABLE, VALUES"; SQL statement H2的SQL语法跟MySQL有一点出入,需要检查一下,另外就是不能漏掉建表语句后面的分号";"

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引入jar包
  • 示例代码
  • 配置文件
  • 常见问题
  • 参考
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档