使用 @Query 注解实现查询

摘要:
2")ListfindByPriceRange;/***参数绑定@Param注解注入参数*/@QueryPersonreadPersonByLastNameAndEmailThroughName;//使用like@Query("selectpfromPersonpwherelastNamelike?
// ------------------------------------ 使用 @Query 注解
//没有参数的查询
@Query("select p from Person p where p.id = (select max(p2.id) fromPerson p2)")
Person getMaxIdPerson();

/**
 * 参数名称和参数顺序耦合
 * @param lastName
 * @param email
 * @return
 */
@Query("select p from Person p where lastName=?1 and email=?2")
Person readPersonByLastNameAndEmail(String lastName,String email);
@Query(value = "select name,author,price from Book b where b.price>?1 and b.price<?2") List<Book> findByPriceRange(long price1, longprice2); /** * 参数绑定 @Param注解注入参数 */ @Query("select p from Person p where email=:email and lastName=:name") Person readPersonByLastNameAndEmailThroughName(@Param("name") String lastName,@Param("email") String email);// 使用 like @Query("select p from Person p where lastName like ?1") Person readPersonByLike(String likeName); // @Query注解支持使用百分号 @Query("select p from Person p where lastName like %?1%") Person readPersonByLike2(String likeName); // @Query注解支持使用百分号 @Query("select p from Person p where lastName like %:lastName%") Person readPersonByLike3(@Param("lastName")String name); // 使用原生的 SQL 加上 nativeQuery=true @Query(value="select * from jpa_person p1 where p1.last_name like %:lastName%",nativeQuery=true) Person getPersonUsingOriginSQL(@Param("lastName")String lastName); 测试代码: // 以下测试 @Query注解 @Test publicvoid testQueryAnnotationWithoutParam(){ Person person =personRepository.getMaxIdPerson(); System.out.println(person); } @Test publicvoid testQueryAnnotationWithParam(){ Person person = personRepository.readPersonByLastNameAndEmail("liwei","liwei@sina.com"); System.out.println(person); } @Test publicvoid testQueryAnnotationWithParamThroughName(){ Person person = personRepository.readPersonByLastNameAndEmailThroughName("zhouguang","zhouguang@163.com"); System.out.println(person); } @Test publicvoid testQueryAnnotationWithParamThroughLike(){ Person person = personRepository.readPersonByLike("%zhou%"); System.out.println(person); } @Test publicvoid testQueryAnnotationWithParamThroughLike2(){ Person person =personRepository.readPersonByLike2("hu"); System.out.println(person); } @Test publicvoid testQueryAnnotationWithParamThroughLike3(){ Person person =personRepository.readPersonByLike3("wei"); System.out.println(person); } @Test publicvoid testQueryAnnotationWithParamThroughLike4(){ Person person =personRepository.getPersonUsingOriginSQL("wei"); System.out.println(person); }

免责声明:文章转载自《使用 @Query 注解实现查询》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇POI操作word和html相互转化前端传多个数组集合,后端接收并匹配下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

查询指定距离内的快递柜或者店铺

背景:我们在淘宝购物时,选择了某个地址,有时会提示可以选择放到附近的快递柜子,这种是如何实现的呢?用redis geo api可以简单的实现该功能 思路:1. 我们先将所有的快递柜子存到redis中,这些快递柜信息要包含经纬度             /** * * @param longitude 经度 * @param...

客户端(springmvc)调用netty构建的nio服务端,获得响应后返回页面(同步响应)

后面考虑通过netty做一个真正意义的简约版RPC框架,今天先尝试通过正常调用逻辑调用netty构建的nio服务端并同步获得返回信息。为后面做铺垫 服务端实现 我们先完成服务端的逻辑,逻辑很简单,把客户端请求的内容加上服务器时间戳一并返回 public void run() throws InterruptedException { Ev...

c# 扩展方法 奇思妙用 高级篇 九:OrderBy(string propertyName, bool desc)

下面是 Queryable 类 中最常用的两个排序的扩展方法: 1 2 public static IOrderedQueryable<TSource> OrderBy<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<T...

python 类型注解

函数定义的弊端 python 是动态语言,变量随时可以被赋值,且能赋值为不同类型 python 不是静态编译型语言,变量类型是在运行器决定的 动态语言很灵活,但是这种特性也是弊端 def add(x,y): return x+y print(add(4,5)) print(add('hello','world')) print(add(...

关于Java配置文件properties的学习

关于Java配置文件properties的学习摘自:https://www.cnblogs.com/Seanit/p/4555937.html 在Java早期的开发中,常用*.properties文件存储一些配置信息。其文件中的信息主要是以key=value的方式进行存储,在早期受到广泛的应用。而后随着xml使用的广泛,其位置渐渐被取代,不过,目前仍有一...

android 拍照上传照片

废话不多说,直接进入主题,想要在android中实现拍照最简单饿方法就是New 一个 Intent 设置Action为android.media.action.IMAGE_CAPTURE 然后使用startActivityForResult(intent,REQUEST_CODE)方法进入相机。当然还有很多方式可以实现,大家可以在网上查找。但是要注意的是在...