iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >@Query注解如何使用
  • 885
分享到

@Query注解如何使用

2023-06-29 11:06:30 885人浏览 独家记忆
摘要

这篇文章主要讲解了“@Query注解如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“@Query注解如何使用”吧!@Query注解的用法1.一个使用@Query注解的简单例子@Quer

这篇文章主要讲解了“@Query注解如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“@Query注解如何使用”吧!

@Query注解的用法

1.一个使用@Query注解的简单例子

@Query(value = "select name,author,price from Book b where b.price>?1 and b.price<?2")List<Book> findByPriceRange(long price1, long price2);

2.Like表达式

@Query(value = "select name,author,price from Book b where b.name like %:name%")List<Book> findByNameMatch(@Param("name") String name);

3.使用Native sql Query

所谓本地查询,就是使用原生的sql语句(根据数据库的不同,在sql的语法或结构方面可能有所区别)进行查询数据库的操作。

@Query(value = "select * from book b where b.name=?1", nativeQuery = true)List<Book> findByName(String name);

4.使用@Param注解注入参数

@Query(value = "select name,author,price from Book b where b.name = :name AND b.author=:author AND b.price=:price")List<Book> findByNamedParam(@Param("name") String name, @Param("author") String author,        @Param("price") long price);

5.SPEL表达式(使用时请参考最后的补充说明)

'#{#entityName}'值为'Book'对象对应的数据表名称(book)。

public interface BookQueryRepositoryExample extends Repository<Book, Long>{       @Query(value = "select * from #{#entityName} b where b.name=?1", nativeQuery = true)       List<Book> findByName(String name);}

6.一个较完整的例子

public interface BookQueryRepositoryExample extends Repository<Book, Long> {    @Query(value = "select * from Book b where b.name=?1", nativeQuery = true)     List<Book> findByName(String name);// 此方法sql将会报错(java.lang.IllegalArgumentException),看出原因了吗,若没看出来,请看下一个例子    @Query(value = "select name,author,price from Book b where b.price>?1 and b.price<?2")    List<Book> findByPriceRange(long price1, long price2);    @Query(value = "select name,author,price from Book b where b.name like %:name%")    List<Book> findByNameMatch(@Param("name") String name);    @Query(value = "select name,author,price from Book b where b.name = :name AND b.author=:author AND b.price=:price")    List<Book> findByNamedParam(@Param("name") String name, @Param("author") String author,            @Param("price") long price);}

7.解释例6中错误的原因

因为指定了nativeQuery = true,即使用原生的sql语句查询。使用java对象'Book'作为表名来查自然是不对的。只需将Book替换为表名book。

@Query(value = "select * from book b where b.name=?1", nativeQuery = true)List<Book> findByName(String name);

补充说明:

有同学提出来了,例子5中用'#{#entityName}'为啥取不到值啊?

先来说一说'#{#entityName}'到底是个啥。从字面来看,'#{#entityName}'不就是实体类的名称么,对,他就是。

实体类Book,使用@Entity注解后,spring会将实体类Book纳入管理。默认'#{#entityName}'的值就是'Book'。

但是如果使用了@Entity(name = "book")来注解实体类Book,此时'#{#entityName}'的值就变成了'book'。

到此,事情就明了了,只需要在用@Entity来注解实体类时指定name为此实体类对应的表名。在原生sql语句中,就可以把'#{#entityName}'来作为数据表名使用。

@Query注解使用详情

常用属性

  • value : 取值,要么使用原生SQL,要么使用JPQL

