小项目开发:踩坑(二)快速的配置和使用H2database以及集成flyway和mybatis

快速配置和使用H2 database

一个项目我做过两次相同的操作和其中出现一些很费时间的问题,记录下来,防止自己后面再做类似的问题的时候出现同样的问题,如果你也有类似的问题,可以借鉴一下,不一定是对的啊,局限于个人的见解:

官方地址

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 实战,论坛项目,里面有的,我也是通过这个来学习的,可以分享给你哦。。。拜拜

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值