`

Spring Boot 之 Spring Data JPA 二 ( Query By Example)

阅读更多

今天继续学习JPA,但是IDE工具变为了IntelliJ IDEA,其实多数我还是更喜欢Eclipse系列,但是Android Studio什么的,多Get一个技能也不是坏事。

1 新建Spring Boot工程

 
IntelliJ IDEA 新建Spring Initializr工程

Next,然后填写项目信息:

 
项目信息

看上面,我把语言改成了Kotlin,因为我最近在学习Kotlin,所以,你又get到新技能了。继续Next

 

 
项目依赖选择


依赖,我们这里选择了JPA和一种数据库驱动。Next

 

 
项目名称位置信息

项目名称和位置,这里项目创建完毕,点击Finisth等待项目初始化完毕(主要是下载模版和依赖)。

 

 
代码结构

 

除了代码由java改为kotlin,其他没有变化。

2 新建实体

我们先建一个包,名为cn.techcave.demo.jpa.domain,在此包下通过新建一个kotlin Clasee来创建名为Record的实体,具体代码如下:

package cn.techcave.demo.jpa.domain

import javax.persistence.Entity
import javax.persistence.GeneratedValue
import javax.persistence.GenerationType
import javax.persistence.Id

@Entity
data class Record(
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        var id: Long? = null,
        var name:String? = null,
        var value: Double? = null
) {
}

3 新建Repository

对于Repository,我的理解就是dao,代码说话:

package cn.techcave.demo.jpa.repository

import cn.techcave.demo.jpa.domain.Record
import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.stereotype.Repository

@Repository
interface RecordRepo :JpaRepository<Record, Long> {
}

超简单好不好,我都不想说话了。

4 新建一Service吧

好了,默默的看代码

package cn.techcave.demo.jpa.service

import cn.techcave.demo.jpa.domain.Record
import cn.techcave.demo.jpa.repository.RecordRepo
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.data.domain.Example
import org.springframework.stereotype.Service
import org.springframework.data.domain.ExampleMatcher
import org.springframework.data.domain.ExampleMatcher.GenericPropertyMatchers.startsWith


@Service
class RecordService {

    @Autowired
    lateinit var recRepo: RecordRepo
    fun qbeRecord(rec: Record): Record? {
        val matcher = ExampleMatcher.matching()
                .withIgnorePaths("value")//忽略value属性
                .withIncludeNullValues()//包含空值
                .withMatcher("name", startsWith().ignoreCase())//字段name,匹配开始,忽略大小写

        val example = Example.of(rec, matcher)
        return recRepo.findOne(example)
    }

    fun findOne(id:Long): Record? {
        return recRepo.findOne(id)
    }

    fun newRecored(rec: Record) {
        recRepo.save(rec)
    }
}

qbeRecord方法就是Query By Example 的使用例子

原文地址

0
0
分享到:
评论

相关推荐

    Spring Data JPA系列3:JPA项目中核心场景与进阶用法介绍.doc

    在Spring Boot项目中,Spring Data JPA 提供了便捷的方式来进行数据持久化操作,减少了大量重复的DAO层代码。本篇文章主要关注Spring Data JPA在项目中的核心场景与进阶用法,旨在帮助开发者更高效地利用这个框架。 ...

    Spring JPA Example

    此外,Spring JPA还支持更复杂的查询,如使用`@Query`注解编写自定义SQL或HQL,以及使用`Specification`构建动态查询。 在实际开发中,我们还可以结合Spring Boot的自动化配置、事务管理、异常处理等功能,进一步...

    Spring-Boot-with-Thymeleaf-part-3-Spring-Data-JPA:Spring Boot with Thymeleaf教程,第3部分-Spring Data JPA您可以在jvmhub.com上找到所有教程->

    此外,我们还会探讨Spring Data JPA的查询方法,如JPA的QBE(Query by Example)和自定义SQL查询。 文件"Spring-Boot-with-Thymeleaf-part-3-Spring-Data-JPA-master"很可能包含以下内容: 1. 项目的结构:src/...

    Spring集成Jpa(Hibernate实现)

    Spring集成JPA(Java Persistence API)是将Spring框架与ORM(Object-Relational Mapping)解决方案之一的Hibernate结合使用的常见实践。这个例子展示了如何在Spring应用中配置和使用JPA,以便利用Hibernate作为JPA...

    SpringDataJPADemo:JPA 框架知识案例

    Spring Data JPA 提供了丰富的查询方法,比如通过注解 `@Query` 直接编写 SQL 或 HQL,或者利用方法名映射来执行动态查询。例如: ```java public interface UserRepository extends JpaRepository, Long&gt; { List...

    Spring Boot与HikariCP:性能卓越的数据库连接池

    如果使用Spring Data JPA,可以创建一个实体类和对应的仓库接口: ```java @Entity public class ExampleEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; // 其他属性... ...

    2020最新-百战程序员-SpringData视频教程从入门到精通(高薪必备技能).txt

    1. **快速搭建CRUD应用**:利用Spring Data JPA或Spring Data MongoDB等模块可以快速实现基于数据库的增删查改功能。 2. **复杂查询需求**:通过Specifications或Query by Example可以方便地实现复杂的查询逻辑。 3....

    jpa使用说明(English)

    - **Spring Boot**:Spring Data JPA 支持通过 Spring Boot 进行依赖管理,简化了配置过程。 - **Spring Framework**:指定了所需的 Spring Framework 版本。 4. **与 Spring Data Repositories 工作**: - **...

    springBoot-数据库操作

    在Spring Boot框架中,数据库操作是一项基础且至关重要的任务,主要通过JdbcTemplate和JPA(Java Persistence API)来实现。本文将深入探讨Spring Boot如何利用这两种技术进行数据库的增删改查操作。 首先,让我们...

    9. 使用JdbcTemplate【从零开始学Spring Boot】

    在这种情况下,Spring Data JPA或MyBatis可能是更好的选择。 总结来说,本节主要介绍了如何在Spring Boot项目中使用JdbcTemplate进行数据库操作,包括设置依赖、配置数据源、注入JdbcTemplate以及执行SQL查询、更新...

    SpringBoot556滴答拍摄影项目.zip

    Spring Boot项目通常会依赖`spring-boot-starter-web`来快速搭建Web服务器,`spring-boot-starter-data-jpa`用于数据库操作,以及可能的`spring-boot-starter-security`进行用户认证和授权。 接着,`src/main/java`...

    JPA学习小例子

    首先,我们需要引入JPA的相关依赖,这通常是在Maven或Gradle的构建文件中完成的,比如在Maven的`pom.xml`中添加`spring-boot-starter-data-jpa`依赖。 ```xml &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;...

    spring-boot-api-with-graphql-example:用Spring Boot,Spring Data和GraphQl开发的Java应用程序示例

    mvn spring-boot:运行 突变 mutation newAuthor($input: String!) { newAuthor(name: $input) { id name } } mutation newPost($title: String!, $content: String!, $mmm: String!,) { newPost(title: $...

    Spring-boot-backend--EmployeeManager:Spring Boot后端员工经理

    1. Spring Data JPA:通过注解式编程简化数据库操作,如`@Entity`定义实体,`@Repository`定义仓库,`@Query`编写自定义SQL。 2. 数据库配置:在`application.properties`中配置数据库连接信息,如URL、用户名、...

    springboot整合lucence完整代码

    -- Spring Boot Starter Data JPA --&gt; &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-boot-starter-data-jpa &lt;!-- MySQL Connector --&gt; &lt;groupId&gt;mysql &lt;artifactId&gt;mysql-connector-java ...

    jpa-sample1:jpa공부#1

    3. **pom.xml**: Maven项目的配置文件,定义了项目依赖,包括Spring Boot Starter Data JPA、Spring Boot Starter Web以及数据库驱动等。 **JPA核心概念**: - **实体(Entity)**: 代表数据库表的对象,通过`@...

    coursejpa-springboot-java-14

    7. **查询方法**:讲解如何通过Repository接口定义动态查询,以及使用JPA的QBE(Query by Example)和JPQL(Java Persistence Query Language)。 8. **复杂关系映射**:如果项目中涉及关联模型,会讲解一对一、一对...

    JPA的学习笔记(java注解,事物)

    &lt;artifactId&gt;spring-boot-starter-data-jpa ``` #### 配置文件 - `persistence.xml`:这是一个XML文件,用于定义持久化单元和配置JPA的运行时环境。 - **配置示例**: ```xml xmlns:xsi=...

    在Spring JPA中汇总来自多个表的数据的正确方法

    Spring Data JPA提供了方便的分页和排序API,可以轻松集成到你的查询中。 6. **事务管理**:如果操作涉及多个表,确保事务管理设置正确,以保证数据的一致性。Spring Boot默认提供了一个基于注解的事务管理器,你...

    idea+springBoot+maven 搭建项目

    - Dependencies:根据项目需求选择必要的依赖,比如Spring Web、Spring Data JPA等。 **1.2 配置Maven** 确保项目已经正确引用了Maven作为构建工具。在IntelliJ IDEA中可以通过以下步骤进行配置: - 在新建项目...

Global site tag (gtag.js) - Google Analytics