Spring Data JPA - 如何创建查询(4)Named Query

作者简介

陈喆,现就职于中科院某研究所担任副研究员,专注于工业云平台、MES系统的设计与研发。

内容来源:https://docs.spring.io/spring-data/jpa/docs/2.0.9.RELEASE/reference/html/#jpa.query-methods.named-queries

本例使用<named-query/>元素和@NamedQuery注解,对应的查询需要使用JPA查询语言定义。也可以使用<named-native-query/>或@NamedNativeQuery。这样可以使用原生SQL,但这样会丧失数据库平台独立性。

XML定义命名查询

使用XML配置,向位于META-INF文件夹下的orm.xml配置文件添加必要的<name-query/>元素。

<named-query name="User.findByLastname">
  <query>select u from User u where u.lastname = ?1</query>
</named-query>

基于注解定义命名查询

基于注解的配置可以免于编辑额外的配置文件,降低维护成本。但需要你在每次声明新查询的时候重新编译实体类。

@Entity
@NamedQuery(name = "User.findByEmailAddress",
  query = "select u from User u where u.emailAddress = ?1")
public class User {

}

声明接口

要使用上面定义的命名查询,需要定义到UserRepository接口中:

public interface UserRepository extends JpaRepository<User, Long> {

  List<User> findByLastname(String lastname);

  User findByEmailAddress(String emailAddress);
}

Spring Data尝试处理这些方法对命名查询的调用,以实体类名称开始,后接方法名,以点作连接符。所以NameQuery定义在实体上,而不是定义在方法上。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值