快速配置和使用H2 database
一个项目我做过两次相同的操作和其中出现一些很费时间的问题,记录下来,防止自己后面再做类似的问题的时候出现同样的问题,如果你也有类似的问题,可以借鉴一下,不一定是对的啊,局限于个人的见解:
官方地址
找对应的pom文件的依赖,可以通过下面的地址去查询相关的配置
Maven Repository
搜索H2,然后就有对应的依赖可以直接复制粘贴
<!-- https://mvnrepository.com/artifact/com.h2database/h2 -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
<scope>test</scope>
</dependency>
pom配置好了,先创建数据库,然后可以修改application.properties
#database
##jdbc:h2:~/travel 新建的数据库的位置
spring.datasource.url=jdbc:h2:~/travel
## 新建数据库时创建的密码,为创建密码,则这会创建密码
spring.datasource.username=root
spring.datasource.password=123
## 驱动文件
spring.datasource.driver-class-name=org.h2.Driver
然后创建表格就可以使用H2 database
集成mybatis,就可以写sql查询数据库了
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1 </version>
</dependency>
<!--mybatis connection-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
如果需要自己写sql,不用注解写@Select(“select * from user”),可以再resources下创建mapper文件,用于存储xml文件,写sql语句,这个具体怎么写自己查一下了啊!!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="co.xingguo.travelmanage.mapper.UserMapper">
<!--co.xingguo.travelmanage.mapper.UserMapper:需要对应上面创建的mapper,上面的接口可以映射到这个文件-->
<select>.......</select>
</mapper>
<!--如果没有成功,试一试可以把配置文件application.properties添加一个配置-->
##指定sql映射文件位置,mapper下的所有.xml文件都是映射文件
mybatis.mapper-locations=classpath:mapper/*.xml
##不能更改为实体类的包路径,需要的时接口的包路径
mybatis.type-aliases-package=com.haili.project.projectfirst.mapper
##mybaits无法吧带有下划线的映射到对应的名字的驼峰变量 mybatis不会自动路由
mybatis.configuration.map-underscore-to-camel-case=true
##自动运行打印mysql执行语句
spring.jpa.show-sql=true
上面的理解可以自己找一下或者试一试,犯点错就可以很好的理解了
以上就是项目可以连接数据库存储,进行数据的存储和修改
集成flyway
这个是一个什么东西呢??自己找一下,我给你官网,好好看看
flyway DB
pom文件中增加的配置,因为这个是一个插件,可以更好的管理数据库,增加配置
<build>
<plugins>
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>6.3.3</version>
<configuration>
<url>jdbc:h2:file:./target/foobar</url>
<user>sa</user>
</configuration>
<dependencies>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<!--添加这个驱动,要与上面的依赖相同,就不会产生冲突了,也可能在下一个版本,可以试一试-->
<version>1.4.200</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
再application.properties可以配置一下内容,但是感觉不是有很大的作用
#flyway
## 是否启用flyway
spring.flyway.enabled=true
## 编码格式,默认UTF-8
spring.flyway.encoding=UTF-8
## 迁移sql脚本文件存放路径,默认db/migration
spring.flyway.locations=db/migration
## 迁移sql脚本文件名称的前缀,默认V
spring.flyway.sql-migration-prefix=V
## 迁移sql脚本文件名称的分隔符,默认2个下划线__
spring.flyway.sql-migration-separator=__
## 迁移sql脚本文件名称的后缀
spring.flyway.sql-migration-suffixes=.sql
## 迁移时是否进行校验,默认true
spring.flyway.validate-on-migrate=true
## 将schema_version表从数据库删除后抛出异常
## Caused by: org.flywaydb.core.api.FlywayException:
## Found non-empty schema(s) `nmg-crm` without metadata table!
## Use baseline() or set baselineOnMigrate to true to initialize the metadata table.
## 设置为true,当迁移发现数据库非空且存在没有元数据的表时,自动执行基准迁移,新建schema_version表
spring.flyway.baseline-on-migrate=true
官网上的原话:
We create the migration directory src/main/resources/db/migration.
再resources中创建db 再创建migration,将要修改的文件可以加再这里面
Followed by a first migration called src/main/resources/db/migration/V1__Create_person_table.sql
V1__Create_person_table.sql这个文件创建的规则,需要好好注意一下
然后就是直接再terminal中打命令了:mvn flyway:migrate,再这之前你需要先把前面的数据库文件先删除,然后就会生成相应的表了,至于其他操作和命令,我涉及不是很多,都可以通过官网学习到,至于中间出现的错误,则可以直接删数据库重新生成表 -
至于单独一张表需要重新弄过,则可以通过把那个你没有创建而出现的表中的具体某条记录删除,再删除对应的表,通过上面的命令可以将你修改后的sql
执行。。
mybatis 一键生成相关的查询文件
官网在这里啊,点击一下我啊
我就简单说一下我的理解,可以非常快的生成数据库语句,基本的数据库语句一个命令就可以生成了:
执行mybatis,使用maven方式执行:overwrite覆盖
mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate
但是要在你的配置文件中先加对应的表,以及配置好运行产生的文件对应的文件夹
缺点也是有的:就是夺表联查啊,还有好多的数据库查询语句都是固定的,不是很好的完成查询,我先熟悉这个怎么实现和怎么操作,后面我会往mybatis-plus学习的。
对于多表联查sql就需要拟建拓展的mapper,将你需要的数据库文件操作语句,写再这里面。
下面的是我的相应的配置文件,如果你在做相应的操作出错了,可以对比一下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 用来加载一些driver、class和方法的时候手动执行 pom中已确定驱动:
<classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" />
-->
<!--用于指定一些链接的数据库和生成的数据库的表。。-->
<context id="DB2Tables" targetRuntime="MyBatis3">
<!--添加分页插件-->
<plugin type="org.mybatis.generator.plugins.RowBoundsPlugin"></plugin>
<!--数据库的连接-->
<jdbcConnection driverClass="org.h2.Driver"
connectionURL="jdbc:h2:~/travel"
userId="sa"
password="123">
</jdbcConnection>
<!--可以转换jdbc中的decimal和numeric(数字类型) 作为integer 如果是[Long integer short]-->
<javaTypeResolver >
<!--将decimal和numeric(数字类型)自动转换成 java.math.BigDecimal-->
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!--生成java的模型-->
<javaModelGenerator targetPackage="co.xingguo.travelmanage.model" targetProject="src/main/java">
<!--enableSubPackages为true:当没有创建路径是会默认创建上面targetProject的路径,一般是写死的-->
<property name="enableSubPackages" value="true" />
<!--对数据库进行查询的语句,前后是不是有空格,需要清除-->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!--创建对应的mapper文件-->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!--快速生成Java的interface接口 type:定义客户端的生成器 直接生成xml文件-->
<javaClientGenerator type="XMLMAPPER" targetPackage="co.xingguo.travelmanage.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!--配置对应的表 其驱动上面的实现 domainObjectName:不指定会按照命名规范生成-->
<table tableName="user" domainObjectName="User" >
<!--true:将获取表的列名生成属性名,false:直接返回column的驼峰标识-->
<!--<property name="useActualColumnNames" value="false"/>-->
<!--自动生成key从实体类文件或表,插入数据库的时候自动生成一个key 并且同步,并且根据文件返回-->
<!--<generatedKey column="ID" sqlStatement="DB2" identity="true" />-->
<!--选择固定列时会对此column重命名,重写列名-->
<!--<columnOverride column="DATE_FIELD" property="startDate" />-->
<!--<ignoreColumn column="FRED" />-->
<!--<columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />-->
</table>
<!-- 需要对应好实体类和数据库中的字段 <table tableName="tablename" domainObjectName="EntitleName" ></table>-->
</context>
</generatorConfiguration>
然后再terminal中运行下面的命令就可以将最后的表生成对应的查询语句的文件了
mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate
需要其他插件也可以添加进去,大概的操作流程就到这里完结了,会有很多的出错的地方,多改改就熟悉了,不要怕运行出错!!
自我总结的来源或者自学的来源可以搜索:B站的 spring boot 实战,论坛项目,里面有的,我也是通过这个来学习的,可以分享给你哦。。。拜拜