  • nativeQuery :表示是否采用原生SQL,诸如select * from tableName

取值方式

1、使用:形参名

示例:

单个形参的情况

@Query注解如何使用

多个形参的情况:

@Query注解如何使用

2、使用?数值,数值表示形参位置,1表示第一个形参,依次内推

示例:

单个形参的情况:

@Query注解如何使用

多个形参的情况:

@Query注解如何使用

特殊情况:数值也可不写,若不写具体的数值,默认是从1开始递增,如下图示例:

@Query注解如何使用

3、使用@Param("参数名")+:参数名

通常使用@Param注解都是在多个形参的情况下使用

@Query注解如何使用

4、获取实体类名称,使用#{#entityName}

@Query注解如何使用

CRUD

使用@Query注解实现删、改、查、增的示例,如下所示:

@Modifying@Transactional@Query(value = "delete from User where id = ?1")void deleteByUserId(Integer id);

?后面的数值1,表示第一个形参的值,以此类推,如果方法有多个形参,数值也会依次递增,特殊情况,数值也可不写,若不写具体的数值,默认是从1开始递增

@Modifying@Transactional@Query("update User set email = ?1 where id = ?2")void updateUser(String email,Integer id);
@Query(value = "select * from tb_user  where  email like concat('%',?2,'%') and username like concat('%',?1,'%') ",nativeQuery = true)User findByUsernameAndEmail( String username, String email);
@Modifying@Transactional@Query(value = "insert into tb_user(email,id_card,username,wage) values (:email,:idCard,:username,:wage)",nativeQuery = true)void insertUser(String email,String idCard,String username,Double wage);

感谢各位的阅读,以上就是“@Query注解如何使用”的内容了,经过本文的学习后,相信大家对@Query注解如何使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: @Query注解如何使用

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • @Query注解如何使用
    这篇文章主要讲解了“@Query注解如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“@Query注解如何使用”吧!@Query注解的用法1.一个使用@Query注解的简单例子@Quer...
    99+
    2023-06-29
  • 详解Spring Data JPA使用@Query注解(Using @Query)
    经过几天的折腾,终于到了学习一个重量级的查询方式上,使用@Query注解,使用注解有两种方式,一种是JPQL的SQL语言方式,一种是原生SQL的语言,略有区别,后者我们更熟悉一些。话不多说,看代码。1、在CustomerRepository...
    99+
    2023-05-31
    spring data jpa
  • 在JPA的@Query注解中使用limit条件(详解)
    在@Query注解注释的JPQL语句中写limit语句是会报错的unexpected token :limit near line ....解决方法是讲@Query注解中的limit语句去掉,然后传一个Pageable pageable=n...
    99+
    2023-05-31
    query注解 limit jpa
  • 关于@Query注解的用法(SpringDataJPA)
    目录@Query注解的用法1.一个使用@Query注解的简单例子2.Like表达式3.使用Native SQL Query4.使用@Param注解注入参数5.SPEL表达式(使用时请...
    99+
    2024-04-02
  • 如何使用pt-query-digest工具
    这篇文章将为大家详细讲解有关如何使用pt-query-digest工具,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 slow log 分析...
    99+
    2024-04-02
  • JPA @Query时无法使用limit函数如何解决
    这篇文章主要介绍了JPA @Query时无法使用limit函数如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JPA @Query时无法使用limit函数如何解决文章都会有所收获,下面...
    99+
    2023-06-29
  • vue中如何使用params、query传参
    这篇文章主要介绍vue中如何使用params、query传参,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!声明式:<router-link :to="..."...
    99+
    2024-04-02
  • mysql中pt-query-digest如何安装使用
    这篇文章主要介绍mysql中pt-query-digest如何安装使用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!pt-query-digest安装使用一、简介pt-query-d...
    99+
    2024-04-02
  • @AliasFor注解如何使用
    本篇内容主要讲解“@AliasFor注解如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“@AliasFor注解如何使用”吧!一、前言@AliasFor注解基本上都是在spring源码当中出...
    99+
    2023-07-05
  • 如何使用RequiredArgsConstructor注解
    这篇文章主要讲解了“如何使用RequiredArgsConstructor注解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用RequiredArgsConstructor注解”吧!爆...
    99+
    2023-06-16
  • @Query注解的原生用法和native用法解析
    目录@Query注解的原生用法和native用法1. @Query原生用法2. @Query的native查询用法有nativeQuery = true和没有的区别有nativeQu...
    99+
    2024-04-02
  • SpringDataJpa的@Query注解报错的解决
    目录SpringDataJpa@Query注解报错SpringDataJpa@query注解使用原生代码报错SpringDataJpa @Query注解报错 public int...
    99+
    2024-04-02
  • JPA中的update如何使用@Query 实现
    今天就跟大家聊聊有关JPA中的update如何使用@Query 实现,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。使用JPA中@Query 注解实现update 操作,代码如下:@T...
    99+
    2023-05-31
    jpa @query update
  • Spring @InitBinder注解如何使用
    这篇文章主要讲解了“Spring @InitBinder注解如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring @InitBinder注解如何使用”吧!一...
    99+
    2023-07-05
  • Spring @Profile注解如何使用
    这篇文章主要介绍“Spring @Profile注解如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring @Profile注解如何使用”文章能帮助大家解决问题。使用...
    99+
    2023-07-06
  • 如何正确使用注解
    本篇内容介绍了“如何正确使用注解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!日志脱敏场景简介在日志里我们的日志一般打印的是 model 的...
    99+
    2023-06-16
  • Spring @ComponentScan注解如何使用
    今天小编给大家分享一下Spring @ComponentScan注解如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-07-05
  • Java5.0中注解如何使用
    这篇文章将为大家详细讲解有关Java5.0中注解如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。元注解Meta-annotation元注解的作用就是负责注解其他注解。Java5.0定义...
    99+
    2023-06-20
  • 如何使用注解开发spring
    本篇文章为大家展示了如何使用注解开发spring,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在Spring4之后,要使用注解开发,必须要保证aop的包导入了。使用注解需要导入context约束,增...
    99+
    2023-06-15
  • 如何简单使用mybatis注解
    目录使用注解开发使用注解完成CRUD使用注解开发 本质:反射机制实现 底层:动态代理 1、注解在接口上的实现 public interface UserMapper { ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作