当前位置 博文首页 > RtxTitanV的博客:SpringBoot2.x 集成 SpringDataJpa 基于Kotlin

    RtxTitanV的博客:SpringBoot2.x 集成 SpringDataJpa 基于Kotlin

    作者:[db:作者] 时间:2021-07-07 12:38

    SpringDataJpa简介:Spring Data JPA是Spring Data家族的一员,可以轻松实现基于JPA的存储库。该模块处理对基于JPA的数据访问层的增强支持。这使得构建使用数据访问技术的Spring应用程序变得更加容易。
    在相当长的一段时间内,实现应用程序的数据访问层一直很麻烦。必须编写太多样板代码来执行简单查询以及执行分页和审计。Spring Data JPA旨在通过减少实际需要的工作量来显著改善数据访问层的实现。作为开发人员,你编写repository接口,包括自定义查询器方法,Spring将自动提供实现。

    下面通过SpringBoot2.x集成SpringDataJpa并进行基本的使用测试,基于Kotlin语言编写,其中SpringBoot使用的2.2.2.RELEASE版本。

    一、编写pom文件

    引入相关依赖和插件,完整pom文件如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.rtxtitanv</groupId>
        <artifactId>springboot-data-jpa-kotlin</artifactId>
        <version>1.0.0</version>
        <packaging>jar</packaging>
    
        <name>springboot-data-jpa-kotlin</name>
        <description>SpringBoot2.x 集成 SpringDataJpa 基于Kotlin</description>
    
        <parent>
            <!-- SpringBoot 起步依赖 -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.2.2.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <!-- 增量编译:为了使构建更快,为Maven启用增量编译 也可以使用 -Dkotlin.compiler.incremental=true 选项运行构建 -->
            <kotlin.compiler.incremental>true</kotlin.compiler.incremental>
            <java.version>1.8</java.version>
            <kotlin.version>1.3.61</kotlin.version>
        </properties>
    
        <dependencies>
            <!-- Spring Data JPA的起步依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
            <!-- mysql数据库驱动依赖 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
            <!-- jackson kotlin 包 -->
            <dependency>
                <groupId>com.fasterxml.jackson.module</groupId>
                <artifactId>jackson-module-kotlin</artifactId>
            </dependency>
            <!-- kotlin反射包 -->
            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-reflect</artifactId>
            </dependency>
            <!-- kotlin jdk8核心库 -->
            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-stdlib-jdk8</artifactId>
            </dependency>
            <!-- 单元测试依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
            <testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
                <!-- kotlin-maven-plugin 插件 -->
                <plugin>
                    <groupId>org.jetbrains.kotlin</groupId>
                    <artifactId>kotlin-maven-plugin</artifactId>
                    <version>${kotlin.version}</version>
                    <configuration>
                        <args>
                            <!-- 负责检查对JSR-305注解的支持 -->
                            <arg>-Xjsr305=strict</arg>
                        </args>
                        <compilerPlugins>
                            <!-- spring插件 -->
                            <plugin>spring</plugin>
                            <!-- jpa插件,与kotlin-spring插件类似,kotlin-jpa是在no-arg之上的一层包装。
                            该插件自动指定了@Entity、@Embeddable与@MappedSuperclass这几个无参注解 -->
                            <plugin>jpa</plugin>
                        </compilerPlugins>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.jetbrains.kotlin</groupId>
                            <artifactId>kotlin-maven-allopen</artifactId>
                            <version>${kotlin.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.jetbrains.kotlin</groupId>
                            <artifactId>kotlin-maven-noarg</artifactId>
                            <version>${kotlin.version}</version>
                        </dependency>
                    </dependencies>
                    <executions>
                        <execution>
                            <id>compile</id>
                            <goals> <goal>compile</goal> </goals>
                        </execution>
                        <execution>
                            <id>test-compile</id>
                            <goals> <goal>test-compile</goal> </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </project>
    

    二、编写配置文件

    resources目录下新建application.yml配置文件,配置内容如下:

    spring:
      # mysql数据库连接信息
      datasource:
        # 高版本mysql驱动
        driver-class-name: com.mysql.cj.jdbc.Driver
        # 使用com.mysql.cj.jdbc.Driver驱动需要带上时区serverTimezone
        url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
        username: root
        password: root
      # jpa相关配置
      jpa:
        database: mysql
        # 控制台是否显示sql语句 true:显示 false:不显示
        show-sql: true
        # 是否根据实体类(@Entity注解的类)自动建表,true:是 false:否,默认为false
        generate-ddl: true
        hibernate: