java jpa 教程 查询_【Spring Data 系列学习】Spring Data JPA @Query 注解查询

【Spring Data 系列学习】Spring Data JPA @Query 注解查询

前面的章节讲述了 Spring Data Jpa 通过声明式对数据库进行操作,上手速度快简单易操作。但同时 JPA 还提供通过注解的方式实现,通过将 @Query 注解在继承 repository 的接口类方法上 。

Query 源码讲解

public @interface Query {

/**

* 指定 JPQL 的查询语句。(nativeQuery = true)是原生的 SQL 语句.

*/

String value() default "";

/**

* 指定 count 的 JPQL 语句,如果不指定将根据 query 自动生成。

* (nativeQuery = true 的时候,是原生查询的 SQL 语句)

*/

String countQuery() default "";

/**

*根据那个字段来 count,一般默认即可。

*/

String countProjection() default "";

/**

* 默认是 false,表示 value 里面是不是原生的 SQL 语句

*/

boolean nativeQuery() default false;

/**

* 可以指定一个 query 的名字,必须是唯一的。

* 如果不指定,默认的生成规则是

* {$domainClass}.${queryMethodName}

*/

String name() default "";

/**

* 可以指定一个 count 的query 名字,必须是唯一的。

* 如果不指定,默认的生成规则是:

* {$domainClass}.${queryMethodName}.count

*/

String countName() default "";

}

快速上手

项目中的pom.xml、application.properties与 Chapter1 相同

实体类映射数据库表

user 实体类

@Entity

@Table(name = "t_user")

public class User implements Serializable {

private static final long serialVersionUID = 1L;

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private Long id;

@Column(name = "u_name")

private String name;

@Column(name ="u_age")

private Integer age;

@Column(name ="u_email")

private String email;

// 省略构造器 set/get

}

@Entity:定义对象将会成为被JPA管理的实体,将映射到指定的数据库表。

@Table :指定数据库的表名。

@Column:定义该属性对应数据库中的列名。

@Id 定义属性为数据库的主键,一个实体里面必须有一个。

@GeneratedValue(strategy = GenerationType.IDENTITY) 自增长 ID 策略

生成如下:

dd3006b217e134558767a558786e2f43.png

@Query 查询

基本使用

继承 UserQueryRepository

public interface UserQueryRepository extends JpaRepository

b739ec46bb5c46d9c0aa4ce35ba1ea56.png

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[【Spring Data 系列学习】Spring Data JPA @Query 注解查询]http://www.zyiz.net/tech/detail-118347.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值