有小部分大学的小部分老师多毛病,喜欢用些晦涩难搞的数据库来折腾学生,我不理解,但大受震撼。按我的理解,这种数据库看着好像本地快速测试代码很舒服,但依赖和数据库限制的很死板,对不上就是用不了,而且创建过程也麻烦,就算能借用mysql模型,也没多方便。
可以先看下面这篇了解下,再看我的避坑:
注意解压后进入 ./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
注意:最开始数据库没有东西,默认Generic H2 (Embedded),你在url最后写好一个你想写的数据库名后,点击链接会自动创建一个的,但用户名密码你要记住(密码不写也没事)。
这里一开始没有你要的表数据,默认的两个表内容不要改,把自己的数据库sql内容放进文本框中,执行完得到 3中的内容。
搞定以上那些,会生成一份数据库文本,格式为:xxx.mv.db。每次新建都会生成一份的。
win可以在数据库安装的地方找,一开始就可以设置路径。
mac到/Users/yourName/xxmall.mv.db可以找到。
---------------------------------------------------------------------------------------------------------
为什么说这么多呢,因为这份(xxmall.mv.db)文件就是用来给项目链接数据库运行的。
以我的项目为例,idea中,找个路径放好你的db文件,比如我这样
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-console
-
- spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
-
- spring.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
jdbc:h2:file:./h2db/xxmall;MODE=MySQL
/h2db/ 是本项目内的文件夹位置,xxmall是数据库名字,不要带上.mv.db,后面是特性借用mysql。
注意你用的就是H2数据库,不要怀疑,下面的账号密码写你填上去的。
2.还有实体类一定要写清楚@Column(name = "count") name=里面对应的数据库字段,H2对大小写,驼峰都敏感(我用JPA的原因吗?),必须每个都写好写对,还有,绝对不可以带反单引号 `,sql也不要。
最后就是依赖,你下载的H2是哪个版本,那么pom文件就必须用哪个版本。