返回顶部
首页 > 资讯 > 精选 >SpringData JPA增删改查操作方法实例分析
  • 206
分享到

SpringData JPA增删改查操作方法实例分析

2023-07-02 19:07:11 206人浏览 泡泡鱼
摘要

这篇文章主要讲解了“springData JPA增删改查操作方法实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringData JPA增删改查操作方法实例分析”吧!1、服务层调用

这篇文章主要讲解了“springData JPA增删改查操作方法实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringData JPA增删改查操作方法实例分析”吧!

1、服务层调用dao继承的接口中的方法

dao层继承的继承JpaRepository和JpaSpecificationExecutor这两个接口,JpaRepository<操作的实体类, 主键类型> 封装了基本的curd操作,JpaSpecificationExecutor<操作的实体类类型> 封装了复杂的查询(分页、排序等)。

2、使用jpql语句进行查询

可以引入jpql(JPA查询语言)语句进行查询(jpql语句类似于sql语句,只不过sql操作的是数据表和字段,jpql操作的是对象和属性,比如 from Resume where id=xxx)

详细介绍参考https://www.yiibai.com/jpa

dao层代码

public interface ResumeDao extends JpaRepository<Resume, Long>, JpaSpecificationExecutor<Resume> {    @Query("from Resume where id=?1") // 这个"1"代表的下面方法形参中引入参数的位置作为查询id    public Resume findByJpql(Long id); // 使用jpql语句根据id查询数据}

测试

   @Test    public void testJpql() {        Resume byJpql = resumeDao.findByJpql(1L);        System.out.println(byJpql);    }

3、可以引入原生的sql语句

dao层

public interface ResumeDao extends JpaRepository<Resume, Long>, JpaSpecificationExecutor<Resume> {         @Query(value = "select * from tb_resume where id=?1", nativeQuery = true)    public Resume findBySql(Long id); // 使用sql语句根据id查询数据}

测试

@Test    public void testSql() {        Resume byJpql = resumeDao.findByJpql(2L);        System.out.println(byJpql);    }

4、根据jpa规定的特殊命名方法完成查询

可以在接口中自定义方法,而且不必引入jpql或者sql语句,这种方式叫做方法命名规则,也就是说定义的接口方法名是按照一定规则形成的,那么框架就能根据我们的方法名推断出我们的意图

SpringData JPA增删改查操作方法实例分析

SpringData JPA增删改查操作方法实例分析

dao层

public interface ResumeDao extends JpaRepository<Resume, Long>, JpaSpecificationExecutor<Resume> {     public List<Resume> findByNameLike(String name);    public List<Resume> findByNameLikeAndAddress(String name, String address);}

测试

    @Test    public void testMethodName() {        List<Resume> list = resumeDao.findByNameLike("张%");        System.out.println(list);    }    @Test    public void testMethodName2() {        List<Resume> list = resumeDao.findByNameLikeAndAddress("张%", "北京");        System.out.println(list);    }

5、动态查询

service层传入Dao层的条件不确定,把service拿到的条件封装成一个对象传递给Dao层,这个对象就叫做Specification(对条件的一个封装)

Specification接口中的方法

* <p>
* Optional<T> findOne(@Nullable Specification<T> var1); // 根据条件查询单个对象
* <p>
* List<T> findAll(@Nullable Specification<T> var1); // 根据条件查询所有
* <p>
* Page<T> findAll(@Nullable Specification<T> var1, Pageable var2); // 根据条件进行查询,并且进行分页
* <p>
* List<T> findAll(@Nullable Specification<T> var1, Sort var2);  // 根据条件进行查询,并进行排序
* <p>
* long count(@Nullable Specification<T> var1);  // 根据条件统计
* <p>
* interface Specification<T>
* Predicate toPredicate(Root<T> var1, CriteriaQuery<?> var2, CriteriaBuilder var3); // 用来封装查询条件
* Root:根属性(查询所需要的任何属性都可以从根对象中获取)
* CriteriaQuery:自定义查询方式,用不上
* CriteriaBuilder:查询构造器,封装了很多的查询条件(like 和等值查询等)

动态查询单个对象

