有小部分大学的小部分老师多毛病,喜欢用些晦涩难搞的数据库来折腾学生,我不理解,但大受震撼。按我的理解,这种数据库看着好像本地快速测试代码很舒服,但依赖和数据库限制的很死板,对不上就是用不了,而且创建过程也麻烦,就算能借用mysql模型,也没多方便。
可以先看下面这篇了解下,再看我的避坑:
springboot+H2集成的另一个帖子。
一. 搭建数据库
1.下载H2数据库
点击下载
注意解压后进入 ./h2/bin/h2-2.2.224.jar 看到这个文件,win可以在文件浏览器的搜索框中输入cmd
用执行以下命令,mac则cd到该文件夹执行以下命令,这需要java环境的。注意这时候mac启动好了会直接跳到这个页面,win要手动打开(localhost:8082/login.jsp)
java -jar h2-2.2.224.jar
2.如何进入控制台
注意:最开始数据库没有东西,默认Generic H2 (Embedded),你在url最后写好一个你想写的数据库名后,点击链接会自动创建一个的,但用户名密码你要记住(密码不写也没事)。
3.初始化页面内容。
这里一开始没有你要的表数据,默认的两个表内容不要改,把自己的数据库sql内容放进文本框中,执行完得到 3中的内容。
3.执行数据库并新建表内容。
4.获取数据库db文件。
搞定以上那些,会生成一份数据库文本,格式为:xxx.mv.db。每次新建都会生成一份的。
win可以在数据库安装的地方找,一开始就可以设置路径。
mac到/Users/yourName/xxmall.mv.db可以找到。
---------------------------------------------------------------------------------------------------------
为什么说这么多呢,因为这份(xxmall.mv.db)文件就是用来给项目链接数据库运行的。
二.在idea运行springboot+H2项目。
以我的项目为例,idea中,找个路径放好你的db文件,比如我这样
1.配置文件。
yml还是properties(我是这个)都行配置的重点如下:
#H2 ;MODE= XX h2数据库配置
#spring.datasource.url=jdbc:h2:file:./h2db/xxmall
# url后用 jdbc:h2:mem:xxmall 这个也可以,但注意,这里是没有数据的,
# 你需要写一份insert脚本先去跑sql,这也是我把(xxmall.mv.db)拆出来的原因。
spring.datasource.url=jdbc:h2:file:./h2db/xxmall;MODE=MySQL
# mode不能漏泄,你可以根据需要写哪个数据库特性
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver
spring.h2.console.settings.web-allow-others=true
spring.h2.console.path=/h2-consolespring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html
spring.thymeleaf.cache=false##################### jpa hibernate 配置 #########################
spring.jpa.show-sql=false
spring.jpa.database=h2
spring.jpa.properties.hibernate.format_sql=false
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
2.注意点:
jdbc:h2:file:./h2db/xxmall;MODE=MySQL
/h2db/ 是本项目内的文件夹位置,xxmall是数据库名字,不要带上.mv.db,后面是特性借用mysql。
注意你用的就是H2数据库,不要怀疑,下面的账号密码写你填上去的。
2.还有实体类一定要写清楚@Column(name = "count") name=里面对应的数据库字段,H2对大小写,驼峰都敏感(我用JPA的原因吗?),必须每个都写好写对,还有,绝对不可以带反单引号 `,sql也不要。
最后就是依赖,你下载的H2是哪个版本,那么pom文件就必须用哪个版本。