亲宝软件园·资讯

展开

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

山间木匠 人气:0
# 【Spring Data 系列学习】Spring Data JPA @Query 注解查询 前面的章节讲述了 Spring Data Jpa 通过声明式对数据库进行操作,上手速度快简单易操作。但同时 JPA 还提供通过注解的方式实现,通过将 `@Query` 注解在继承 repository 的接口类方法上 。 **Query 源码讲解** ```java 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 实体类** ```java @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 策略 生成如下: ![image-20200301143239501](https://img2020.cnblogs.com/other/1953867/202003/1953867-20200315202934545-943763075.png) ## @Query 查询 ### 基本使用 **继承 UserQueryRepository** ```java public interface UserQueryRepository extends JpaRepository

加载全部内容

相关教程
猜你喜欢
用户评论