 @Test    public void testSpecification() {                Specification<Resume> specification = new Specification<Resume>() {            @Override            public Predicate toPredicate(Root<Resume> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {                // 获取到name属性                Path<Object> name = root.get("name");                // 使用CriteriaBuilder针对name属性构建条件(精准查询)                Predicate predicate = criteriaBuilder.equal(name, "张三");                return predicate;            }        };        Optional<Resume> optional = resumeDao.findOne(specification);        Resume resume = optional.get();        System.out.println(resume);    }

动态查询多个

@Test    public void testSpecificationMultiCon() {                Specification<Resume> specification = new Specification<Resume>() {            @Override            public Predicate toPredicate(Root<Resume> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {                // 获取到name属性                Path<Object> name = root.get("name");                Path<Object> address = root.get("address");                // 条件1:使用CriteriaBuilder针对name属性构建条件(精准查询)                Predicate predicate1 = criteriaBuilder.equal(name, "张三");                // 条件2:address以"北"开头(模糊匹配)                Predicate predicate2 = criteriaBuilder.like(address.as(String.class), "北%"); // as作用将其转换为Expression,并且指定参数类型                // 组合两个条件                Predicate predicate = criteriaBuilder.and(predicate1, predicate2);                return predicate;            }        };        Optional<Resume> optional = resumeDao.findOne(specification);        Resume resume = optional.get();        System.out.println(resume);    }

排序

@Test    public void testSort() {        Sort sort = new Sort(Sort.Direction.DESC, "id"); // 根据id进行倒序        List<Resume> list = resumeDao.findAll(sort);        for (int i = 0; i < list.size(); i++) {            Resume resume = list.get(i);            System.out.println(resume);        }    }

分页

@Test    public void testPage() {                Pageable pageable = PageRequest.of(0, 2);        Page<Resume> all = resumeDao.findAll(pageable);        System.out.println(all);    }

感谢各位的阅读,以上就是“SpringData JPA增删改查操作方法实例分析”的内容了,经过本文的学习后,相信大家对SpringData JPA增删改查操作方法实例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: SpringData JPA增删改查操作方法实例分析

本文链接: https://lsjlt.com/news/343735.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SpringData JPA增删改查操作方法实例分析
    这篇文章主要讲解了“SpringData JPA增删改查操作方法实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringData JPA增删改查操作方法实例分析”吧!1、服务层调用...
    99+
    2023-07-02
  • SQL增删改操作实例分析
    这篇文章主要讲解了“SQL增删改操作实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL增删改操作实例分析”吧!插入记录SQL1 插入记录(一)表e...
    99+
    2024-04-02
  • 使用jpa原生sql@Query操作增删改查
    jpa原生sql@Query操作增删改查 1、jpa 原生update的sql语句: 1.命名参数(推荐使用此方式):可以定义好参数名,赋值时使用@Param("参数 名"...
    99+
    2024-04-02
  • Android SQLite数据库增删改查操作的案例分析
    Person实体类 代码如下:package com.ljq.domain; public class Person {    private I...
    99+
    2022-06-06
    案例分析 sqlite数据库 SQLite Android
  • Golang文件操作增删改查功能的示例分析
    这篇文章主要介绍Golang文件操作增删改查功能的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!正文开始之前,讲一个非常有意思的小桥段。最开始接触 Golang 这种语言的时候,我总感觉它和 Google 单...
    99+
    2023-06-14
  • SpringDataJPA详解增删改查操作方法
    目录1、服务层调用dao继承的接口中的方法2、使用jpql语句进行查询3、可以引入原生的sql语句4、根据jpa规定的特殊命名方法完成查询5、动态查询1、服务层调用dao继承的接口中...
    99+
    2024-04-02
  • JSP增删改查实例代码分析
    这篇文章主要介绍“JSP增删改查实例代码分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JSP增删改查实例代码分析”文章能帮助大家解决问题。JSP 概述JSP,Java Server Pages,...
    99+
    2023-07-05
  • Android--SQLite(增,删,改,查)操作实例代码
    需要5个类: 1.实体类:Person.java 2.抽象类:SQLOperate.java(封装了对数据库的操作) 3.助手类:DBOpenHelper.java(继承SQL...
    99+
    2022-06-06
    SQLite Android
  • 浅析html的增删改查操作
    随着互联网的发展,HTML已成为网站开发的重要语言之一。HTML的增删改查是Web开发过程中的关键环节之一,本文将介绍HTML的增删改查操作。一、HTML的增加操作HTML的增加主要涉及三个方面:标签、属性和内容。在编辑HTML文档时,我们...
    99+
    2023-05-14
  • nodejs操作mysql实现增删改查的实例
    首先需要安装mysql模块:npm install mysql --save 然后创建user数据表: 接着使用nodejs对数据库进行增删改查: .【活动】2017 CSDN博客专栏评选 【评论...
    99+
    2022-06-04
    实例 操作 nodejs
  • C++双向链表的增删查改操作方法源码分析
    这篇“C++双向链表的增删查改操作方法源码分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++双向链表的增删查改操作方法...
    99+
    2023-07-05
  • html增删改查操作方法是什么
    本文小编为大家详细介绍“html增删改查操作方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“html增删改查操作方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、HTML中的数据结构HTML中...
    99+
    2023-07-06
  • nodejs操作mongodb的增删改查功能实例
    本文实例讲述了nodejs操作mongodb的增删改查功能。分享给大家供大家参考,具体如下: 安装相关模块 如果使用这个的话,你需要先自己安装一下他需要的模块,在根目录输入 npm install mo...
    99+
    2022-06-04
    实例 操作 功能
  • Java实现单链表增删改查的操作方法
    这篇文章主要介绍了Java实现单链表增删改查的操作方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、新建学生节点类Stu_Node节点包含:学号:int num;姓名:S...
    99+
    2023-06-14
  • MySQL中增删改查语法的示例分析
    这篇文章给大家分享的是有关MySQL中增删改查语法的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。普通的单表更新或删除sql大家肯定滚瓜烂熟,但你有用过连表更新或删除的s...
    99+
    2024-04-02
  • Python操作MongoDB增删改查代码示例
    python安装操作MongoDB的模块pymongo pip install pymongo python连接mongodb myclient=pymongo.MongoClient(host='127.0.0.1',...
    99+
    2022-12-21
    Python操作MongoDB增删改查代码 Python删除MongoDB数据 Python修改MongoDB数据 Python查询MongoDB数据 Python添加MongoDB数据
  • 基于sqlalchemy对mysql实现增删改查操作的方法
    这篇文章将为大家详细讲解有关基于sqlalchemy对mysql实现增删改查操作的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。需求场景:老大让我利用爬虫爬取的数据写...
    99+
    2024-04-02
  • JPA原生SQL实现增删改查的示例详解
    目录原生SQL查询单个查询多个分页模糊查询count更新删除指定id新增原生SQL JPA除了对JPQL提供支持外,还对原生SQL语句也提供了支持。下面小节一起来看看吧。 查询单个 ...
    99+
    2024-04-02
  • PHP数据库操作类实例之mysql_connect()函数增删改查操作
    PHP数据库操作类实例之mysql_connect()函数增删改查操作 代码介绍 这个mysql_connect() 函数内包含了“增、删、查、改、创建数据库、创建数据表”几类操作。 创建这个代码...
    99+
    2023-10-01
    数据库 mysql php
  • LinQ to SQL增删改查的示例分析
    小编给大家分享一下LinQ to SQL增删改查的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!我们来看看LinQ to SQL,就是对数据库的查询,以前叫做DLinQ。经常看到LinQ那到底是什么呢?他是Lang...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作